import mock import zaza.charm_lifecycle.func_test_runner as lc_func_test_runner import unit_tests.utils as ut_utils class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase): def test_generate_model_name(self): mname = lc_func_test_runner.generate_model_name('mycharm', 'bundle') self.assertTrue(mname.startswith('zaza-mycharmbundle')) def test_parser(self): # Test defaults args = lc_func_test_runner.parse_args([]) self.assertFalse(args.keep_model) self.assertFalse(args.smoke) # Test flags args = lc_func_test_runner.parse_args(['--keep-model']) self.assertTrue(args.keep_model) args = lc_func_test_runner.parse_args(['--smoke']) self.assertTrue(args.smoke) def test_func_test_runner(self): self.patch_object(lc_func_test_runner.utils, 'get_charm_config') self.patch_object(lc_func_test_runner, 'generate_model_name') self.patch_object(lc_func_test_runner.prepare, 'prepare') self.patch_object(lc_func_test_runner.deploy, 'deploy') self.patch_object(lc_func_test_runner.configure, 'configure') self.patch_object(lc_func_test_runner.test, 'test') self.patch_object(lc_func_test_runner.destroy, 'destroy') self.generate_model_name.return_value = 'newmodel' self.get_charm_config.return_value = { 'charm_name': 'mycharm', 'gate_bundles': ['bundle1', 'bundle2'], 'configure': [ 'zaza.charm_tests.mycharm.setup.basic_setup' 'zaza.charm_tests.othercharm.setup.setup'], 'tests': [ 'zaza.charm_tests.mycharm.tests.SmokeTest', 'zaza.charm_tests.mycharm.tests.ComplexTest']} lc_func_test_runner.func_test_runner() prepare_calls = [ mock.call('newmodel'), mock.call('newmodel')] deploy_calls = [ mock.call('./tests/bundles/bundle1.yaml', 'newmodel'), mock.call('./tests/bundles/bundle2.yaml', 'newmodel')] configure_calls = [ mock.call('newmodel', [ 'zaza.charm_tests.mycharm.setup.basic_setup' 'zaza.charm_tests.othercharm.setup.setup']), mock.call('newmodel', [ 'zaza.charm_tests.mycharm.setup.basic_setup' 'zaza.charm_tests.othercharm.setup.setup'])] test_calls = [ mock.call('newmodel', [ 'zaza.charm_tests.mycharm.tests.SmokeTest', 'zaza.charm_tests.mycharm.tests.ComplexTest']), mock.call('newmodel', [ 'zaza.charm_tests.mycharm.tests.SmokeTest', 'zaza.charm_tests.mycharm.tests.ComplexTest'])] destroy_calls = [ mock.call('newmodel'), mock.call('newmodel')] self.prepare.assert_has_calls(prepare_calls) self.deploy.assert_has_calls(deploy_calls) self.configure.assert_has_calls(configure_calls) self.test.assert_has_calls(test_calls) self.destroy.assert_has_calls(destroy_calls) def test_func_test_runner_smoke(self): self.patch_object(lc_func_test_runner.utils, 'get_charm_config') self.patch_object(lc_func_test_runner, 'generate_model_name') self.patch_object(lc_func_test_runner.prepare, 'prepare') self.patch_object(lc_func_test_runner.deploy, 'deploy') self.patch_object(lc_func_test_runner.configure, 'configure') self.patch_object(lc_func_test_runner.test, 'test') self.patch_object(lc_func_test_runner.destroy, 'destroy') self.generate_model_name.return_value = 'newmodel' self.get_charm_config.return_value = { 'charm_name': 'mycharm', 'gate_bundles': ['bundle1', 'bundle2'], 'smoke_bundles': ['bundle2'], 'configure': [ 'zaza.charm_tests.mycharm.setup.basic_setup' 'zaza.charm_tests.othercharm.setup.setup'], 'tests': [ 'zaza.charm_tests.mycharm.tests.SmokeTest', 'zaza.charm_tests.mycharm.tests.ComplexTest']} lc_func_test_runner.func_test_runner(smoke=True) deploy_calls = [ mock.call('./tests/bundles/bundle2.yaml', 'newmodel')] self.deploy.assert_has_calls(deploy_calls)