Skip to content

We don't run test_lazy_imports #145334

@johnslavik

Description

@johnslavik

Bug report

Bug description:

This is Lib.test.test_import:

Lib/test/test_import
├── __init__.py
├── __main__.py
├── data
└── test_lazy_imports.py

Our test finder doesn't see test_lazy_imports: #144852 (comment).

python -m test does not run test_lazy_imports at all.

We could try to keep regular import test package with lazy import test package by:

  1. Updating Lib.test.libregrtest.findtests.SPLITTESTDIRS to include test_import.
  2. Moving Lib/test/test_import/__init__.py to Lib/test/test_import/test_import.py .
  3. Creating a new Lib/test/test_import/__init__.py that defines load_tests hook that calls load_package_tests.

It is visible by now that this is a can of worms. Lib.test.test_import uses relative imports itself, so moving Lib.test.test_import to Lib.test.test_import.test_import breaks them. This means we'd need to massage Lib.test.test_import.test_import to work again, which means we'd need to modify old tests -- which I think on its own disqualifies this approach.

We can't have Lib.test.test_import and Lib.test.test_import.test_lazy_imports at the same time set up in a maintainable way, because it would involve having manual registration of test suites in test_import (or maybe in test_lazy_imports?). Perhaps we can do this cheaply, but I assume this makes these tests less self-contained and complicates the setup.

I propose we move Lib/test/test_import/test_lazy_imports.py (+data) into Lib/test/test_lazy_import/__init__.py (+data). Unless there is any other cost-effective solution to this that I've missed?

CC @pablogsal @DinoV @brittanyrey @Yhg1s @vstinner @sobolevn

CPython versions tested on:

CPython main branch

Operating systems tested on:

No response

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.15new features, bugs and security fixesinfraCI, GitHub Actions, buildbots, Dependabot, etc.testsTests in the Lib/test dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions