76 lines
2.4 KiB
Python
Raw Normal View History

import os
from osc import conf
from osc.core import get_request
import subprocess
import unittest
OSCRC = os.path.expanduser('~/.oscrc-test')
APIURL = 'local-test'
class OBSLocalTestCase(unittest.TestCase):
script = None
script_apiurl = True
script_debug = True
script_debug_osc = True
@classmethod
def setUpClass(cls):
# TODO #1214: Workaround for tests/obs.py's lack of cleanup.
import httpretty
httpretty.disable()
def setUp(self):
self.oscrc('Admin')
conf.get_config(override_conffile=OSCRC,
override_no_keyring=True,
override_no_gnome_keyring=True)
self.apiurl = conf.config['apiurl']
@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',
'email = {}@example.com'.format(userid),
'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')
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))