def test_should_return_list_with_single_module_when_directory_contains_package(self): when(os).walk("spam").thenReturn([("spam", ["eggs"], []), ("spam/eggs", [], ["__init__.py"])]) self.assertEquals(["eggs"], discover_modules("spam", ".py")) verify(os).walk("spam")
def enable_pytest_coverage(project, logger): # collect pytest_extra_args according properties for module_name in discover_modules( project.expand_path("$dir_source_main_python")): project.get_property("pytest_extra_args").append("--cov=" + module_name) project.get_property("pytest_extra_args").append("--cov-branch") project.get_property("pytest_extra_args").append( "--cov-report=term-missing" + (":skip-covered" if project.get_property("pytest_coverage_skip_covered" ) else "")) if project.get_property("pytest_coverage_xml"): project.get_property("pytest_extra_args").append( "--cov-report=xml:" + project.expand_path("$dir_reports/pytest_coverage.xml")) if project.get_property("pytest_coverage_html"): project.get_property("pytest_extra_args").append( "--cov-report=html:" + project.expand_path("$dir_reports/pytest_coverage_html")) if project.get_property("pytest_coverage_annotate"): project.get_property("pytest_extra_args").append( "--cov-report=annotate:" + project.expand_path("$dir_reports/pytest_coverage_annotate")) if project.get_property("pytest_coverage_break_build_threshold") > 0: project.get_property("pytest_extra_args").append( "--cov-fail-under=" + str(project.get_property("pytest_coverage_break_build_threshold"))) formatted = "\n%40s : %s" % ("pytest_extra_args", project.get_property("pytest_extra_args")) logger.debug("Changed pytest_extra_args property: {output}".format( output=formatted))
def coverage(project, logger, reactor): em = reactor.execution_manager # type: ExecutionManager source_path = nc( project.expand_path(project.get_property("coverage_source_path"))) module_names = discover_modules(source_path) module_file_suffixes = discover_module_files(source_path) module_exceptions = as_list(project.get_property("coverage_exceptions")) module_names, module_files, omit_patterns = _filter_covered_modules( logger, module_names, module_file_suffixes, module_exceptions, source_path) for idx, module_name in enumerate(module_names): logger.debug("Module %r (file %r) coverage to be verified", module_name, module_files[idx]) coverage_config = dict( data_file=project.expand_path("$dir_target", "%s.coverage" % project.name), data_suffix=False, cover_pylib=False, config_file=False, branch=True, debug=as_list(project.get_property("coverage_debug")), context=project.name) project.set_property("__coverage_config", coverage_config) patch_coverage() from coverage import coverage as coverage_factory cov = coverage_factory(**coverage_config) cov.erase() cov.save() for covered_task in project.get_property( "__covered_tasks"): # type: CoveredTask if em.is_task_in_current_execution_plan(covered_task.name): task_cov = run_coverage(project, logger, reactor, covered_task, source_path, module_names, module_files, omit_patterns) cov._data.update(task_cov._data) cov.save() failure = _build_coverage_report(project, logger, "%s coverage" % project.name, project.name, "", cov, source_path, module_names, module_files) if failure: raise failure
def execute_tool_on_modules(project, name, command_and_arguments, extend_pythonpath=True): source_dir = project.expand_path("$dir_source_main_python") modules = discover_modules(source_dir) command = as_list(command_and_arguments) + modules report_file = project.expand_path("$dir_reports/%s" % name) env = os.environ if extend_pythonpath: env["PYTHONPATH"] = source_dir return execute_command(command, report_file, env=env), report_file
def execute_tests(test_source, suffix, test_method_prefix=None): output_log_file = StringIO() try: test_modules = discover_modules(test_source, suffix) loader = unittest.defaultTestLoader if test_method_prefix: loader.testMethodPrefix = test_method_prefix tests = loader.loadTestsFromNames(test_modules) result = unittest.TextTestRunner(stream=output_log_file).run(tests) return result, output_log_file.getvalue() finally: output_log_file.close()
def test_should_return_empty_list_when_directory_contains_single_file_not_matching_suffix(self): when(os).walk("spam").thenReturn([("spam", [], ["eggs.pi"])]) self.assertEquals([], discover_modules("spam", ".py")) verify(os).walk("spam")
def test_should_return_list_with_single_module_when_directory_contains_single_file( self, walk): self.assertEquals(["eggs"], discover_modules("spam", ".py")) walk.assert_called_with("spam")
def test_should_return_empty_list_when_directory_contains_single_file_not_matching_suffix( self, walk): self.assertEquals([], discover_modules("spam", ".py")) walk.assert_called_with("spam")
def _discover_modules_to_cover(project): return discover_modules(project.expand_path("$dir_source_main_python"))
def test_should_return_list_with_single_module_when_directory_contains_single_file(self): when(os).walk("spam").thenReturn([("spam", [], ["eggs.py"])]) self.assertEquals(["eggs"], discover_modules("spam", ".py")) verify(os).walk("spam")
def test_should_not_eat_first_character_of_modules_when_source_path_ends_with_slash(self): when(pybuilder.utils).discover_files(any(), any()).thenReturn(['/path/to/tests/reactor_tests.py']) self.assertEquals(["reactor_tests"], discover_modules("/path/to/tests/", ".py"))
def test_should_return_list_with_single_module_when_directory_contains_single_file(self, walk): self.assertEquals(["eggs"], discover_modules("spam", ".py")) walk.assert_called_with("spam")
def test_should_return_empty_list_when_directory_contains_single_file_not_matching_suffix(self, walk): self.assertEquals([], discover_modules("spam", ".py")) walk.assert_called_with("spam")
def test_should_honor_suffix_without_stripping_it_from_module_names(self): when(pybuilder.utils).discover_files(any(), any()).thenReturn(['/path/to/tests/reactor_tests.py']) self.assertEquals(["reactor_tests"], discover_modules("/path/to/tests/", "_tests.py"))