Repository navigation
Pytest discovery stuck in Output panel #18656
Copy link
Copy link
Closed
Labels
area-testingbugIssue identified by VS Code Team member as probable bugIssue identified by VS Code Team member as probable bugneeds PRReady to be worked onReady to be worked onverifiedVerification succeededVerification succeeded
Milestone
Description
Issue Type: Bug
Behaviour
Expected vs. Actual
Running pytest in the terminal works. Running the discovery command from VS Code directly works:
> ~/.cache/pypoetry/virtualenvs/lol-data-rest-api-m4zklELf-py3.10/bin/python ~/.vscode-server/extensions/ms-python.python-2022.2.1924087327/pythonFiles/testing_tools/run_adapter.py discover pytest -- --rootdir . --cache-clear --runxfail -s rest_api/tests
[{"rootid": ".", "root": "/home/tolki/development/mobalab/mobalab_backend", "parents": [{"id": "./rest_api", "kind": "folder", "name": "rest_api", "parentid": ".", "relpath": "./rest_api"}, {"id": "./rest_api/tests", "kind": "folder", "name": "tests", "parentid": "./rest_api", "relpath": "./rest_api/tests"}, {"id": "./rest_api/tests/test_games.py", "kind": "file", "name": "test_games.py", "parentid": "./rest_api/tests", "relpath": "./rest_api/tests/test_games.py"}, {"id": "./rest_api/tests/test_games.py::test_add_note", "kind": "function", "name": "test_add_note", "parentid": "./rest_api/tests/test_games.py"}, {"id": "./rest_api/tests/test_games.py::test_delete_riot_game", "kind": "function", "name": "test_delete_riot_game", "parentid": "./rest_api/tests/test_games.py"}, {"id": "./rest_api/tests/test_games.py::test_get_game_champion", "kind": "function", "name": "test_get_game_champion", "parentid": "./rest_api/tests/test_games.py"}, {"id": "./rest_api/tests/test_games.py::test_insert_and_delete_game", "kind": "function", "name": "test_insert_and_delete_game", "parentid": "./rest_api/tests/test_games.py"}, {"id": "./rest_api/tests/test_games.py::test_update_game", "kind": "function", "name": "test_update_game", "parentid": "./rest_api/tests/test_games.py"}, {"id": "./rest_api/tests/test_get_game_details.py", "kind": "file", "name": "test_get_game_details.py", "parentid": "./rest_api/tests", "relpath": "./rest_api/tests/test_get_game_details.py"}, {"id": "./rest_api/tests/test_get_game_details.py::test_get_all_kills", "kind": "function", "name": "test_get_all_kills", "parentid": "./rest_api/tests/test_get_game_details.py"}, {"id": "./rest_api/tests/test_get_game_details.py::test_get_game_building_kills", "kind": "function", "name": "test_get_game_building_kills", "parentid": "./rest_api/tests/test_get_game_details.py"}, {"id": "./rest_api/tests/test_get_game_details.py::test_get_game_epic_monsters_kills", "kind": "function", "name": "test_get_game_epic_monsters_kills", "parentid": "./rest_api/tests/test_get_game_details.py"}, {"id": "./rest_api/tests/test_get_game_details.py::test_get_game_gold", "kind": "function", "name": "test_get_game_gold", "parentid": "./rest_api/tests/test_get_game_details.py"}, {"id": "./rest_api/tests/test_get_game_details.py::test_get_game_kills", "kind": "function", "name": "test_get_game_kills", "parentid": "./rest_api/tests/test_get_game_details.py"},
(...)
But in the OUTPUT/Python tab the process is stuck and never finds tests.
If I forcefully stop it, the logs are:
[ERROR 2022-2-8 18:31:46.477]: Cancelled discovering pytest tests:
SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at a.runTestDiscovery (/home/tolki/.vscode-server/extensions/ms-python.python-2022.2.1924087327/out/client/extension.js:85:82661)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async Promise.all (index 0)
at E.refreshTestData (/home/tolki/.vscode-server/extensions/ms-python.python-2022.2.1924087327/out/client/extension.js:85:94259)
at v.refreshTestDataInternal (/home/tolki/.vscode-server/extensions/ms-python.python-2022.2.1924087327/out/client/extension.js:85:85653)
at async Promise.all (index 0)
at v.resolveChildren (/home/tolki/.vscode-server/extensions/ms-python.python-2022.2.1924087327/out/client/extension.js:85:86988) {
stdout: ''
}
Interestingly, the log error looks to be 1 month in the past for some reason.
Steps to reproduce:
- Launch VS Code
- No Python tests :(
Diagnostic data
- Python version (& distribution if applicable, e.g. Anaconda): 3.10.1
- Type of virtual environment used (e.g. conda, venv, virtualenv, etc.): Poetry
- Value of the
python.languageServersetting: Default
User Settings
defaultLS: {"defaultLSType":"Pylance"}
downloadLanguageServer: true
envFile: "<placeholder>"
venvPath: "<placeholder>"
venvFolders: "<placeholder>"
condaPath: "<placeholder>"
pipenvPath: "<placeholder>"
poetryPath: "<placeholder>"
languageServer: "Pylance"
linting
• enabled: true
• cwd: "<placeholder>"
• Flake8Args: "<placeholder>"
• flake8Enabled: false
• flake8Path: "<placeholder>"
• lintOnSave: true
• banditArgs: "<placeholder>"
• banditEnabled: false
• banditPath: "<placeholder>"
• mypyArgs: "<placeholder>"
• mypyEnabled: false
• mypyPath: "<placeholder>"
• pycodestyleArgs: "<placeholder>"
• pycodestyleEnabled: false
• pycodestylePath: "<placeholder>"
• prospectorArgs: "<placeholder>"
• prospectorEnabled: false
• prospectorPath: "<placeholder>"
• pydocstyleArgs: "<placeholder>"
• pydocstyleEnabled: false
• pydocstylePath: "<placeholder>"
• pylamaArgs: "<placeholder>"
• pylamaEnabled: false
• pylamaPath: "<placeholder>"
• pylintArgs: "<placeholder>"
• pylintPath: "<placeholder>"
sortImports
• args: "<placeholder>"
• path: "<placeholder>"
formatting
• autopep8Args: "<placeholder>"
• autopep8Path: "<placeholder>"
• provider: "black"
• blackArgs: "<placeholder>"
• blackPath: "<placeholder>"
• yapfArgs: "<placeholder>"
• yapfPath: "<placeholder>"
testing
• cwd: "<placeholder>"
• debugPort: 3000
• nosetestArgs: "<placeholder>"
• nosetestsEnabled: undefined
• nosetestPath: "<placeholder>"
• promptToConfigure: true
• pytestArgs: "<placeholder>"
• pytestEnabled: true
• pytestPath: "<placeholder>"
• unittestArgs: "<placeholder>"
• unittestEnabled: false
• autoTestDiscoverOnSaveEnabled: true
terminal
• activateEnvironment: true
• executeInFileDir: "<placeholder>"
• launchArgs: "<placeholder>"
experiments
• enabled: true
• optInto: []
• optOutFrom: []
insidersChannel: "off"
tensorBoard
• logDirectory: "<placeholder>"
Extension version: 2022.2.1924087327
VS Code version: Code 1.65.0 (b5205cc8eb4fbaa726835538cd82372cc0222d43, 2022-03-02T11:12:08.962Z)
OS version: Windows_NT x64 10.0.22000
Restricted Mode: No
Remote OS version: Linux x64 5.10.16.3-microsoft-standard-WSL2
System Info
| Item | Value |
|---|---|
| CPUs | AMD Ryzen 7 5800X 8-Core Processor (16 x 3793) |
| GPU Status | 2d_canvas: enabled gpu_compositing: enabled multiple_raster_threads: enabled_on oop_rasterization: enabled opengl: enabled_on rasterization: enabled skia_renderer: enabled_on video_decode: enabled vulkan: disabled_off webgl: enabled webgl2: enabled |
| Load (avg) | undefined |
| Memory (System) | 31.90GB (12.93GB free) |
| Process Argv | --crash-reporter-id 0b342376-bcbb-4c08-9c59-05e04abdb7b7 |
| Screen Reader | no |
| VM | 0% |
| Item | Value |
|---|---|
| Remote | WSL: Ubuntu |
| OS | Linux x64 5.10.16.3-microsoft-standard-WSL2 |
| CPUs | AMD Ryzen 7 5800X 8-Core Processor (16 x 3792) |
| Memory (System) | 15.58GB (8.76GB free) |
| VM | 0% |
A/B Experiments
vsliv368cf:30146710
vsreu685:30147344
python383:30185418
vspor879:30202332
vspor708:30202333
vspor363:30204092
pythonvspyl392:30443607
pythontb:30283811
pythonvspyt551cf:30345471
pythonptprofiler:30281270
vshan820:30294714
vstes263:30335439
vscorecescf:30445987
pythondataviewer:30285071
vscod805cf:30301675
pythonvspyt200:30340761
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
vsaa593cf:30376535
vsc1dst:30438360
pythonvs932:30410667
wslgetstarted:30449410
vsclayoutctrt:30448491
dsvsc009:30440023
pythonvspyt640:30442238
vsbas813:30436447
vscscmwlcmt:30438805
vscgsvidc:30447482
helix:30440343
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area-testingbugIssue identified by VS Code Team member as probable bugIssue identified by VS Code Team member as probable bugneeds PRReady to be worked onReady to be worked onverifiedVerification succeededVerification succeeded
Activity
kimadeline commentedon Mar 8, 2022
Hi Tolki (@mrtolkien), thank you for reaching out.
Do you have a sample repo I could use to try and replicate your issue?
Thanks!
[-]Pytest discovery stuck i[/-][+]Pytest discovery stuck in Output panel[/+]mrtolkien commentedon Mar 9, 2022
This is happening in a private monorepo that has both Jest and Pytest suites configured. The python interpreter is built with poetry and properly gets activated when opening the terminal.
Jest and Pytest used to cohabitate peacefully, but now pytests discovery freezes forever with no feedback on logging.
I'm not entirely sure how to recreate a similar repo to try and reproduce the problem, especially since there's no feedback from the extension. Is it possible to run a debugger attached to it?
mrtolkien commentedon Mar 11, 2022
Still facing this issue, but it's intermittent. Sometimes I'll start VS Code and it'll properly pick up the tests, sometimes it won't.
But most of the time it just stays stuck, with the following feedback in
OUTPUT/Python:I'm also seeing nothing in the Extensions Log Folder, it's just frozen there forever and impossible to debug. I wish I could give more information honestly, but the exact incriminating command runs perfectly in the terminal already...
mrtolkien commentedon Mar 11, 2022
I have installed this extension and it finds and runs my tests properly:
https://marketplace.visualstudio.com/items?itemName=LittleFoxTeam.vscode-python-test-adapter
It relies on the same settings coming from
python.testingso it's not a configuration issue.The repo is very big as it's a monorep containing both Typescrip and Python projects, could that be an issue?
kimadeline commentedon Apr 1, 2022
Hi Tolki (@mrtolkien), sorry for the delay!
Maybe?
What is the output if you run pytest in the terminal (
python -m pytest --rootdir . -s --cache-clear rest_api/tests)?mrtolkien commentedon Apr 3, 2022
pytestruns perfectly in the terminal. Runningpython -m pytest --rootdir . -s --cache-clear rest_api/testsworks.Even the test discovery command works with the python
2022.04extension:~/.cache/pypoetry/virtualenvs/lol-data-rest-api-m4zklELf-py3.9/bin/python ~/.vscode-server/extensions/ms-python.python-2022.4.0/pythonFiles/testing_tools/run_adapter.py discover pytest -- --rootdir . -s --cache-clear .That's what's weird, everything works from a terminal, but for some reason the extension is stuck forever. Is it trying to index files in huge folders, like
node_modules? I have added it to mynorecursedirsinpytest.inibut it did not have any impact.13 remaining items
krishnap commentedon Aug 25, 2022
I ran into this issue and another colleague did as well. In our case, we used to see
abort trap: 6when python test discovery was run due to missing openssl libraries in the path, which would show up as the unparsable json error that was reported at the top of the issue. After we put the libraries in the path (as below), things started working again for us.karthiknadig commentedon Sep 15, 2022
We are working on a
pytestadapter that does not interfere with pytests own detection. The current test adapter we have seems to be interacting with pytest in a way where it can cause errors when parsing JSON output. (Tracking item: #19791 )I will add this issue to that task for verification when it is done.
eleanorjboyd commentedon Jun 22, 2023
Hello! We have just finished our testing rewrite and are beginning the roll out to users. I have tested this issue with the re-write and I am not longer reproducing the bug! I used the minimal repro from Matthew Griffiths (@matthewghgriffiths).
If any of you would like to try it yourself, you need to be on vscode insiders and then add this setting to your users
settings.json"python.experiments.optInto": ["pythonTestAdapter"]. We are in the processes of switching all users to the rewrite but are doing so incrementally so if you do not have insiders, watch our release notes to get updated on when it will begin to hit stable. Let me know if it doesn’t work for you and we can re-open this issue. Thanks!stefanbschneider commentedon Jun 29, 2023
Eleanor Boyd (@eleanorjboyd) Great, thank you! With the new, experimental test adapter the test discovery worked quickly!
Note that I also had to set
"python.experiments.enabled": true,in the settings, which I had previously set to false.I have 2 repos with tests open in my workspace. With the old test adapter, the tests from repo A were loaded without issue but the test discover for repo B was running forever. Strangely, with the new, experimental adapter, the tests from B are discovered quickly, but I get a test discovery error for repo A:
Not sure what to do with this? Running
pytest --collect-onlyin a terminal works fine, so I don't know what the test discovery error is about.Also, if I try to run tests from repo B, which are now discovered quickly with the new adapter, I get new errors about unclosed sockets, which I did not get before:
Not sure if all of these are related; just posting any info that may be useful.
stefanbschneider commentedon Jun 29, 2023
My bad: I could resolve my issues with test discovery and running tests, simply by selecting: "Python: Configure Tests" from the command palette. Here I could select where to search for tests. Now test discovery works quickly without the experimental adapter.
eleanorjboyd commentedon Jul 7, 2023
Great! Glad it got resolved!