gh-126554: correct detection of gcc for TestNullDlsym.test_null_dlsym#129872
gh-126554: correct detection of gcc for TestNullDlsym.test_null_dlsym#129872encukou merged 2 commits intopython:mainfrom
gcc for TestNullDlsym.test_null_dlsym#129872Conversation
|
Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool. If this change has little impact on Python users, wait for a maintainer to apply the |
|
Wait, how come the
cc @encukou (I don't remember why we didn't catch this) |
|
The trace is actually from 3.12.9, but the subprocess call throws exception also in 3.13 and 3.14-rc although I didn't try to run the testsuite in those. I'll rewrite this to catch just |
gcc for TestNullDlsym.test_null_dlsym
88e485a to
4835b2b
Compare
|
Beautified by adding Meanwhile I retested also 3.13.2, so I guess it's valid for all releases. |
|
Ok, actually there is a way to make it work without a try-except: We need to pass the >>> subprocess.call(["gcc", "--version"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
0
>>> subprocess.call(["gcc", "--version"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True)
1So, we need to be a bit more careful with the actual return code! So, instead I either indeed suggest using a subprocess.call(["which", "abc"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) # == 1
subprocess.call(["which", "gcc"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) # == 0So, let's use the guard. |
In case gcc is not available, it will throw exception and test fails.
So catch the exception to skip the test correctly.
======================================================================
ERROR: test_null_dlsym (test.test_ctypes.test_dlerror.TestNullDlsym.test_null_dlsym)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python3.12/test/test_ctypes/test_dlerror.py", line 61, in test_null_dlsym
retcode = subprocess.call(["gcc", "--version"],
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/subprocess.py", line 391, in call
with Popen(*popenargs, **kwargs) as p:
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/subprocess.py", line 1028, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.12/subprocess.py", line 1963, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'gcc'
Signed-off-by: Peter Marko <peter.marko@siemens.com>
4835b2b to
2777a08
Compare
|
There is Perhaps it's time to add a test helper to find gcc/clang, and skip test if it's not available. (But that would be for a new PR.) |
|
Thanks @petermarko for the PR, and @encukou for merging it 🌮🎉.. I'm working now to backport this PR to: 3.12, 3.13. |
…ull_dlsym` (pythonGH-129872) In case gcc is not available, the test will fail with FileNotFoundError. So catch the exception to skip the test correctly. (cherry picked from commit 978211c) Co-authored-by: Peter Marko <peter.marko@siemens.com> Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
GH-129944 is a backport of this pull request to the 3.13 branch. |
|
Thank you for the report & fix, @petermarko! |
…ull_dlsym` (pythonGH-129872) In case gcc is not available, the test will fail with FileNotFoundError. So catch the exception to skip the test correctly. (cherry picked from commit 978211c) Co-authored-by: Peter Marko <peter.marko@siemens.com> Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
GH-129945 is a backport of this pull request to the 3.12 branch. |
…null_dlsym` (GH-129872) (#129945) gh-126554: correct detection of `gcc` for `TestNullDlsym.test_null_dlsym` (GH-129872) In case gcc is not available, the test will fail with FileNotFoundError. So catch the exception to skip the test correctly. (cherry picked from commit 978211c) Signed-off-by: Peter Marko <peter.marko@siemens.com> Co-authored-by: Peter Marko <peter.marko@siemens.com>
…null_dlsym` (GH-129872) (#129944) gh-126554: correct detection of `gcc` for `TestNullDlsym.test_null_dlsym` (GH-129872) In case gcc is not available, the test will fail with FileNotFoundError. So catch the exception to skip the test correctly. (cherry picked from commit 978211c) Signed-off-by: Peter Marko <peter.marko@siemens.com> Co-authored-by: Peter Marko <peter.marko@siemens.com>
|
In case gcc is not available, it will throw exception and test fails. So catch the exception to skip the test correctly.