Exemplo n.º 1
0
def venv_path(tmpdir_factory, environment):
    if environment.version_info.major < 3:
        pytest.skip("python -m venv does not exist in Python 2")
    elif isinstance(environment, InterpreterEnvironment):
        # The environment can be a tox virtualenv environment which we don't
        # want, so use the system environment.
        environment = get_system_environment('.'.join(
            str(x) for x in environment.version_info[:2]))

    tmpdir = tmpdir_factory.mktemp('venv_path')
    dirname = os.path.join(tmpdir.strpath, 'venv')

    # We cannot use the Python from tox because tox creates virtualenvs and
    # they have different site.py files that work differently than the default
    # ones. Instead, we find the real Python executable by printing the value
    # of sys.base_prefix or sys.real_prefix if we are in a virtualenv.
    output = subprocess.check_output([
        environment.executable, "-c", "import sys; "
        "print(sys.real_prefix if hasattr(sys, 'real_prefix') else sys.base_prefix)"
    ])
    prefix = output.rstrip().decode('utf8')
    if os.name == 'nt':
        executable_path = os.path.join(prefix, 'python')
    else:
        executable_name = os.path.basename(environment.executable)
        executable_path = os.path.join(prefix, 'bin', executable_name)

    return_code = subprocess.call([executable_path, '-m', 'venv', dirname])
    assert return_code == 0, return_code
    return dirname
Exemplo n.º 2
0
def environment(request):
    if request.config.option.interpreter_env:
        return InterpreterEnvironment()

    version = request.config.option.env
    if version is None:
        version = os.environ.get('JEDI_TEST_ENVIRONMENT', str(py_version))

    return get_system_environment(version[0] + '.' + version[1:])
Exemplo n.º 3
0
def environment(request):
    if request.config.option.interpreter_env:
        return InterpreterEnvironment()

    version = request.config.option.env
    if version is None:
        version = os.environ.get('JEDI_TEST_ENVIRONMENT', str(py_version))

    return get_system_environment(version[0] + '.' + version[1:])
Exemplo n.º 4
0
def environment(request):
    version = request.config.option.env
    if version is None:
        version = os.environ.get('JEDI_TEST_ENVIRONMENT', str(py_version))

    if int(version) == py_version:
        return get_default_environment()

    return get_system_environment(version[0] + '.' + version[1:])
Exemplo n.º 5
0
def environment(request):
    version = request.config.option.env
    if version is None:
        version = os.environ.get('JEDI_TEST_ENVIRONMENT', str(py_version))

    if int(version) == py_version:
        return get_default_environment()

    return get_system_environment(version[0] + '.' + version[1:])
Exemplo n.º 6
0
def environment(request):
    version = request.config.option.env
    if version is None:
        v = str(sys.version_info[0]) + str(sys.version_info[1])
        version = os.environ.get('JEDI_TEST_ENVIRONMENT', v)

    if request.config.option.interpreter_env or version == 'interpreter':
        return InterpreterEnvironment()

    return get_system_environment(version[0] + '.' + version[1:])
Exemplo n.º 7
0
def test_versions(version):
    try:
        env = get_system_environment(version)
    except InvalidPythonEnvironment:
        if int(version.replace('.', '')) == py_version:
            # At least the current version has to work
            raise
        pytest.skip()

    assert version == str(env.version_info[0]) + '.' + str(env.version_info[1])
    assert env.get_sys_path()
Exemplo n.º 8
0
        if current is None:
            current = ''
        else:
            current = os.path.basename(current)
        print('{:25} {} tests and {} fails.'.format(current, tests, fails))

    def report(case, actual, desired):
        if actual == desired:
            return 0
        else:
            print("\ttest fail @%d, actual = %s, desired = %s"
                  % (case.line_nr - 1, actual, desired))
            return 1

    if arguments['--env']:
        environment = get_system_environment(arguments['--env'])
    else:
        # Will be 3.6.
        environment = get_default_environment()

    import traceback
    current = cases[0].path if cases else None
    count = fails = 0
    for c in cases:
        if c.get_skip_reason(environment):
            continue
        if current != c.path:
            file_change(current, count, fails)
            current = c.path
            count = fails = 0
Exemplo n.º 9
0
    def file_change(current, tests, fails):
        if current is not None:
            current = os.path.basename(current)
        print('%s \t\t %s tests and %s fails.' % (current, tests, fails))

    def report(case, actual, desired):
        if actual == desired:
            return 0
        else:
            print("\ttest fail @%d, actual = %s, desired = %s"
                  % (case.line_nr - 1, actual, desired))
            return 1

    if arguments['--env']:
        environment = get_system_environment(arguments['--env'])
    else:
        # Will be 3.6.
        environment = get_default_environment()

    import traceback
    current = cases[0].path if cases else None
    count = fails = 0
    for c in cases:
        if c.get_skip_reason(environment):
            continue
        if current != c.path:
            file_change(current, count, fails)
            current = c.path
            count = fails = 0