Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-40280: Enable most file-at() and nanosleep APIs again (GH-32238) #32238

Merged
merged 1 commit into from
Apr 2, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion Lib/test/test_os.py
Original file line number Diff line number Diff line change
Expand Up @@ -1334,7 +1334,9 @@ def setUp(self):
else:
self.sub2_tree = (sub2_path, ["SUB21"], ["tmp3"])

os.chmod(sub21_path, 0)
if not support.is_emscripten:
# Emscripten fails with inaccessible directory
os.chmod(sub21_path, 0)
try:
os.listdir(sub21_path)
except PermissionError:
Expand Down Expand Up @@ -1517,6 +1519,9 @@ def test_yields_correct_dir_fd(self):
# check that listdir() returns consistent information
self.assertEqual(set(os.listdir(rootfd)), set(dirs) | set(files))

@unittest.skipIf(
support.is_emscripten, "Cannot dup stdout on Emscripten"
)
def test_fd_leak(self):
# Since we're opening a lot of FDs, we must be careful to avoid leaks:
# we both check that calling fwalk() a large number of times doesn't
Expand Down Expand Up @@ -2935,6 +2940,9 @@ def test_bad_fd(self):
@unittest.skipUnless(os.isatty(0) and not win32_is_iot() and (sys.platform.startswith('win') or
(hasattr(locale, 'nl_langinfo') and hasattr(locale, 'CODESET'))),
'test requires a tty and either Windows or nl_langinfo(CODESET)')
@unittest.skipIf(
support.is_emscripten, "Cannot get encoding of stdin on Emscripten"
)
def test_device_encoding(self):
encoding = os.device_encoding(0)
self.assertIsNotNone(encoding)
Expand Down
18 changes: 2 additions & 16 deletions Tools/wasm/config.site-wasm32-emscripten
Original file line number Diff line number Diff line change
Expand Up @@ -27,32 +27,18 @@ ac_cv_func_prlimit=no
# unsupported syscall, https://github.com/emscripten-core/emscripten/issues/13393
ac_cv_func_shutdown=no

# clock_nanosleep() causes time.sleep() to sleep forever.
# nanosleep() works correctly
ac_cv_func_clock_nanosleep=no
ac_cv_lib_rt_clock_nanosleep=no

# The rest is based on pyodide
# https://github.com/pyodide/pyodide/blob/main/cpython/pyconfig.undefs.h

ac_cv_func_epoll_create=no
ac_cv_func_epoll_create1=no
ac_cv_header_linux_vm_sockets_h=no
ac_cv_func_socketpair=no
ac_cv_func_utimensat=no
ac_cv_func_sigaction=no

# Untested or failing syscalls in emscripten
ac_cv_func_openat=no
ac_cv_func_mkdirat=no
ac_cv_func_faccessat=no
ac_cv_func_fchownat=no
ac_cv_func_renameat=no
ac_cv_func_linkat=no
# symlinkat is implemented, but fails
ac_cv_func_symlinkat=no
ac_cv_func_readlinkat=no
ac_cv_func_fchmodat=no
ac_cv_func_dup3=no

# lchmod/lchown are implemented, but fail with ENOTSUP.
ac_cv_func_lchmod=no
ac_cv_func_lchown=no
Expand Down