mirror of
https://github.com/python/cpython.git
synced 2025-12-22 16:39:14 +00:00
gh-124621: Emscripten: Support pyrepl in browser (GH-136931)
Some checks are pending
Tests / (push) Blocked by required conditions
Tests / Cross build Linux (push) Blocked by required conditions
Tests / Change detection (push) Waiting to run
Tests / Docs (push) Blocked by required conditions
Tests / Windows MSI (push) Blocked by required conditions
Tests / Check if Autoconf files are up to date (push) Blocked by required conditions
Tests / Check if generated files are up to date (push) Blocked by required conditions
Tests / Ubuntu SSL tests with OpenSSL (push) Blocked by required conditions
Tests / Ubuntu SSL tests with AWS-LC (push) Blocked by required conditions
Tests / WASI (push) Blocked by required conditions
Tests / Hypothesis tests on Ubuntu (push) Blocked by required conditions
Tests / Address sanitizer (push) Blocked by required conditions
Tests / Sanitizers (push) Blocked by required conditions
Tests / CIFuzz (push) Blocked by required conditions
Tests / All required checks pass (push) Blocked by required conditions
Lint / lint (push) Waiting to run
mypy / Run mypy on Lib/_pyrepl (push) Waiting to run
mypy / Run mypy on Lib/test/libregrtest (push) Waiting to run
mypy / Run mypy on Lib/tomllib (push) Waiting to run
mypy / Run mypy on Tools/build (push) Waiting to run
mypy / Run mypy on Tools/cases_generator (push) Waiting to run
mypy / Run mypy on Tools/clinic (push) Waiting to run
mypy / Run mypy on Tools/jit (push) Waiting to run
mypy / Run mypy on Tools/peg_generator (push) Waiting to run
Some checks are pending
Tests / (push) Blocked by required conditions
Tests / Cross build Linux (push) Blocked by required conditions
Tests / Change detection (push) Waiting to run
Tests / Docs (push) Blocked by required conditions
Tests / Windows MSI (push) Blocked by required conditions
Tests / Check if Autoconf files are up to date (push) Blocked by required conditions
Tests / Check if generated files are up to date (push) Blocked by required conditions
Tests / Ubuntu SSL tests with OpenSSL (push) Blocked by required conditions
Tests / Ubuntu SSL tests with AWS-LC (push) Blocked by required conditions
Tests / WASI (push) Blocked by required conditions
Tests / Hypothesis tests on Ubuntu (push) Blocked by required conditions
Tests / Address sanitizer (push) Blocked by required conditions
Tests / Sanitizers (push) Blocked by required conditions
Tests / CIFuzz (push) Blocked by required conditions
Tests / All required checks pass (push) Blocked by required conditions
Lint / lint (push) Waiting to run
mypy / Run mypy on Lib/_pyrepl (push) Waiting to run
mypy / Run mypy on Lib/test/libregrtest (push) Waiting to run
mypy / Run mypy on Lib/tomllib (push) Waiting to run
mypy / Run mypy on Tools/build (push) Waiting to run
mypy / Run mypy on Tools/cases_generator (push) Waiting to run
mypy / Run mypy on Tools/clinic (push) Waiting to run
mypy / Run mypy on Tools/jit (push) Waiting to run
mypy / Run mypy on Tools/peg_generator (push) Waiting to run
Basic support for pyrepl in Emscripten. Limitations: * requires JSPI * no signal handling implemented As followup work, it would be nice to implement a webworker variant for when JSPI is not available and proper signal handling. Because it requires JSPI, it doesn't work in Safari. Firefox requires setting an experimental flag. All the Chromiums have full support since May. Until we make it work without JSPI, let's keep the original web_example around. Co-authored-by: Łukasz Langa <lukasz@langa.pl> Co-authored-by: Éric <merwok@netwok.org>
This commit is contained in:
parent
22c8658906
commit
c933a6bb32
13 changed files with 505 additions and 40 deletions
|
|
@ -8,7 +8,7 @@ import struct
|
|||
import sys
|
||||
import unittest
|
||||
from test.support import (
|
||||
cpython_only, get_pagesize, is_apple, requires_subprocess, verbose
|
||||
cpython_only, get_pagesize, is_apple, requires_subprocess, verbose, is_emscripten
|
||||
)
|
||||
from test.support.import_helper import import_module
|
||||
from test.support.os_helper import TESTFN, unlink, make_bad_fd
|
||||
|
|
@ -211,6 +211,7 @@ class TestFcntl(unittest.TestCase):
|
|||
@unittest.skipUnless(
|
||||
hasattr(fcntl, "F_SETPIPE_SZ") and hasattr(fcntl, "F_GETPIPE_SZ"),
|
||||
"F_SETPIPE_SZ and F_GETPIPE_SZ are not available on all platforms.")
|
||||
@unittest.skipIf(is_emscripten, "Emscripten pipefs doesn't support these")
|
||||
def test_fcntl_f_pipesize(self):
|
||||
test_pipe_r, test_pipe_w = os.pipe()
|
||||
try:
|
||||
|
|
@ -265,12 +266,14 @@ class TestFcntl(unittest.TestCase):
|
|||
@unittest.skipUnless(
|
||||
hasattr(fcntl, "F_SETOWN_EX") and hasattr(fcntl, "F_GETOWN_EX"),
|
||||
"requires F_SETOWN_EX and F_GETOWN_EX")
|
||||
@unittest.skipIf(is_emscripten, "Emscripten doesn't actually support these")
|
||||
def test_fcntl_small_buffer(self):
|
||||
self._check_fcntl_not_mutate_len()
|
||||
|
||||
@unittest.skipUnless(
|
||||
hasattr(fcntl, "F_SETOWN_EX") and hasattr(fcntl, "F_GETOWN_EX"),
|
||||
"requires F_SETOWN_EX and F_GETOWN_EX")
|
||||
@unittest.skipIf(is_emscripten, "Emscripten doesn't actually support these")
|
||||
def test_fcntl_large_buffer(self):
|
||||
self._check_fcntl_not_mutate_len(2024)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue