From cda7ffc0407d62a85171e38ed242f8c3b7172b6e Mon Sep 17 00:00:00 2001 From: Marcus Huewe Date: Sat, 9 Oct 2010 16:25:44 +0200 Subject: [PATCH] - testcases for "init_project" --- tests/init_project_fixtures/oscrc | 104 ++++++++++++++++++++++++++++++ tests/suite.py | 2 + tests/test_init_project.py | 62 ++++++++++++++++++ 3 files changed, 168 insertions(+) create mode 100644 tests/init_project_fixtures/oscrc create mode 100644 tests/test_init_project.py diff --git a/tests/init_project_fixtures/oscrc b/tests/init_project_fixtures/oscrc new file mode 100644 index 00000000..04b2b0ab --- /dev/null +++ b/tests/init_project_fixtures/oscrc @@ -0,0 +1,104 @@ +[general] +# URL to access API server, e.g. https://api.opensuse.org +# you also need a section [https://api.opensuse.org] with the credentials +apiurl = http://localhost +# Downloaded packages are cached here. Must be writable by you. +#packagecachedir = /var/tmp/osbuild-packagecache +# Wrapper to call build as root (sudo, su -, ...) +#su-wrapper = su -c +# rootdir to setup the chroot environment +# can contain %(repo)s, %(arch)s, %(project)s and %(package)s for replacement, e.g. +# /srv/oscbuild/%(repo)s-%(arch)s or +# /srv/oscbuild/%(repo)s-%(arch)s-%(project)s-%(package)s +#build-root = /var/tmp/build-root +# compile with N jobs (default: "getconf _NPROCESSORS_ONLN") +#build-jobs = N +# build-type to use - values can be (depending on the capabilities of the 'build' script) +# empty - chroot build +# kvm - kvm VM build (needs build-device, build-swap, build-memory) +# xen - xen VM build (needs build-device, build-swap, build-memory) +# experimental: +# qemu - qemu VM build +# lxc - lxc build +#build-type = +# build-device is the disk-image file to use as root for VM builds +# e.g. /var/tmp/FILE.root +#build-device = /var/tmp/FILE.root +# build-swap is the disk-image to use as swap for VM builds +# e.g. /var/tmp/FILE.swap +#build-swap = /var/tmp/FILE.swap +# build-memory is the amount of memory used in the VM +# value in MB - e.g. 512 +#build-memory = 512 +# build-vmdisk-rootsize is the size of the disk-image used as root in a VM build +# values in MB - e.g. 4096 +#build-vmdisk-rootsize = 4096 +# build-vmdisk-swapsize is the size of the disk-image used as swap in a VM build +# values in MB - e.g. 1024 +#build-vmdisk-swapsize = 1024 +# Numeric uid:gid to assign to the "abuild" user in the build-root +# or "caller" to use the current users uid:gid +# This is convenient when sharing the buildroot with ordinary userids +# on the host. +# This should not be 0 +# build-uid = +# extra packages to install when building packages locally (osc build) +# this corresponds to osc build's -x option and can be overridden with that +# -x '' can also be given on the command line to override this setting, or +# you can have an empty setting here. +#extra-pkgs = vim gdb strace +# build platform is used if the platform argument is omitted to osc build +#build_repository = openSUSE_Factory +# default project for getpac or bco +#getpac_default_project = openSUSE:Factory +# alternate filesystem layout: have multiple subdirs, where colons were. +#checkout_no_colon = 0 +# local files to ignore with status, addremove, .... +#exclude_glob = .osc CVS .svn .* _linkerror *~ #*# *.orig *.bak *.changes.* +# keep passwords in plaintext. If you see this comment, your osc +# already uses the encrypted password, and only keeps them in plain text +# for backwards compatibility. Default will change to 0 in future releases. +# You can remove the plaintext password without harm, if you do not need +# backwards compatibility. +#plaintext_passwd = 1 +# limit the age of requests shown with 'osc req list'. +# this is a default only, can be overridden by 'osc req list -D NNN' +# Use 0 for unlimted. +#request_list_days = 0 +# show info useful for debugging +#debug = 1 +# show HTTP traffic useful for debugging +#http_debug = 1 +# Skip signature verification of packages used for build. +#no_verify = 1 +# jump into the debugger in case of errors +#post_mortem = 1 +# print call traces in case of errors +#traceback = 1 +# use KDE/Gnome/MacOS/Windows keyring for credentials if available +#use_keyring = 1 +# check for unversioned/removed files before commit +#check_filelist = 1 +# check for pending requests after executing an action (e.g. checkout, update, commit) +#check_for_request_on_action = 0 +# what to do with the source package if the submitrequest has been accepted. If +# nothing is specified the API default is used +#submitrequest_on_accept_action = cleanup|update|noupdate +#review requests interactively (default: off) +#request_show_review = 1 +# Directory with executables to validate sources, esp before committing +#source_validator_directory = /usr/lib/osc/source_validators + +[http://localhost] +user = Admin +pass = opensuse +passx = QlpoOTFBWSZTWeTSblkAAAGBgAIBygAgADDACGNEHxaYXckU4UJDk0m5ZA== +# set aliases for this apiurl +# aliases = foo, bar +# email used in .changes, unless the one from osc meta prj will be used +# email = +# additional headers to pass to a request, e.g. for special authentication +#http_headers = Host: foofoobar, +# User: mumblegack +# Force using of keyring for this API +#keyring = 1 diff --git a/tests/suite.py b/tests/suite.py index 53b5cd80..30492225 100644 --- a/tests/suite.py +++ b/tests/suite.py @@ -6,6 +6,7 @@ import test_deletefiles import test_revertfiles import test_difffiles import test_init_package +import test_init_project import test_commit import test_repairwc @@ -16,6 +17,7 @@ suite.addTests(test_revertfiles.suite()) suite.addTests(test_update.suite()) suite.addTests(test_difffiles.suite()) suite.addTests(test_init_package.suite()) +suite.addTests(test_init_project.suite()) suite.addTests(test_commit.suite()) suite.addTests(test_repairwc.suite()) result = unittest.TextTestRunner(verbosity=1).run(suite) diff --git a/tests/test_init_project.py b/tests/test_init_project.py new file mode 100644 index 00000000..6e26390b --- /dev/null +++ b/tests/test_init_project.py @@ -0,0 +1,62 @@ +import osc.core +import osc.oscerr +import os +import sys +from common import GET, OscTestCase +FIXTURES_DIR = os.path.join(os.getcwd(), 'init_project_fixtures') + +def suite(): + import unittest + return unittest.makeSuite(TestInitProject) + +class TestInitProject(OscTestCase): + def _get_fixtures_dir(self): + # workaround for git because it doesn't allow empty dirs + if not os.path.exists(os.path.join(FIXTURES_DIR, 'osctest')): + os.mkdir(os.path.join(FIXTURES_DIR, 'osctest')) + return FIXTURES_DIR + + def tearDown(self): + if os.path.exists(os.path.join(FIXTURES_DIR, 'osctest')): + os.rmdir(os.path.join(FIXTURES_DIR, 'osctest')) + OscTestCase.tearDown(self) + + def test_simple(self): + """initialize a project dir""" + prj_dir = os.path.join(self.tmpdir, 'testprj') + osc.core.Project.init_project('http://localhost', prj_dir, 'testprj') + storedir = os.path.join(prj_dir, osc.core.store) + self._check_list(os.path.join(storedir, '_project'), 'testprj\n') + self._check_list(os.path.join(storedir, '_apiurl'), 'http://localhost\n') + self._check_list(os.path.join(storedir, '_packages'), '') + + def test_dirExists(self): + """initialize a project dir but the dir already exists""" + prj_dir = os.path.join(self.tmpdir, 'testprj') + os.mkdir(prj_dir) + osc.core.Project.init_project('http://localhost', prj_dir, 'testprj') + storedir = os.path.join(prj_dir, osc.core.store) + self._check_list(os.path.join(storedir, '_project'), 'testprj\n') + self._check_list(os.path.join(storedir, '_apiurl'), 'http://localhost\n') + self._check_list(os.path.join(storedir, '_packages'), '') + + def test_storedirExists(self): + """initialize a project dir but the storedir already exists""" + prj_dir = os.path.join(self.tmpdir, 'testprj') + os.mkdir(prj_dir) + os.mkdir(os.path.join(prj_dir, osc.core.store)) + self.assertRaises(osc.oscerr.OscIOError, osc.core.Project.init_project, 'http://localhost', prj_dir, 'testprj') + + def test_no_package_tracking(self): + """initialize a project dir but disable package tracking""" + prj_dir = os.path.join(self.tmpdir, 'testprj') + os.mkdir(prj_dir) + osc.core.Project.init_project('http://localhost', prj_dir, 'testprj', False) + storedir = os.path.join(prj_dir, osc.core.store) + self._check_list(os.path.join(storedir, '_project'), 'testprj\n') + self._check_list(os.path.join(storedir, '_apiurl'), 'http://localhost\n') + self.assertFalse(os.path.exists(os.path.join(storedir, '_packages'))) + +if __name__ == '__main__': + import unittest + unittest.main()