コード例 #1
0
ファイル: utils_tests.py プロジェクト: zenweasel/pybuilder
    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")
コード例 #2
0
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))
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
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
コード例 #6
0
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()
コード例 #7
0
 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")
コード例 #8
0
 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")
コード例 #9
0
 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")
コード例 #10
0
def _discover_modules_to_cover(project):
    return discover_modules(project.expand_path("$dir_source_main_python"))
コード例 #11
0
 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")
コード例 #12
0
ファイル: utils_tests.py プロジェクト: zenweasel/pybuilder
    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"))
コード例 #13
0
ファイル: utils_tests.py プロジェクト: 0xD3ADB33F/pybuilder
 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")
コード例 #14
0
ファイル: utils_tests.py プロジェクト: 0xD3ADB33F/pybuilder
 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")
コード例 #15
0
ファイル: utils_tests.py プロジェクト: zenweasel/pybuilder
    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"))
コード例 #16
0
ファイル: coverage_plugin.py プロジェクト: timeyyy/pybuilder
def _discover_modules_to_cover(project):
    return discover_modules(project.expand_path("$dir_source_main_python"))
コード例 #17
0
 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")