# coding=utf-8 import re import sys import pytest from _pytest.config import get_plugin_manager from _jb_runner_tools import jb_start_tests, jb_patch_separator, jb_doc_args, JB_DISABLE_BUFFERING from teamcity import pytest_plugin from pkg_resources import iter_entry_points if __name__ == '__main__': path, targets, additional_args = jb_start_tests() sys.argv += additional_args joined_targets = jb_patch_separator(targets, fs_glue="/", python_glue="::", fs_to_python_glue=".py::") # When file is launched in pytest it should be file.py: you can't provide it as bare module joined_targets = [t + ".py" if ":" not in t else t for t in joined_targets] sys.argv += [path] if path else joined_targets # plugin is discovered automatically in 3, but not in 2 # to prevent "plugin already registered" problem we check it first plugins_to_load = [] if not get_plugin_manager().hasplugin("pytest-teamcity"): if "pytest-teamcity" not in map(lambda e:e.name, iter_entry_points(group='pytest11', name=None)): plugins_to_load.append(pytest_plugin) args = sys.argv[1:] if JB_DISABLE_BUFFERING and "-s" not in args: args += ["-s"] jb_doc_args("pytest", args) pytest.main(args, plugins_to_load)
# coding=utf-8 import re import nose import sys from _jb_runner_tools import jb_start_tests, jb_patch_separator, jb_doc_args from teamcity.nose_report import TeamcityReport if __name__ == '__main__': path, targets, additional_args = jb_start_tests() sys.argv += [path] if path else jb_patch_separator(targets, fs_glue="/", python_glue=".", fs_to_python_glue=".py:") sys.argv += additional_args jb_doc_args("Nosetest", sys.argv) nose.main(addplugins=[TeamcityReport()])
# coding=utf-8 import re import nose import sys from _jb_runner_tools import jb_start_tests, jb_patch_separator, jb_doc_args from teamcity.nose_report import TeamcityReport def __parse_parametrized(part): """ Support nose generators that provides names like foo(1,2) """ match = re.match("^(.+)\((.+)\)$", part) if not match: return [part] else: return [match.group(1), match.group(2)] if __name__ == '__main__': path, targets, additional_args = jb_start_tests(__parse_parametrized) sys.argv += [path] if path else jb_patch_separator( targets, fs_glue=".", python_glue=".", fs_to_python_glue=":") sys.argv += additional_args jb_doc_args("Nosetest", sys.argv) nose.main(addplugins=[TeamcityReport()])