tests/OBSLocal: provide based class for testing against local OBS.
This commit is contained in:
parent
a2e4d58e49
commit
35bbaf3a66
78
tests/OBSLocal.py
Normal file
78
tests/OBSLocal.py
Normal file
@ -0,0 +1,78 @@
|
||||
import os
|
||||
from osc import conf
|
||||
from osc.core import get_request
|
||||
import subprocess
|
||||
import unittest
|
||||
|
||||
OSCRC = os.path.expanduser('~/.oscrc')
|
||||
APIURL = 'local-test'
|
||||
|
||||
class OBSLocalTestCase(unittest.TestCase):
|
||||
script = None
|
||||
script_apiurl = True
|
||||
script_debug = True
|
||||
script_debug_osc = True
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
if os.path.exists(OSCRC):
|
||||
os.rename(OSCRC, OSCRC + '.orig')
|
||||
cls.oscrc('Admin')
|
||||
|
||||
def setUp(self):
|
||||
conf.get_config(override_apiurl=APIURL)
|
||||
self.apiurl = apiurl = conf.config['apiurl']
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
if os.path.exists(OSCRC + '.orig'):
|
||||
os.rename(OSCRC + '.orig', OSCRC)
|
||||
|
||||
@staticmethod
|
||||
def oscrc(userid):
|
||||
with open(OSCRC, 'w+') as f:
|
||||
f.write('\n'.join([
|
||||
'[general]',
|
||||
'apiurl = http://0.0.0.0:3000',
|
||||
'[http://0.0.0.0:3000]',
|
||||
'user={}'.format(userid),
|
||||
'pass=opensuse',
|
||||
'aliases={}'.format(APIURL),
|
||||
'',
|
||||
]))
|
||||
|
||||
def osc_user(self, userid):
|
||||
conf.config['api_host_options'][self.apiurl]['user'] = userid
|
||||
self.oscrc(userid)
|
||||
|
||||
def execute(self, args):
|
||||
if self.script:
|
||||
args.insert(0, self.script)
|
||||
if self.script_debug:
|
||||
args.insert(1, '--debug')
|
||||
if self.script_debug_osc:
|
||||
args.insert(1, '--osc-debug')
|
||||
if self.script_apiurl:
|
||||
args.insert(1, '-A')
|
||||
args.insert(2, APIURL)
|
||||
|
||||
print('$ ' + ' '.join(args)) # Print command for debugging.
|
||||
try:
|
||||
self.output = subprocess.check_output(args, stderr=subprocess.STDOUT)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(e.output)
|
||||
raise e
|
||||
print(self.output) # For debugging assertion failures.
|
||||
|
||||
def assertOutput(self, string):
|
||||
self.assertTrue(string in self.output, '[MISSING] ' + string)
|
||||
|
||||
def assertReview(self, rid, **kwargs):
|
||||
request = get_request(self.apiurl, rid)
|
||||
for review in request.reviews:
|
||||
for key, value in kwargs.items():
|
||||
if hasattr(review, key) and getattr(review, key) == value[0]:
|
||||
self.assertEqual(review.state, value[1], '{}={} not {}'.format(key, value[0], value[1]))
|
||||
return
|
||||
|
||||
self.fail('{} not found'.format(kwargs))
|
Loading…
x
Reference in New Issue
Block a user