python / python/cpython

test_ctypes.test_find seems to pass when it shouldn't

未关闭
#151,089 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

tests topic-ctypes type-bug
主要语言
Python
星标
77.2k
派生
35.9k
PR 合并指标
PR 指标待抓取

描述

Bug report

Bug description:

I have a container that has no compiler but does have ld:

$ gcc --version
-sh: gcc: command not found
$ ld --version
GNU ld (GNU Binutils) 2.46

If I run the test_ctypes tests, specifically test_find_library_with_gcc which looks like it will need gcc, it surprisingly passes:

$ python3 -mtest -v test_ctypes.test_find
== CPython 3.14.5 (main, May 10 2026, 10:21:34) [GCC 16.1.0]
== Linux-6.18.33-yocto-standard-aarch64-with-glibc2.43 little-endian
== Python build: release shared
== cwd: /tmp/test_python_worker_332æ
== CPU count: 4
== encodings: locale=ANSI_X3.4-1968 FS=utf-8
== resources: all test resources are disabled, use -u option to unskip tests

test_find (test.test_ctypes.test_find.FindLibraryAndroid.test_find) ... skipped 'Test only valid for Android'
test_find_nothing_with_wrong_ld_library_path (test.test_ctypes.test_find.FindLibraryEmscripten.test_find_nothing_with_wrong_ld_library_path) ... skipped 'Test only valid for Emscripten'
test_find_nothing_without_ld_library_path (test.test_ctypes.test_find.FindLibraryEmscripten.test_find_nothing_without_ld_library_path) ... skipped 'Test only valid for Emscripten'
test_find_wasm_file_with_so_extension (test.test_ctypes.test_find.FindLibraryEmscripten.test_find_wasm_file_with_so_extension) ... skipped 'Test only valid for Emscripten'
test_find_wasm_file_with_wasm_extension (test.test_ctypes.test_find.FindLibraryEmscripten.test_find_wasm_file_with_wasm_extension) ... skipped 'Test only valid for Emscripten'
test_ignore_non_wasm_file (test.test_ctypes.test_find.FindLibraryEmscripten.test_ignore_non_wasm_file) ... skipped 'Test only valid for Emscripten'
test_find_library_with_gcc (test.test_ctypes.test_find.FindLibraryLinux.test_find_library_with_gcc) ... ok
test_find_library_with_ld (test.test_ctypes.test_find.FindLibraryLinux.test_find_library_with_ld) ... ok
test_find_on_libpath (test.test_ctypes.test_find.FindLibraryLinux.test_find_on_libpath) ... skipped 'gcc, needed for test, not available'
test_gh114257 (test.test_ctypes.test_find.FindLibraryLinux.test_gh114257) ... ok
OpenGL libraries:
	 ('GL', None)
	 ('GLU', None)
	 ('gle', None)
test_gl (test.test_ctypes.test_find.Test_OpenGL_libs.test_gl) ... skipped 'lib_gl not available'
test_gle (test.test_ctypes.test_find.Test_OpenGL_libs.test_gle) ... skipped 'lib_gle not available'
test_glu (test.test_ctypes.test_find.Test_OpenGL_libs.test_glu) ... skipped 'lib_glu not available'
test_shell_injection (test.test_ctypes.test_find.Test_OpenGL_libs.test_shell_injection) ... ok

Specifically:

test_find_library_with_gcc (test.test_ctypes.test_find.FindLibraryLinux.test_find_library_with_gcc) ... ok
CPython versions tested on:

3.14

Operating systems tested on:

Linux

Linked PRs
  • gh-151231

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

首先在报告的 Linux 环境中运行 python3 -mtest -v test_ctypes.test_find,并重点检查 test_ctypes.test_find.FindLibraryLinux.test_find_library_with_gcc。检查为什么该测试在没有 gcc 的情况下报告 ok,然后验证其结果是否正确反映编译器的可用性,并确认重点测试以预期行为通过。

由索引模型根据 Issue 内容生成。

评估

技术栈
linux, python
领域
operating-systems, testing-qa
Issue 类型
缺陷
难度
2/5
预计耗时
1-3 小时
活跃度
停滞
描述清晰度
基本清楚
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。