Mailing List Archive

gh-117968: Make the test for closed file more safe in the C API tests (GH-118230)
https://github.com/python/cpython/commit/546cbcfa0eeeb533950bd49e30423f3d3bbd5ebe
commit: 546cbcfa0eeeb533950bd49e30423f3d3bbd5ebe
branch: main
author: Serhiy Storchaka <storchaka@gmail.com>
committer: serhiy-storchaka <storchaka@gmail.com>
date: 2024-04-25T08:00:42+03:00
summary:

gh-117968: Make the test for closed file more safe in the C API tests (GH-118230)

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.

files:
M Modules/_testcapi/run.c

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);

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-leave@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: list-python-checkins@lists.gossamer-threads.com