mirror of https://github.com/python/cpython
GH-114013: fix setting `HOSTRUNNER` for `Tools/wasm/wasi.py` (GH-114097)
Also fix tests found failing under a pydebug build of WASI thanks to `make test` working due to this change.
This commit is contained in:
parent
3d5df54cdc
commit
03f7839703
|
@ -310,7 +310,7 @@ class TestIsInstanceIsSubclass(unittest.TestCase):
|
|||
@property
|
||||
def __bases__(self):
|
||||
return self.__bases__
|
||||
with support.infinite_recursion():
|
||||
with support.infinite_recursion(25):
|
||||
self.assertRaises(RecursionError, issubclass, X(), int)
|
||||
self.assertRaises(RecursionError, issubclass, int, X())
|
||||
self.assertRaises(RecursionError, isinstance, 1, X())
|
||||
|
|
|
@ -221,7 +221,7 @@ class MiscTest(unittest.TestCase):
|
|||
self.assertRaises(Exc, func, Bad())
|
||||
|
||||
@support.no_tracing
|
||||
@support.infinite_recursion()
|
||||
@support.infinite_recursion(25)
|
||||
def test_recursion(self):
|
||||
# Check that comparison for recursive objects fails gracefully
|
||||
from collections import UserList
|
||||
|
|
|
@ -5684,7 +5684,7 @@ class ForwardRefTests(BaseTestCase):
|
|||
def cmp(o1, o2):
|
||||
return o1 == o2
|
||||
|
||||
with infinite_recursion():
|
||||
with infinite_recursion(25):
|
||||
r1 = namespace1()
|
||||
r2 = namespace2()
|
||||
self.assertIsNot(r1, r2)
|
||||
|
|
|
@ -215,7 +215,7 @@ class UserDictTest(mapping_tests.TestHashMappingProtocol):
|
|||
|
||||
# Decorate existing test with recursion limit, because
|
||||
# the test is for C structure, but `UserDict` is a Python structure.
|
||||
test_repr_deep = support.infinite_recursion()(
|
||||
test_repr_deep = support.infinite_recursion(25)(
|
||||
mapping_tests.TestHashMappingProtocol.test_repr_deep,
|
||||
)
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ class UserListTest(list_tests.CommonTest):
|
|||
|
||||
# Decorate existing test with recursion limit, because
|
||||
# the test is for C structure, but `UserList` is a Python structure.
|
||||
test_repr_deep = support.infinite_recursion()(
|
||||
test_repr_deep = support.infinite_recursion(25)(
|
||||
list_tests.CommonTest.test_repr_deep,
|
||||
)
|
||||
|
||||
|
|
|
@ -2535,7 +2535,7 @@ class BadElementTest(ElementTestCase, unittest.TestCase):
|
|||
e.extend([ET.Element('bar')])
|
||||
self.assertRaises(ValueError, e.remove, X('baz'))
|
||||
|
||||
@support.infinite_recursion()
|
||||
@support.infinite_recursion(25)
|
||||
def test_recursive_repr(self):
|
||||
# Issue #25455
|
||||
e = ET.Element('foo')
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
Fix ``Tools/wasm/wasi.py`` to not include the path to ``python.wasm`` as
|
||||
part of ``HOSTRUNNER``. The environment variable is meant to specify how to
|
||||
run the WASI host only, having ``python.wasm`` and relevant flags appended
|
||||
to the ``HOSTRUNNER``. This fixes ``make test`` work.
|
|
@ -233,9 +233,10 @@ def configure_wasi_python(context, working_dir):
|
|||
env=updated_env(env_additions | wasi_sdk_env(context)),
|
||||
quiet=context.quiet)
|
||||
|
||||
python_wasm = working_dir / "python.wasm"
|
||||
exec_script = working_dir / "python.sh"
|
||||
with exec_script.open("w", encoding="utf-8") as file:
|
||||
file.write(f'#!/bin/sh\nexec {host_runner} "$@"\n')
|
||||
file.write(f'#!/bin/sh\nexec {host_runner} {python_wasm} "$@"\n')
|
||||
exec_script.chmod(0o755)
|
||||
print(f"🏃♀️ Created {exec_script} ... ")
|
||||
sys.stdout.flush()
|
||||
|
@ -272,9 +273,7 @@ def main():
|
|||
# Map the checkout to / to load the stdlib from /Lib.
|
||||
"--dir {HOST_DIR}::{GUEST_DIR} "
|
||||
# Set PYTHONPATH to the sysconfig data.
|
||||
"--env {ENV_VAR_NAME}={ENV_VAR_VALUE} "
|
||||
# Path to the WASM binary.
|
||||
"{PYTHON_WASM}")
|
||||
"--env {ENV_VAR_NAME}={ENV_VAR_VALUE}")
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
subcommands = parser.add_subparsers(dest="subcommand")
|
||||
|
@ -310,8 +309,8 @@ def main():
|
|||
"$WASI_SDK_PATH or /opt/wasi-sdk")
|
||||
subcommand.add_argument("--host-runner", action="store",
|
||||
default=default_host_runner, dest="host_runner",
|
||||
help="Command template for running the WebAssembly "
|
||||
"code (default meant for wasmtime 14 or newer: "
|
||||
help="Command template for running the WASI host "
|
||||
"(default designed for wasmtime 14 or newer: "
|
||||
f"`{default_host_runner}`)")
|
||||
|
||||
context = parser.parse_args()
|
||||
|
|
Loading…
Reference in New Issue