def test_relative_path(tmp_path, session_app_data, monkeypatch): sys_executable = Path(PythonInfo.current_system(app_data=session_app_data).system_executable) cwd = sys_executable.parents[1] monkeypatch.chdir(str(cwd)) relative = str(sys_executable.relative_to(cwd)) result = get_interpreter(relative, session_app_data) assert result is not None
def cross_python(is_inside_ci): spec = "{}{}".format(CURRENT.implementation, 2 if CURRENT.version_info.major == 3 else 3) interpreter = get_interpreter(spec) if interpreter is None: msg = "could not find {}".format(spec) if is_inside_ci: raise RuntimeError(msg) pytest.skip(msg=msg) yield interpreter
def cross_python(is_inside_ci, session_app_data): spec = str(2 if sys.version_info[0] == 3 else 3) interpreter = get_interpreter(spec, session_app_data) if interpreter is None: msg = "could not find {}".format(spec) if is_inside_ci: raise RuntimeError(msg) pytest.skip(msg=msg) yield interpreter
def _get_python(self, base_python: t.List[str]) -> t.Optional[PythonInfo]: interpreter = next( filter(None, (get_interpreter(p, []) for p in base_python)), None) if not interpreter: return None return PythonInfo( implementation=interpreter.implementation, version_info=interpreter.version_info, version=interpreter.version, is_64=(interpreter.architecture == 64), platform=interpreter.platform, extra={"executable": Path(interpreter.system_executable)}, )
def get_python(self, base): return get_interpreter(base)
def test_discovery_via_path_not_found(tmp_path, monkeypatch): monkeypatch.setenv(str("PATH"), str(tmp_path)) interpreter = get_interpreter(uuid4().hex, []) assert interpreter is None
name = name.lower() elif case == "upper": name = name.upper() exe_name = "{}{}{}".format(name, current.version_info.major, ".exe" if sys.platform == "win32" else "") target = tmp_path / current.distutils_install["scripts"] target.mkdir(parents=True) executable = target / exe_name os.symlink(sys.executable, ensure_text(str(executable))) pyvenv_cfg = Path(sys.executable).parents[1] / "pyvenv.cfg" if pyvenv_cfg.exists(): (target / pyvenv_cfg.name).write_bytes(pyvenv_cfg.read_bytes()) new_path = os.pathsep.join( [str(target)] + os.environ.get(str("PATH"), str("")).split(os.pathsep)) monkeypatch.setenv(str("PATH"), new_path) interpreter = get_interpreter(core, []) assert interpreter is not None def test_discovery_via_path_not_found(tmp_path, monkeypatch): monkeypatch.setenv(str("PATH"), str(tmp_path)) interpreter = get_interpreter(uuid4().hex, []) assert interpreter is None def test_relative_path(tmp_path, session_app_data, monkeypatch): sys_executable = Path( PythonInfo.current_system(app_data=session_app_data).system_executable) cwd = sys_executable.parents[1] monkeypatch.chdir(str(cwd))