microsoft / vscode-python

Python extension for Visual Studio Code
https://aka.ms/pvsc-marketplace
MIT License
4.25k stars 1.15k forks source link

Configure Tests command overrides project testpaths #23714

Open Jurriaan-BlueGen opened 2 weeks ago

Jurriaan-BlueGen commented 2 weeks ago

Type: Bug

Behaviour

Discover tests is overriding standard testpaths after configuration with the "Configure Tests" command.

By forcing the selection of the directory, the pytest --collect-only test discovery is run with a single directory as the argument, which overrides any testpaths set in external tools, for example pyproject.toml

If the command allows skipping of the directory selection, and doesn't set the related pytestArgs setting, test discovery will run normally.

Steps to reproduce:

  1. Configure project with pyproject.toml with [tools.pytest.ini_options] that defines testspaths = ["some","list","of/different","testpaths"]
  2. Open in vscode with python plugin
  3. Select "Python: Configure Tests" from action menu, or via "Testing" -> button
  4. Select pytest
  5. Select root directory
  6. Discover tests takes a long time in large directory trees (e.g. .venv, libs, etc) because the configured testpaths are being overridden.

Diagnostic data

From the Python output logs:

....
2024-06-27 07:39:05.246 [info] > ./.bluegen-venv/bin/python -m pytest -p vscode_pytest --collect-only .
2024-06-27 07:39:05.246 [info] cwd: .
2024-06-27 07:39:07.900 [info] ============================= test session starts ==============================
....

From the settings:

{
        ...
        "python.testing.pytestEnabled": true,
    "python.testing.pytestArgs": [
        "."
    ],
        ...
}

Extension version: 2024.8.1 VS Code version: Code 1.90.2 (5437499feb04f7a586f677b155b039bc2b3669eb, 2024-06-18T22:33:48.698Z) OS version: Linux x64 6.8.0-36-generic Modes: Remote OS version: Linux x64 6.8.0-36-generic

eleanorjboyd commented 2 weeks ago

Hi! If you delete all your pytest args (or more specifically the ".") does this fix the problem? Go to settings.json and look for "python.testing.pytestArgs"

Jurriaan-BlueGen commented 2 weeks ago

Yes, it solves the problem, and it's what I did as a workaround.

It just took a while to figure out why the paths were being ignored, and why the discovery took so long.

eleanorjboyd commented 2 weeks ago

@Jurriaan-BlueGen understood thanks! We have the setup steps which include selecting what folder your tests are in but we should be more explicit about that answer being used to update / change the args