From e30956bd336160cebfc05525db418a285b33cbf3 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 24 Apr 2024 16:31:21 +0300 Subject: [PATCH] gh-117982: Make the test for closed file more safe in the C API tests The behavior of fileno() after fclose() is undefined, but it is the only practical way to check whether the file was closed. Only test this on the known platforms (Linux, Windows, macOS), where we already tested that it works. --- Modules/_testcapi/run.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Modules/_testcapi/run.c b/Modules/_testcapi/run.c index fa3251c4b5b310..4fd98b82d762ff 100644 --- a/Modules/_testcapi/run.c +++ b/Modules/_testcapi/run.c @@ -74,8 +74,10 @@ run_fileexflags(PyObject *mod, PyObject *pos_args) result = PyRun_FileExFlags(fp, filename, start, globals, locals, closeit, pflags); -#if !defined(__wasi__) - /* The behavior of fileno() after fclose() is undefined. */ +#if defined(__linux__) || defined(MS_WINDOWS) || defined(__APPLE__) + /* The behavior of fileno() after fclose() is undefined, but it is + * the only practical way to check whether the file was closed. + * Only test this on the known platforms. */ if (closeit && result && fileno(fp) >= 0) { PyErr_SetString(PyExc_AssertionError, "File was not closed after excution"); Py_DECREF(result);