From 82a222fcb2ca47c1dbbb3ef08b4e33007594dbb4 Mon Sep 17 00:00:00 2001 From: Jan Zerebecki Date: Mon, 5 Nov 2018 22:51:23 +0100 Subject: [PATCH] Test osc results and prjresults --- tests/results_fixtures/oscrc | 103 ++++++++++++++++++++++++ tests/results_fixtures/result-dirty.xml | 14 ++++ tests/results_fixtures/result.xml | 14 ++++ tests/suite.py | 2 + tests/test_results.py | 46 +++++++++++ 5 files changed, 179 insertions(+) create mode 100644 tests/results_fixtures/oscrc create mode 100644 tests/results_fixtures/result-dirty.xml create mode 100644 tests/results_fixtures/result.xml create mode 100644 tests/test_results.py diff --git a/tests/results_fixtures/oscrc b/tests/results_fixtures/oscrc new file mode 100644 index 00000000..a30e040c --- /dev/null +++ b/tests/results_fixtures/oscrc @@ -0,0 +1,103 @@ +[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 +# 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/results_fixtures/result-dirty.xml b/tests/results_fixtures/result-dirty.xml new file mode 100644 index 00000000..d6d39440 --- /dev/null +++ b/tests/results_fixtures/result-dirty.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/tests/results_fixtures/result.xml b/tests/results_fixtures/result.xml new file mode 100644 index 00000000..f50eeccd --- /dev/null +++ b/tests/results_fixtures/result.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/tests/suite.py b/tests/suite.py index 0373e24a..6d94d446 100644 --- a/tests/suite.py +++ b/tests/suite.py @@ -23,6 +23,7 @@ import test_request import test_setlinkrev import test_prdiff import test_conf +import test_results suite = unittest.TestSuite() suite.addTests(test_addfiles.suite()) @@ -40,6 +41,7 @@ suite.addTests(test_request.suite()) suite.addTests(test_setlinkrev.suite()) suite.addTests(test_prdiff.suite()) suite.addTests(test_conf.suite()) +suite.addTests(test_results.suite()) if have_xmlrunner: result = xmlrunner.XMLTestRunner(output=os.path.join(os.getcwd(), 'junit-xml-results')).run(suite) diff --git a/tests/test_results.py b/tests/test_results.py new file mode 100644 index 00000000..9e18d79a --- /dev/null +++ b/tests/test_results.py @@ -0,0 +1,46 @@ +import osc.commandline +from common import GET, OscTestCase +import os +import sys + +def suite(): + import unittest + return unittest.makeSuite(TestResults) + +class TestResults(OscTestCase): + def setUp(self): + OscTestCase.setUp(self, copytree=False) + + def _get_fixtures_name(self): + return 'results_fixtures' + + def _get_fixtures_dir(self): + return os.path.join(os.path.dirname(__file__), self._get_fixtures_name()) + + def _run_osc(self, *args): + """Runs osc, returning captured STDOUT as a string.""" + cli = osc.commandline.Osc() + argv = ['osc', '--no-keyring', '--no-gnome-keyring'] + argv.extend(args) + cli.main(argv=argv) + return sys.stdout.getvalue() + + def _get_fixture(self, filename): + return open(os.path.join(self._get_fixtures_dir(), filename), 'r').read() + + @GET('http://localhost/build/testproject/_result', file='result.xml') + def testPrjresults(self): + out = self._run_osc('prjresults', '--xml', 'testproject') + self.assertEqualMultiline(out, self._get_fixture('result.xml')+'\n') + + @GET('http://localhost/build/testproject/_result?package=python-MarkupSafe&multibuild=1&locallink=1', file='result.xml') + def testResults(self): + out = self._run_osc('results', '--xml', 'testproject', 'python-MarkupSafe') + self.assertEqualMultiline(out, self._get_fixture('result.xml')) + + @GET('http://localhost/build/testproject/_result?package=python-MarkupSafe&multibuild=1&locallink=1', file='result-dirty.xml') + @GET('http://localhost/build/testproject/_result?package=python-MarkupSafe&oldstate=c57e2ee592dbbf26ebf19cc4f1bc1e83&multibuild=1&locallink=1', file='result.xml') + def testResultsWatch(self): + out = self._run_osc('results', '--watch', '--xml', 'testproject', 'python-MarkupSafe') + self.assertEqualMultiline(out, self._get_fixture('result-dirty.xml')+self._get_fixture('result.xml')) +