Adding missing test cases in "test_run.py"
There is lack of unit tests for CLI of tempest run.
This patch will add the missing unit tests.
It will cover both positive and negative cases.
Change-Id: If8565f3452193031cf72ee16c7e60c2fa202367f
Partially-Implements: blueprint tempest-cli-unit-test-coverage
diff --git a/tempest/tests/cmd/test_run.py b/tempest/tests/cmd/test_run.py
index 9a6be4e..e159cdc 100644
--- a/tempest/tests/cmd/test_run.py
+++ b/tempest/tests/cmd/test_run.py
@@ -24,7 +24,9 @@
import six
from tempest.cmd import run
+from tempest.cmd import workspace
from tempest import config
+from tempest.lib.common.utils import data_utils
from tempest.tests import base
DEVNULL = open(os.devnull, 'wb')
@@ -58,6 +60,12 @@
self.assertEqual(['i_am_a_fun_little_regex'],
self.run_cmd._build_regex(args))
+ def test__build_regex_smoke_regex(self):
+ args = mock.Mock(spec=argparse.Namespace)
+ setattr(args, "smoke", True)
+ setattr(args, 'regex', 'i_am_a_fun_little_regex')
+ self.assertEqual(['smoke'], self.run_cmd._build_regex(args))
+
class TestRunReturnCode(base.TestCase):
def setUp(self):
@@ -173,6 +181,27 @@
class TestTakeAction(base.TestCase):
+ def setUp(self):
+ super(TestTakeAction, self).setUp()
+ self.name = data_utils.rand_name('workspace')
+ self.path = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, self.path, ignore_errors=True)
+ store_dir = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, store_dir, ignore_errors=True)
+ self.store_file = os.path.join(store_dir, 'workspace.yaml')
+ self.workspace_manager = workspace.WorkspaceManager(
+ path=self.store_file)
+ self.workspace_manager.register_new_workspace(self.name, self.path)
+
+ def _setup_test_dirs(self):
+ self.directory = tempfile.mkdtemp(prefix='tempest-unit')
+ self.addCleanup(shutil.rmtree, self.directory, ignore_errors=True)
+ self.test_dir = os.path.join(self.directory, 'tests')
+ os.mkdir(self.test_dir)
+ # Change directory, run wrapper and check result
+ self.addCleanup(os.chdir, os.path.abspath(os.curdir))
+ os.chdir(self.directory)
+
def test_workspace_not_registered(self):
class Exception_(Exception):
pass
@@ -201,15 +230,7 @@
self.assertIn(workspace, exit_msg)
def test_config_file_specified(self):
- # Setup test dirs
- self.directory = tempfile.mkdtemp(prefix='tempest-unit')
- self.addCleanup(shutil.rmtree, self.directory)
- self.test_dir = os.path.join(self.directory, 'tests')
- os.mkdir(self.test_dir)
- # Change directory, run wrapper and check result
- self.addCleanup(os.chdir, os.path.abspath(os.curdir))
- os.chdir(self.directory)
-
+ self._setup_test_dirs()
tempest_run = run.TempestRun(app=mock.Mock(), app_args=mock.Mock())
parsed_args = mock.Mock()
@@ -222,3 +243,97 @@
m.return_value = 0
self.assertEqual(0, tempest_run.take_action(parsed_args))
m.assert_called()
+
+ def test_no_config_file_no_workspace_no_state(self):
+ self._setup_test_dirs()
+ tempest_run = run.TempestRun(app=mock.Mock(), app_args=mock.Mock())
+ parsed_args = mock.Mock()
+
+ parsed_args.workspace = None
+ parsed_args.state = None
+ parsed_args.list_tests = False
+ parsed_args.config_file = ''
+
+ with mock.patch('stestr.commands.run_command'):
+ self.assertRaises(SystemExit, tempest_run.take_action, parsed_args)
+
+ def test_config_file_workspace_registered(self):
+ self._setup_test_dirs()
+ tempest_run = run.TempestRun(app=mock.Mock(), app_args=mock.Mock())
+ parsed_args = mock.Mock()
+ parsed_args.workspace = self.name
+ parsed_args.workspace_path = self.store_file
+ parsed_args.state = None
+ parsed_args.list_tests = False
+ parsed_args.config_file = '.stestr.conf'
+
+ with mock.patch('stestr.commands.run_command') as m:
+ m.return_value = 0
+ self.assertEqual(0, tempest_run.take_action(parsed_args))
+ m.assert_called()
+
+ @mock.patch('tempest.cmd.run.TempestRun._init_state')
+ def test_workspace_registered_no_config_no_state(self, mock_init_state):
+ self._setup_test_dirs()
+ tempest_run = run.TempestRun(app=mock.Mock(), app_args=mock.Mock())
+ parsed_args = mock.Mock()
+ parsed_args.workspace = self.name
+ parsed_args.workspace_path = self.store_file
+ parsed_args.state = None
+ parsed_args.list_tests = False
+ parsed_args.config_file = ''
+
+ with mock.patch('stestr.commands.run_command') as m:
+ m.return_value = 0
+ self.assertEqual(0, tempest_run.take_action(parsed_args))
+ m.assert_called()
+ mock_init_state.assert_not_called()
+
+ @mock.patch('tempest.cmd.run.TempestRun._init_state')
+ def test_no_config_file_no_workspace_state_true(self, mock_init_state):
+ self._setup_test_dirs()
+ tempest_run = run.TempestRun(app=mock.Mock(), app_args=mock.Mock())
+ parsed_args = mock.Mock()
+
+ parsed_args.workspace = None
+ parsed_args.state = True
+ parsed_args.list_tests = False
+ parsed_args.config_file = ''
+
+ with mock.patch('stestr.commands.run_command'):
+ self.assertRaises(SystemExit, tempest_run.take_action, parsed_args)
+ mock_init_state.assert_not_called()
+
+ @mock.patch('tempest.cmd.run.TempestRun._init_state')
+ def test_workspace_registered_no_config_state_true(self, mock_init_state):
+ self._setup_test_dirs()
+ tempest_run = run.TempestRun(app=mock.Mock(), app_args=mock.Mock())
+ parsed_args = mock.Mock()
+ parsed_args.workspace = self.name
+ parsed_args.workspace_path = self.store_file
+ parsed_args.state = True
+ parsed_args.list_tests = False
+ parsed_args.config_file = ''
+
+ with mock.patch('stestr.commands.run_command') as m:
+ m.return_value = 0
+ self.assertEqual(0, tempest_run.take_action(parsed_args))
+ m.assert_called()
+ mock_init_state.assert_called()
+
+ @mock.patch('tempest.cmd.run.TempestRun._init_state')
+ def test_no_workspace_config_file_state_true(self, mock_init_state):
+ self._setup_test_dirs()
+ tempest_run = run.TempestRun(app=mock.Mock(), app_args=mock.Mock())
+ parsed_args = mock.Mock()
+ parsed_args.workspace = None
+ parsed_args.workspace_path = self.store_file
+ parsed_args.state = True
+ parsed_args.list_tests = False
+ parsed_args.config_file = '.stestr.conf'
+
+ with mock.patch('stestr.commands.run_command') as m:
+ m.return_value = 0
+ self.assertEqual(0, tempest_run.take_action(parsed_args))
+ m.assert_called()
+ mock_init_state.assert_called()