Implement "setup" and "cleanup" fixture sub-commands.
Change-Id: I87eb6fd16310b596f87d89a4fd89ae03ef02d77c
This commit is contained in:
parent
33c4d4e3aa
commit
be5135cd66
|
@ -31,7 +31,4 @@ setup_shared_fixture = fixture.setup_shared_fixture
|
|||
cleanup_fixture = fixture.cleanup_fixture
|
||||
cleanup_shared_fixture = fixture.cleanup_shared_fixture
|
||||
list_required_fixtures = fixture.list_required_fixtures
|
||||
iter_required_fixtures = fixture.iter_required_fixtures
|
||||
setup_required_fixtures = fixture.setup_required_fixtures
|
||||
cleanup_required_fixtures = fixture.cleanup_required_fixtures
|
||||
SharedFixture = fixture.SharedFixture
|
||||
|
|
|
@ -139,17 +139,25 @@ class FixtureUtil(base.TobikoCMD):
|
|||
output = output.decode()
|
||||
stream.write(output)
|
||||
|
||||
def setup_fixtures(self):
|
||||
def setup_fixtures(self, stream=None):
|
||||
stream = stream or sys.stdout
|
||||
test_cases = self.discover_testcases()
|
||||
for fixture in tobiko.setup_required_fixtures(test_cases):
|
||||
fixture_name = tobiko.get_fixture_name(fixture)
|
||||
LOG.debug("Fixture setUp called, %s", fixture_name)
|
||||
for fixture_name in tobiko.list_required_fixtures(test_cases):
|
||||
output = fixture_name + '\n'
|
||||
if six.PY2:
|
||||
output = output.decode()
|
||||
stream.write(output)
|
||||
tobiko.setup_fixture(fixture_name)
|
||||
|
||||
def cleanup_fixtures(self):
|
||||
def cleanup_fixtures(self, stream=None):
|
||||
stream = stream or sys.stdout
|
||||
test_cases = self.discover_testcases()
|
||||
for fixture in tobiko.cleanup_required_fixtures(test_cases):
|
||||
fixture_name = tobiko.get_fixture_name(fixture)
|
||||
LOG.debug("Fixture cleanUp called, %s", fixture_name)
|
||||
for fixture_name in tobiko.list_required_fixtures(test_cases):
|
||||
output = fixture_name + '\n'
|
||||
if six.PY2:
|
||||
output = output.decode()
|
||||
stream.write(output)
|
||||
tobiko.cleanup_fixture(fixture_name)
|
||||
|
||||
|
||||
def main():
|
||||
|
|
|
@ -100,17 +100,6 @@ def list_required_fixtures(objects):
|
|||
return sorted(set(iter_required_fixtures(objects)))
|
||||
|
||||
|
||||
def setup_required_fixtures(objects, manager=None):
|
||||
for name in list_required_fixtures(objects=objects):
|
||||
yield setup_fixture(name, manager=manager)
|
||||
|
||||
|
||||
def cleanup_required_fixtures(objects, manager=None):
|
||||
manager = manager or FIXTURES
|
||||
for name in list_required_fixtures(objects=objects):
|
||||
yield cleanup_fixture(name, manager=manager)
|
||||
|
||||
|
||||
def init_fixture(obj, name):
|
||||
if isinstance(obj, six.string_types):
|
||||
obj = tobiko.load_object(name)
|
||||
|
|
|
@ -189,8 +189,7 @@ class FixtureUtilTest(unit.TobikoUnitTest):
|
|||
def test_main(self, subcommand=None, config_file=None, repo_type=None,
|
||||
repo_url=None, test_path=None, top_dir=None,
|
||||
group_regex=None, blacklist_file=None, whitelist_file=None,
|
||||
black_regex=None, filters=None, fixture1=MyFixture1,
|
||||
fixture2=MyFixture2):
|
||||
black_regex=None, filters=None):
|
||||
test_path = test_path or self.test_path
|
||||
top_dir = top_dir or self.top_dir
|
||||
self.setup_file_repo(top_dir=top_dir)
|
||||
|
@ -202,12 +201,43 @@ class FixtureUtilTest(unit.TobikoUnitTest):
|
|||
whitelist_file=whitelist_file,
|
||||
black_regex=black_regex, filters=filters)
|
||||
stdout = self.patch('sys.stdout', io.StringIO())
|
||||
|
||||
fixture.main()
|
||||
self.mock_error.assert_not_called()
|
||||
return stdout
|
||||
|
||||
def test_list(self, fixture1=MyFixture1, fixture2=MyFixture2):
|
||||
stdout = self.test_main(subcommand='list')
|
||||
written_lines = stdout.getvalue().splitlines()
|
||||
self.assertIn(tobiko.get_fixture_name(fixture1), written_lines)
|
||||
self.assertIn(tobiko.get_fixture_name(fixture2), written_lines)
|
||||
|
||||
def test_setup(self, fixture1=MyFixture1, fixture2=MyFixture2):
|
||||
setup1 = self.patch(tobiko.get_fixture_name(fixture1) + '.setUp')
|
||||
setup2 = self.patch(tobiko.get_fixture_name(fixture2) + '.setUp')
|
||||
setup1.assert_not_called()
|
||||
setup2.assert_not_called()
|
||||
|
||||
stdout = self.test_main(subcommand='setup')
|
||||
written_lines = stdout.getvalue().splitlines()
|
||||
|
||||
self.assertIn(tobiko.get_fixture_name(fixture1), written_lines)
|
||||
self.assertIn(tobiko.get_fixture_name(fixture2), written_lines)
|
||||
setup1.assert_called_with()
|
||||
setup2.assert_called_with()
|
||||
|
||||
def test_cleanup(self, fixture1=MyFixture1, fixture2=MyFixture2):
|
||||
cleanup1 = self.patch(tobiko.get_fixture_name(fixture1) + '.cleanUp')
|
||||
cleanup2 = self.patch(tobiko.get_fixture_name(fixture2) + '.cleanUp')
|
||||
cleanup1.assert_not_called()
|
||||
cleanup2.assert_not_called()
|
||||
|
||||
stdout = self.test_main(subcommand='cleanup')
|
||||
|
||||
written_lines = stdout.getvalue().splitlines()
|
||||
self.assertIn(tobiko.get_fixture_name(fixture1), written_lines)
|
||||
self.assertIn(tobiko.get_fixture_name(fixture2), written_lines)
|
||||
cleanup1.assert_called_with()
|
||||
cleanup2.assert_called_with()
|
||||
|
||||
def setup_file_repo(self, top_dir):
|
||||
if not os.path.isdir(os.path.join(top_dir, '.stestr')):
|
||||
|
|
|
@ -121,24 +121,6 @@ class FixtureManagerTest(unit.TobikoUnitTest):
|
|||
result = tobiko.list_required_fixtures([fixture])
|
||||
self.assertEqual([MY_FIXTURE_NAME], result)
|
||||
|
||||
def test_setup_required_fixtures(self, fixture_type=MyFixture):
|
||||
setup = self.patch('fixtures.Fixture.setUp')
|
||||
|
||||
result = list(tobiko.setup_required_fixtures([self.id()]))
|
||||
|
||||
setup.assert_called_once_with()
|
||||
self.assertEqual([tobiko.get_fixture(fixture_type)], result)
|
||||
|
||||
def test_cleanup_required_fixtures(self, fixture_type=MyFixture):
|
||||
cleanup = mock.MagicMock()
|
||||
fixture = tobiko.setup_fixture(fixture_type)
|
||||
fixture.addCleanup(cleanup)
|
||||
|
||||
result = list(tobiko.cleanup_required_fixtures([self.id()]))
|
||||
|
||||
cleanup.assert_called_once_with()
|
||||
self.assertEqual([tobiko.get_fixture(fixture_type)], result)
|
||||
|
||||
|
||||
class MySharedFixture(tobiko.SharedFixture):
|
||||
pass
|
||||
|
|
Loading…
Reference in New Issue