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
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:])
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:])
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:])
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()
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
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