mirror of https://github.com/pyodide/pyodide.git
80 lines
2.2 KiB
Python
80 lines
2.2 KiB
Python
from pyodide_build import pypabuild, pywasmcross
|
|
|
|
|
|
class MockIsolatedEnv:
|
|
def __init__(self, temp_path):
|
|
self.path = temp_path
|
|
self.installed = set()
|
|
|
|
def install(self, reqs):
|
|
for req in reqs:
|
|
self.installed.add(req)
|
|
|
|
|
|
def test_remove_avoided_requirements():
|
|
assert pypabuild.remove_avoided_requirements(
|
|
{"foo", "bar", "baz"},
|
|
{"foo", "bar", "qux"},
|
|
) == {"baz"}
|
|
|
|
|
|
def test_install_reqs(tmp_path):
|
|
env = MockIsolatedEnv(tmp_path)
|
|
|
|
reqs = {"foo", "bar", "baz"}
|
|
|
|
pypabuild.install_reqs(env, reqs) # type: ignore[arg-type]
|
|
for req in reqs:
|
|
assert req in env.installed
|
|
|
|
pypabuild.install_reqs(env, set(pypabuild.AVOIDED_REQUIREMENTS)) # type: ignore[arg-type]
|
|
for req in pypabuild.AVOIDED_REQUIREMENTS:
|
|
assert req not in env.installed
|
|
|
|
|
|
def test_make_command_wrapper_symlinks(tmp_path):
|
|
symlink_dir = tmp_path
|
|
env = pypabuild.make_command_wrapper_symlinks(symlink_dir)
|
|
|
|
wrapper = symlink_dir / "pywasmcross.py"
|
|
assert wrapper.exists()
|
|
assert not wrapper.is_symlink()
|
|
assert wrapper.stat().st_mode & 0o755 == 0o755
|
|
|
|
for _, path in env.items():
|
|
symlink_path = symlink_dir / path
|
|
|
|
assert symlink_path.exists()
|
|
assert symlink_path.is_symlink()
|
|
assert symlink_path.name in pywasmcross.SYMLINKS
|
|
|
|
|
|
def test_get_build_env(tmp_path):
|
|
build_env_ctx = pypabuild.get_build_env(
|
|
env={"PATH": ""},
|
|
pkgname="",
|
|
cflags="",
|
|
cxxflags="",
|
|
ldflags="",
|
|
target_install_dir=str(tmp_path),
|
|
exports=["pyinit"],
|
|
)
|
|
|
|
with build_env_ctx as env:
|
|
# TODO: also test values
|
|
assert "CC" in env
|
|
assert "CXX" in env
|
|
assert "AR" in env
|
|
assert "PATH" in env
|
|
assert "PYTHONPATH" in env
|
|
assert "PYWASMCROSS_ARGS" in env
|
|
assert "_PYTHON_HOST_PLATFORM" in env
|
|
assert "_PYTHON_SYSCONFIGDATA_NAME" in env
|
|
|
|
wasmcross_args = env["PYWASMCROSS_ARGS"]
|
|
assert "cflags" in wasmcross_args
|
|
assert "cxxflags" in wasmcross_args
|
|
assert "ldflags" in wasmcross_args
|
|
assert "exports" in wasmcross_args
|
|
assert "builddir" in wasmcross_args
|