python / python/cpython

Order-dependent failure: test_profiling CLI test fails after test_importlib.test_util

Đang mở
#152,659 3 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

tests type-bug
Ngôn ngữ chính
Python
Star
77.2k
Fork
35.9k
Chỉ số merge pull request
Chỉ số pull request đang chờ

Mô tả

Bug report

Bug description:
Summary

I found an order-dependent test failure on current main.

A test_profiling sampling CLI test passes when run alone, but fails when run after test_importlib.test_util.

Environment
  • OS: Windows NT 10.0.26200.0
  • CPython commit: 449122ed0dbdb6a545af4927c59f4c80ee15c515
  • Debug build: PCbuild\amd64\python_d.exe
  • Release build: also reproduced
  • Branch: investigate/deep-cpython-bug-hunt
Reproduction
PCbuild\amd64\python_d.exe -m unittest -v test.test_importlib.test_util test.test_profiling.test_sampling_profiler.test_cli.TestSampleProfilerCLI.test_cli_module_argument_parsing

The same profiling test passes when run alone.

Actual behavior

The test fails with:

profiling.sampling.errors.SamplingModuleNotFoundError: Module 'mymodule' not found.
Expected behavior

The profiling CLI test should pass regardless of whether test_importlib.test_util ran earlier in the same process.

Investigation

The profiling CLI test patches:

importlib.util.find_spec

However, after running test_importlib.test_util, importlib.util and sys.modules["importlib.util"] appear to refer to different module objects.

The CLI code calls through its own imported module reference:

profiling.sampling.cli.importlib.util.find_spec

So the mock on the global importlib.util.find_spec does not intercept the lookup, and the CLI tries to resolve the fake module name normally.

That leads to:

SamplingModuleNotFoundError: Module 'mymodule' not found.

I could not find an existing open issue or PR covering this failure.

Possible fix

The smallest fix may be to patch the symbol at the point where it is used, for example:

profiling.sampling.cli.importlib.util.find_spec

inside the profiling CLI tests, or alternatively to avoid this mock by using a real temporary module.

I am happy to prepare a focused test-only PR if that direction sounds reasonable.

CPython versions tested on:

CPython main branch

Operating systems tested on:

Windows

Linked PRs
  • gh-152675

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu với test.test_importlib.test_util và test.test_profiling.test_sampling_profiler.test_cli.TestSampleProfilerCLI.test_cli_module_argument_parsing, sau đó chạy lệnh unittest đã được báo cáo trên Windows. Kiểm tra mock target đối chiếu với tham chiếu module được profiling.sampling.cli sử dụng. Hoàn tất khi bài kiểm thử CLI chạy đạt riêng lẻ và sau test_importlib.test_util; xem lại PR được liên kết gh-152675 để biết công việc hiện tại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
testing-qa
Loại issue
Lỗi
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.