diff options
Diffstat (limited to 'xtesting')
-rw-r--r-- | xtesting/ci/run_tests.py | 2 | ||||
-rw-r--r-- | xtesting/ci/tier_builder.py | 10 | ||||
-rw-r--r-- | xtesting/core/feature.py | 29 | ||||
-rw-r--r-- | xtesting/core/unit.py | 19 | ||||
-rw-r--r-- | xtesting/tests/unit/core/test_feature.py | 24 | ||||
-rw-r--r-- | xtesting/tests/unit/core/test_unit.py | 14 |
6 files changed, 53 insertions, 45 deletions
diff --git a/xtesting/ci/run_tests.py b/xtesting/ci/run_tests.py index 4477dedd..cf7fe425 100644 --- a/xtesting/ci/run_tests.py +++ b/xtesting/ci/run_tests.py @@ -113,7 +113,7 @@ class Runner(): @staticmethod def get_dict_by_test(testname): - # pylint: disable=bad-continuation,missing-docstring + # pylint: disable=missing-docstring with open(pkg_resources.resource_filename( 'xtesting', 'ci/testcases.yaml')) as tyaml: testcases_yaml = yaml.safe_load(tyaml) diff --git a/xtesting/ci/tier_builder.py b/xtesting/ci/tier_builder.py index 2b212205..9b8ac7df 100644 --- a/xtesting/ci/tier_builder.py +++ b/xtesting/ci/tier_builder.py @@ -86,31 +86,31 @@ class TierBuilder(): return tier_names def get_tier(self, tier_name): - for i in range(0, len(self.tier_objects)): + for i, _ in enumerate(self.tier_objects): if self.tier_objects[i].get_name() == tier_name: return self.tier_objects[i] return None def get_tier_name(self, test_name): - for i in range(0, len(self.tier_objects)): + for i, _ in enumerate(self.tier_objects): if self.tier_objects[i].is_test(test_name): return self.tier_objects[i].name return None def get_test(self, test_name): - for i in range(0, len(self.tier_objects)): + for i, _ in enumerate(self.tier_objects): if self.tier_objects[i].is_test(test_name): return self.tier_objects[i].get_test(test_name) return None def get_tests(self, tier_name): - for i in range(0, len(self.tier_objects)): + for i, _ in enumerate(self.tier_objects): if self.tier_objects[i].get_name() == tier_name: return self.tier_objects[i].get_tests() return None def __str__(self): output = "" - for i in range(0, len(self.tier_objects)): + for i, _ in enumerate(self.tier_objects): output += str(self.tier_objects[i]) + "\n" return output diff --git a/xtesting/core/feature.py b/xtesting/core/feature.py index feae9885..b41519d0 100644 --- a/xtesting/core/feature.py +++ b/xtesting/core/feature.py @@ -107,20 +107,21 @@ class BashFeature(Feature): os.makedirs(self.res_dir) with open(self.result_file, 'w') as f_stdout: self.__logger.info("Calling %s", cmd) - process = subprocess.Popen( - cmd, shell=True, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - for line in iter(process.stdout.readline, b''): - if console: - sys.stdout.write(line.decode("utf-8")) - f_stdout.write(line.decode("utf-8")) - try: - process.wait(timeout=max_duration) - except subprocess.TimeoutExpired: - process.kill() - self.__logger.info( - "Killing process after %d second(s).", max_duration) - return -2 + with subprocess.Popen( + cmd, shell=True, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) as process: + for line in iter(process.stdout.readline, b''): + if console: + sys.stdout.write(line.decode("utf-8")) + f_stdout.write(line.decode("utf-8")) + try: + process.wait(timeout=max_duration) + except subprocess.TimeoutExpired: + process.kill() + self.__logger.info( + "Killing process after %d second(s).", + max_duration) + return -2 with open(self.result_file, 'r') as f_stdin: self.__logger.debug("$ %s\n%s", cmd, f_stdin.read().rstrip()) return process.returncode diff --git a/xtesting/core/unit.py b/xtesting/core/unit.py index 8bcf163a..e6c3cd87 100644 --- a/xtesting/core/unit.py +++ b/xtesting/core/unit.py @@ -43,10 +43,11 @@ class Suite(testcase.TestCase): Exception """ stream.seek(0) - stats = subprocess.Popen( - ['subunit-stats'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) - output, _ = stats.communicate(stream.read()) - cls.__logger.info("\n\n%s", output.decode("utf-8")) + with subprocess.Popen( + ['subunit-stats'], stdin=subprocess.PIPE, + stdout=subprocess.PIPE) as stats: + output, _ = stats.communicate(stream.read()) + cls.__logger.info("\n\n%s", output.decode("utf-8")) def generate_xunit(self, stream): """Generate junit report from subunit stream @@ -56,11 +57,11 @@ class Suite(testcase.TestCase): """ stream.seek(0) with open("{}/results.xml".format(self.res_dir), "w") as xml: - stats = subprocess.Popen( - ['subunit2junitxml'], stdin=subprocess.PIPE, - stdout=subprocess.PIPE) - output, _ = stats.communicate(stream.read()) - xml.write(output.decode("utf-8")) + with subprocess.Popen( + ['subunit2junitxml'], stdin=subprocess.PIPE, + stdout=subprocess.PIPE) as stats: + output, _ = stats.communicate(stream.read()) + xml.write(output.decode("utf-8")) def generate_html(self, stream): """Generate html report from subunit stream diff --git a/xtesting/tests/unit/core/test_feature.py b/xtesting/tests/unit/core/test_feature.py index 76f5d85a..9e5e109c 100644 --- a/xtesting/tests/unit/core/test_feature.py +++ b/xtesting/tests/unit/core/test_feature.py @@ -88,7 +88,6 @@ class FeatureTesting(FeatureTestingBase): project_name=self._project_name, case_name=self._case_name) def test_run_exc(self): - # pylint: disable=bad-continuation with mock.patch.object( self.feature, 'execute', side_effect=Exception) as mock_method: @@ -132,7 +131,8 @@ class BashFeatureTesting(FeatureTestingBase): stream = BytesIO() stream.write(b"foo") stream.seek(0) - attrs = {'return_value.stdout': stream, 'return_value.returncode': 1} + attrs = {'return_value.__enter__.return_value.stdout': stream, + 'return_value.__enter__.return_value.returncode': 1} args[0].configure_mock(**attrs) with mock.patch('builtins.open', mock.mock_open()) as mopen: self._test_run(testcase.TestCase.EX_RUN_ERROR) @@ -152,10 +152,10 @@ class BashFeatureTesting(FeatureTestingBase): cmd=FeatureTestingBase._cmd, timeout=FeatureTestingBase._max_duration)) kill = mock.MagicMock() - attrs = {'return_value.wait': wait, - 'return_value.kill': kill, - 'return_value.stdout': stream, - 'return_value.returncode': 0} + attrs = {'return_value.__enter__.return_value.wait': wait, + 'return_value.__enter__.return_value.kill': kill, + 'return_value.__enter__.return_value.stdout': stream, + 'return_value.__enter__.return_value.returncode': 0} args[1].configure_mock(**attrs) with mock.patch('builtins.open', mock.mock_open()) as mopen: self._test_run_max_duration(testcase.TestCase.EX_RUN_ERROR) @@ -173,7 +173,8 @@ class BashFeatureTesting(FeatureTestingBase): stream = BytesIO() stream.write(b"foo") stream.seek(0) - attrs = {'return_value.stdout': stream, 'return_value.returncode': 0} + attrs = {'return_value.__enter__.return_value.stdout': stream, + 'return_value.__enter__.return_value.returncode': 0} args[0].configure_mock(**attrs) with mock.patch('builtins.open', mock.mock_open()) as mopen: self._test_run(testcase.TestCase.EX_OK) @@ -189,7 +190,8 @@ class BashFeatureTesting(FeatureTestingBase): stream = BytesIO() stream.write(b"foo") stream.seek(0) - attrs = {'return_value.stdout': stream, 'return_value.returncode': 0} + attrs = {'return_value.__enter__.return_value.stdout': stream, + 'return_value.__enter__.return_value.returncode': 0} args[0].configure_mock(**attrs) with mock.patch('builtins.open', mock.mock_open()) as mopen: self._test_run_console(True, testcase.TestCase.EX_OK) @@ -205,7 +207,8 @@ class BashFeatureTesting(FeatureTestingBase): stream = BytesIO() stream.write(b"foo") stream.seek(0) - attrs = {'return_value.stdout': stream, 'return_value.returncode': 0} + attrs = {'return_value.__enter__.return_value.stdout': stream, + 'return_value.__enter__.return_value.returncode': 0} args[0].configure_mock(**attrs) with mock.patch('builtins.open', mock.mock_open()) as mopen: self._test_run_console(False, testcase.TestCase.EX_OK) @@ -222,7 +225,8 @@ class BashFeatureTesting(FeatureTestingBase): stream = BytesIO() stream.write(b"foo") stream.seek(0) - attrs = {'return_value.stdout': stream, 'return_value.returncode': 0} + attrs = {'return_value.__enter__.return_value.stdout': stream, + 'return_value.__enter__.return_value.returncode': 0} args[0].configure_mock(**attrs) with mock.patch('builtins.open', mock.mock_open()) as mopen: self._test_run_console(False, testcase.TestCase.EX_OK) diff --git a/xtesting/tests/unit/core/test_unit.py b/xtesting/tests/unit/core/test_unit.py index 86577713..9e5f1321 100644 --- a/xtesting/tests/unit/core/test_unit.py +++ b/xtesting/tests/unit/core/test_unit.py @@ -32,10 +32,11 @@ class SuiteTesting(unittest.TestCase): args[0].assert_called_once_with( ['subunit-stats'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) - @mock.patch('subprocess.Popen', - return_value=mock.Mock( - communicate=mock.Mock(return_value=(b"foo", b"bar")))) + @mock.patch('subprocess.Popen') def test_generate_stats_ok(self, *args): + attrs = {'return_value.__enter__.return_value': mock.Mock( + communicate=mock.Mock(return_value=(b"foo", b"bar")))} + args[0].configure_mock(**attrs) stream = io.StringIO() self.psrunner.generate_stats(stream) args[0].assert_called_once_with( @@ -55,10 +56,11 @@ class SuiteTesting(unittest.TestCase): mock_open.assert_called_once_with( '{}/results.xml'.format(self.psrunner.res_dir), 'w') - @mock.patch('subprocess.Popen', - return_value=mock.Mock( - communicate=mock.Mock(return_value=(b"foo", b"bar")))) + @mock.patch('subprocess.Popen') def test_generate_xunit_ok(self, *args): + attrs = {'return_value.__enter__.return_value': mock.Mock( + communicate=mock.Mock(return_value=(b"foo", b"bar")))} + args[0].configure_mock(**attrs) stream = io.BytesIO() with mock.patch('builtins.open', mock.mock_open()) as mock_open: |