|
|
|
|
@@ -446,6 +446,182 @@ class MockGetPathTests(unittest.TestCase):
|
|
|
|
|
actual = getpath(ns, expected)
|
|
|
|
|
self.assertEqual(expected, actual)
|
|
|
|
|
|
|
|
|
|
def test_framework_macos(self):
|
|
|
|
|
""" Test framework layout on macOS
|
|
|
|
|
|
|
|
|
|
This layout is primarily detected using a compile-time option
|
|
|
|
|
(WITH_NEXT_FRAMEWORK).
|
|
|
|
|
"""
|
|
|
|
|
ns = MockPosixNamespace(
|
|
|
|
|
os_name="darwin",
|
|
|
|
|
argv0="/Library/Frameworks/Python.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/Python",
|
|
|
|
|
WITH_NEXT_FRAMEWORK=1,
|
|
|
|
|
PREFIX="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
EXEC_PREFIX="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
ENV___PYVENV_LAUNCHER__="/Library/Frameworks/Python.framework/Versions/9.8/bin/python9.8",
|
|
|
|
|
real_executable="/Library/Frameworks/Python.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/Python",
|
|
|
|
|
library="/Library/Frameworks/Python.framework/Versions/9.8/Python",
|
|
|
|
|
)
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/Python.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/Python")
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/Python.framework/Versions/9.8/bin/python9.8")
|
|
|
|
|
ns.add_known_dir("/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8/lib-dynload")
|
|
|
|
|
ns.add_known_file("/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8/os.py")
|
|
|
|
|
|
|
|
|
|
# This is definitely not the stdlib (see discusion in bpo-46890)
|
|
|
|
|
#ns.add_known_file("/Library/Frameworks/lib/python98.zip")
|
|
|
|
|
|
|
|
|
|
expected = dict(
|
|
|
|
|
executable="/Library/Frameworks/Python.framework/Versions/9.8/bin/python9.8",
|
|
|
|
|
prefix="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
exec_prefix="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
base_executable="/Library/Frameworks/Python.framework/Versions/9.8/bin/python9.8",
|
|
|
|
|
base_prefix="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
base_exec_prefix="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
module_search_paths_set=1,
|
|
|
|
|
module_search_paths=[
|
|
|
|
|
"/Library/Frameworks/Python.framework/Versions/9.8/lib/python98.zip",
|
|
|
|
|
"/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8",
|
|
|
|
|
"/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8/lib-dynload",
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
actual = getpath(ns, expected)
|
|
|
|
|
self.assertEqual(expected, actual)
|
|
|
|
|
|
|
|
|
|
def test_alt_framework_macos(self):
|
|
|
|
|
""" Test framework layout on macOS with alternate framework name
|
|
|
|
|
|
|
|
|
|
``--with-framework-name=DebugPython``
|
|
|
|
|
|
|
|
|
|
This layout is primarily detected using a compile-time option
|
|
|
|
|
(WITH_NEXT_FRAMEWORK).
|
|
|
|
|
"""
|
|
|
|
|
ns = MockPosixNamespace(
|
|
|
|
|
argv0="/Library/Frameworks/DebugPython.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/DebugPython",
|
|
|
|
|
os_name="darwin",
|
|
|
|
|
WITH_NEXT_FRAMEWORK=1,
|
|
|
|
|
PREFIX="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
EXEC_PREFIX="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
ENV___PYVENV_LAUNCHER__="/Library/Frameworks/DebugPython.framework/Versions/9.8/bin/python9.8",
|
|
|
|
|
real_executable="/Library/Frameworks/DebugPython.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/DebugPython",
|
|
|
|
|
library="/Library/Frameworks/DebugPython.framework/Versions/9.8/DebugPython",
|
|
|
|
|
PYTHONPATH=None,
|
|
|
|
|
ENV_PYTHONHOME=None,
|
|
|
|
|
ENV_PYTHONEXECUTABLE=None,
|
|
|
|
|
executable_dir=None,
|
|
|
|
|
py_setpath=None,
|
|
|
|
|
)
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/DebugPython.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/DebugPython")
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/DebugPython.framework/Versions/9.8/bin/python9.8")
|
|
|
|
|
ns.add_known_dir("/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8/lib-dynload")
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8/os.py")
|
|
|
|
|
|
|
|
|
|
# This is definitely not the stdlib (see discusion in bpo-46890)
|
|
|
|
|
#ns.add_known_xfile("/Library/lib/python98.zip")
|
|
|
|
|
expected = dict(
|
|
|
|
|
executable="/Library/Frameworks/DebugPython.framework/Versions/9.8/bin/python9.8",
|
|
|
|
|
prefix="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
exec_prefix="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
base_executable="/Library/Frameworks/DebugPython.framework/Versions/9.8/bin/python9.8",
|
|
|
|
|
base_prefix="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
base_exec_prefix="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
module_search_paths_set=1,
|
|
|
|
|
module_search_paths=[
|
|
|
|
|
"/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python98.zip",
|
|
|
|
|
"/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8",
|
|
|
|
|
"/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8/lib-dynload",
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
actual = getpath(ns, expected)
|
|
|
|
|
self.assertEqual(expected, actual)
|
|
|
|
|
|
|
|
|
|
def test_venv_framework_macos(self):
|
|
|
|
|
"""Test a venv layout on macOS using a framework build
|
|
|
|
|
"""
|
|
|
|
|
venv_path = "/tmp/workdir/venv"
|
|
|
|
|
ns = MockPosixNamespace(
|
|
|
|
|
os_name="darwin",
|
|
|
|
|
argv0="/Library/Frameworks/Python.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/Python",
|
|
|
|
|
WITH_NEXT_FRAMEWORK=1,
|
|
|
|
|
PREFIX="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
EXEC_PREFIX="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
ENV___PYVENV_LAUNCHER__=f"{venv_path}/bin/python",
|
|
|
|
|
real_executable="/Library/Frameworks/Python.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/Python",
|
|
|
|
|
library="/Library/Frameworks/Python.framework/Versions/9.8/Python",
|
|
|
|
|
)
|
|
|
|
|
ns.add_known_dir(venv_path)
|
|
|
|
|
ns.add_known_dir(f"{venv_path}/bin")
|
|
|
|
|
ns.add_known_dir(f"{venv_path}/lib")
|
|
|
|
|
ns.add_known_dir(f"{venv_path}/lib/python9.8")
|
|
|
|
|
ns.add_known_xfile(f"{venv_path}/bin/python")
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/Python.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/Python")
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/Python.framework/Versions/9.8/bin/python9.8")
|
|
|
|
|
ns.add_known_dir("/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8/lib-dynload")
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8/os.py")
|
|
|
|
|
ns.add_known_file(f"{venv_path}/pyvenv.cfg", [
|
|
|
|
|
"home = /Library/Frameworks/Python.framework/Versions/9.8/bin"
|
|
|
|
|
])
|
|
|
|
|
expected = dict(
|
|
|
|
|
executable=f"{venv_path}/bin/python",
|
|
|
|
|
prefix="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
exec_prefix="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
base_executable="/Library/Frameworks/Python.framework/Versions/9.8/bin/python9.8",
|
|
|
|
|
base_prefix="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
base_exec_prefix="/Library/Frameworks/Python.framework/Versions/9.8",
|
|
|
|
|
module_search_paths_set=1,
|
|
|
|
|
module_search_paths=[
|
|
|
|
|
"/Library/Frameworks/Python.framework/Versions/9.8/lib/python98.zip",
|
|
|
|
|
"/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8",
|
|
|
|
|
"/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8/lib-dynload",
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
actual = getpath(ns, expected)
|
|
|
|
|
self.assertEqual(expected, actual)
|
|
|
|
|
|
|
|
|
|
def test_venv_alt_framework_macos(self):
|
|
|
|
|
"""Test a venv layout on macOS using a framework build
|
|
|
|
|
|
|
|
|
|
``--with-framework-name=DebugPython``
|
|
|
|
|
"""
|
|
|
|
|
venv_path = "/tmp/workdir/venv"
|
|
|
|
|
ns = MockPosixNamespace(
|
|
|
|
|
os_name="darwin",
|
|
|
|
|
argv0="/Library/Frameworks/DebugPython.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/DebugPython",
|
|
|
|
|
WITH_NEXT_FRAMEWORK=1,
|
|
|
|
|
PREFIX="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
EXEC_PREFIX="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
ENV___PYVENV_LAUNCHER__=f"{venv_path}/bin/python",
|
|
|
|
|
real_executable="/Library/Frameworks/DebugPython.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/DebugPython",
|
|
|
|
|
library="/Library/Frameworks/DebugPython.framework/Versions/9.8/DebugPython",
|
|
|
|
|
)
|
|
|
|
|
ns.add_known_dir(venv_path)
|
|
|
|
|
ns.add_known_dir(f"{venv_path}/bin")
|
|
|
|
|
ns.add_known_dir(f"{venv_path}/lib")
|
|
|
|
|
ns.add_known_dir(f"{venv_path}/lib/python9.8")
|
|
|
|
|
ns.add_known_xfile(f"{venv_path}/bin/python")
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/DebugPython.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/DebugPython")
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/DebugPython.framework/Versions/9.8/bin/python9.8")
|
|
|
|
|
ns.add_known_dir("/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8/lib-dynload")
|
|
|
|
|
ns.add_known_xfile("/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8/os.py")
|
|
|
|
|
ns.add_known_file(f"{venv_path}/pyvenv.cfg", [
|
|
|
|
|
"home = /Library/Frameworks/DebugPython.framework/Versions/9.8/bin"
|
|
|
|
|
])
|
|
|
|
|
expected = dict(
|
|
|
|
|
executable=f"{venv_path}/bin/python",
|
|
|
|
|
prefix="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
exec_prefix="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
base_executable="/Library/Frameworks/DebugPython.framework/Versions/9.8/bin/python9.8",
|
|
|
|
|
base_prefix="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
base_exec_prefix="/Library/Frameworks/DebugPython.framework/Versions/9.8",
|
|
|
|
|
module_search_paths_set=1,
|
|
|
|
|
module_search_paths=[
|
|
|
|
|
"/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python98.zip",
|
|
|
|
|
"/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8",
|
|
|
|
|
"/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8/lib-dynload",
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
actual = getpath(ns, expected)
|
|
|
|
|
self.assertEqual(expected, actual)
|
|
|
|
|
|
|
|
|
|
def test_venv_macos(self):
|
|
|
|
|
"""Test a venv layout on macOS.
|
|
|
|
|
|
|
|
|
|
@@ -787,6 +963,7 @@ class MockPosixNamespace(dict):
|
|
|
|
|
self["config"] = DEFAULT_CONFIG.copy()
|
|
|
|
|
self["os_name"] = "posix"
|
|
|
|
|
self["PLATLIBDIR"] = "lib"
|
|
|
|
|
self["WITH_NEXT_FRAMEWORK"] = 0
|
|
|
|
|
super().__init__(*a, **kw)
|
|
|
|
|
if argv0:
|
|
|
|
|
self["config"]["orig_argv"] = [argv0]
|
|
|
|
|
|