Merge "Adding missing test cases in "test_run.py""

This commit is contained in:
Zuul 2018-10-31 07:13:34 +00:00 committed by Gerrit Code Review
commit 085a04ba67
1 changed files with 124 additions and 9 deletions

View File

@ -24,7 +24,9 @@ import mock
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 @@ class TestTempestRun(base.TestCase):
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 TestConfigPathCheck(base.TestCase):
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 @@ class TestTakeAction(base.TestCase):
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 @@ class TestTakeAction(base.TestCase):
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()