Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

yml test file breaks pytest test discovery #22668

Open
Tinche opened this issue Dec 17, 2023 · 6 comments
Open

yml test file breaks pytest test discovery #22668

Tinche opened this issue Dec 17, 2023 · 6 comments
Assignees
Labels
area-testing info-needed Issue requires more information from poster triage-needed Needs assignment to the proper sub-team

Comments

@Tinche
Copy link

Tinche commented Dec 17, 2023

Howdy.

I'm using pytest for my project. Recently I've started using the pytest mypy plugins plugin to write some of my tests as Mypy snippets in a .yml file. So my test directory now has a bunch of .py files and one .yml file. This yml file is properly converted into test cases by pytest and this particular plugin.

But it looks like the presence of this file breaks VS Code test collection. When this file is present, I don't see tests from subdirectories of tests/ in the Testing tab. If I remove the file, all test cases get shown.

Output with the file present:

2023-12-17 17:11:15.454 [info] Discover tests for workspace name: uapi - uri: /Users/tintvrtkovic/pg/uapi
2023-12-17 17:11:15.454 [info] Running discovery for pytest using the new test adapter.
2023-12-17 17:11:15.454 [info] All environment variables set for pytest discovery for workspace /Users/tintvrtkovic/pg/uapi: {"COLORFGBG":"15;0","COLORTERM":"truecolor","COMMAND_MODE":"unix2003","ELECTRON_NO_ATTACH_CONSOLE":"1","GOPATH":"/Users/tintvrtkovic/gopath","HOME":"/Users/tintvrtkovic","IMG_PREFIX":"129994418504.dkr.ecr.us-east-1.amazonaws.com","ITERM_PROFILE":"Default","ITERM_SESSION_ID":"w0t3p0:64EA92FB-C33C-48EE-A34E-17AB15A4D1F6","LC_CTYPE":"UTF-8","LC_TERMINAL":"iTerm2","LC_TERMINAL_VERSION":"3.4.19","LOGNAME":"tintvrtkovic","MallocNanoZone":"0","NVM_DIR":"/Users/tintvrtkovic/.nvm","ORIGINAL_XDG_CURRENT_DESKTOP":"undefined","PWD":"/Users/tintvrtkovic/pg/uapi","PYTHONBREAKPOINT":"pudb.set_trace","SHELL":"/usr/local/bin/fish","SHLVL":"3","SSH_AUTH_SOCK":"/private/tmp/com.apple.launchd.AjloOov5Nl/Listeners","STARSHIP_SESSION_KEY":"2131026259110299","STARSHIP_SHELL":"fish","TERM":"xterm-256color","TERM_PROGRAM":"iTerm.app","TERM_PROGRAM_VERSION":"3.4.19","TERM_SESSION_ID":"w0t3p0:64EA92FB-C33C-48EE-A34E-17AB15A4D1F6","TMPDIR":"/var/folders/n_/j8ym0tx13cn9jyt_bfz7gz7c0000gn/T/","USER":"tintvrtkovic","VIRTUAL_ENV":"/Users/tintvrtkovic/pg/uapi/.venv","VSCODE_AMD_ENTRYPOINT":"vs/workbench/api/node/extensionHostProcess","VSCODE_CLI":"1","VSCODE_CODE_CACHE_PATH":"/Users/tintvrtkovic/Library/Application Support/Code/CachedData/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2","VSCODE_CRASH_REPORTER_PROCESS_TYPE":"extensionHost","VSCODE_CWD":"/Users/tintvrtkovic/pg/uapi","VSCODE_HANDLES_UNCAUGHT_ERRORS":"true","VSCODE_IPC_HOOK":"/Users/tintvrtkovic/Library/Application Support/Code/1.85-main.sock","VSCODE_NLS_CONFIG":"{\"locale\":\"en-gb\",\"osLocale\":\"en-gb\",\"availableLanguages\":{},\"_languagePackSupport\":true}","VSCODE_PID":"75681","XPC_FLAGS":"0x0","XPC_SERVICE_NAME":"application.com.microsoft.VSCode.123268238.123268244.86A054B9-895B-4791-AB24-518BD0CF1970","_OLD_VIRTUAL_PATH":"/usr/local/opt/terraform@0.13/bin:/Users/tintvrtkovic/.local/bin:/Users/tintvrtkovic/.fastlane/bin:/Users/tintvrtkovic/.cargo/bin:/Users/tintvrtkovic/.local/bin:/Users/tintvrtkovic/.fastlane/bin:/Users/tintvrtkovic/.cargo/bin:/Users/tintvrtkovic/.local/share/nvm/v16.13.1/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands","__CFBundleIdentifier":"com.microsoft.VSCode","__CF_USER_TEXT_ENCODING":"0x1F5:0x0:0x2","nvm_current_version":"v16.13.1","ELECTRON_RUN_AS_NODE":"1","PATH":"/Users/tintvrtkovic/pg/uapi/.venv/bin:/usr/local/opt/terraform@0.13/bin:/Users/tintvrtkovic/.local/bin:/Users/tintvrtkovic/.fastlane/bin:/Users/tintvrtkovic/.cargo/bin:/Users/tintvrtkovic/.local/bin:/Users/tintvrtkovic/.fastlane/bin:/Users/tintvrtkovic/.cargo/bin:/Users/tintvrtkovic/.local/share/nvm/v16.13.1/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands","PYTHONPATH":"/Users/tintvrtkovic/.vscode/extensions/ms-python.python-2023.22.1/pythonFiles","TEST_UUID":"2572a88a-64fa-4416-87d2-eebae80d2678","TEST_PORT":"55170"} 

2023-12-17 17:11:15.457 [info] > ./.venv/bin/python -m pytest -p vscode_pytest --collect-only tests
2023-12-17 17:11:15.457 [info] cwd: .
2023-12-17 17:11:16.238 [info] ============================= test session starts ==============================
platform darwin -- Python 3.11.3, pytest-7.4.3, pluggy-1.3.0

2023-12-17 17:11:16.241 [info] rootdir: /Users/tintvrtkovic/pg/uapi
configfile: pyproject.toml
plugins: anyio-4.0.0, pudb-0.7.0, mypy-plugins-3.0.0, asyncio-0.21.1
asyncio: mode=Mode.AUTO

2023-12-17 17:11:16.603 [info] collected 465 items

2023-12-17 17:11:16.603 [info] 
<Package tests>
  <Module test_attrs.py>
    <Function test_model[aiohttp]>
    <Function test_model_wrong_content_type[aiohttp]>
    <Function test_model_error[aiohttp]>
    <Function test_patch_custom_loader_no_ct[aiohttp]>
    <Function test_model_custom_error[aiohttp]>
    <Function test_attrs_union[aiohttp]>
    <Function test_attrs_union_nocontent[aiohttp]>
    <Function test_attrs_union_none[aiohttp]>
    <Function test_generic_model[aiohttp]>
    <Function test_dictionary_models[aiohttp]>
    <Function test_datetime_models[aiohttp]>
  <Module test_composition.py>
    <Function test_route_name[aiohttp]>
    <Function test_request_method[aiohttp]>
  <Module test_cookies.py>
    <Function test_put_cookie[aiohttp]>
    <Function test_put_cookie_optional[aiohttp]>
  <Module test_delete.py>
    <Function test_delete_response_header[aiohttp]>

2023-12-17 17:11:16.603 [info]   <Module test_exceptions.py>
    <Function test_attrs_exception[aiohttp]>
  <Module test_forms.py>
    <Function test_simple_form[aiohttp]>
    <Function test_wrong_content_type[aiohttp]>
    <Function test_validation_failure[aiohttp]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[aiohttp]>
    <Function test_no_body_native_response_post[aiohttp]>
    <Function test_native_resp_subclass[aiohttp]>
  <Module test_get.py>
    <Function test_index[aiohttp]>
    <Function test_query_parameter_unannotated[aiohttp]>
    <Function test_query_parameter_string[aiohttp]>
    <Function test_query_parameter[aiohttp]>
    <Function test_query_parameter_default[aiohttp]>
    <Function test_response_bytes[aiohttp]>
    <Function test_response_model[aiohttp]>
    <Function test_response_model_custom_status[aiohttp]>
    <Function test_user_response_class[aiohttp]>
2023-12-17 17:11:16.603 [info] 
  <Module test_head.py>
    <Function test_head_exc[aiohttp]>
  <Module test_headers.py>
    <Function test_simple_header[aiohttp]>
    <Function test_missing_header[aiohttp]>
    <Function test_header_with_str_default[aiohttp]>
    <Function test_header_with_default[aiohttp]>
    <Function test_header_name_override[aiohttp]>
  <Module test_options.py>
    <Function test_head_exc[aiohttp]>
  <Module test_patch.py>
    <Function test_patch_cookie[aiohttp]>
  <Module test_path.py>
    <Function test_path_parameter[aiohttp]>
    <Function test_path_string[aiohttp]>
  <Module test_post.py>
    <Function test_hello[aiohttp]>

2023-12-17 17:11:16.604 [info]     <Function test_no_body_no_response_post[aiohttp]>
    <Function test_201[aiohttp]>
    <Function test_multiple[aiohttp]>
  <Module test_put.py>
    <Function test_put_custom_loader[aiohttp]>
  <Module test_query.py>
    <Function test_query_post[aiohttp]>
  <Module test_subapps.py>
    <Function test_subapp[aiohttp]>

2023-12-17 17:11:16.604 [info]   <Module test_attrs.py>
    <Function test_model[flask]>
    <Function test_model_wrong_content_type[flask]>
    <Function test_model_error[flask]>
    <Function test_patch_custom_loader_no_ct[flask]>
    <Function test_model_custom_error[flask]>
    <Function test_attrs_union[flask]>
    <Function test_attrs_union_nocontent[flask]>
    <Function test_attrs_union_none[flask]>
    <Function test_generic_model[flask]>
    <Function test_dictionary_models[flask]>
    <Function test_datetime_models[flask]>

2023-12-17 17:11:16.604 [info]   <Module test_composition.py>
    <Function test_route_name[flask]>
    <Function test_request_method[flask]>
  <Module test_cookies.py>
    <Function test_put_cookie[flask]>
    <Function test_put_cookie_optional[flask]>
  <Module test_delete.py>
    <Function test_delete_response_header[flask]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[flask]>
  <Module test_forms.py>
    <Function test_simple_form[flask]>

2023-12-17 17:11:16.604 [info]     <Function test_wrong_content_type[flask]>
    <Function test_validation_failure[flask]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[flask]>
    <Function test_no_body_native_response_post[flask]>
    <Function test_native_resp_subclass[flask]>
  <Module test_get.py>
    <Function test_index[flask]>
    <Function test_query_parameter_unannotated[flask]>
    <Function test_query_parameter_string[flask]>
    <Function test_query_parameter[flask]>
    <Function test_query_parameter_default[flask]>
    <Function test_response_bytes[flask]>
    <Function test_response_model[flask]>
    <Function test_response_model_custom_status[flask]>
    <Function test_user_response_class[flask]>
2023-12-17 17:11:16.605 [info] 
  <Module test_head.py>
    <Function test_head_exc[flask]>
  <Module test_headers.py>
    <Function test_simple_header[flask]>
    <Function test_missing_header[flask]>
    <Function test_header_with_str_default[flask]>
    <Function test_header_with_default[flask]>
    <Function test_header_name_override[flask]>
2023-12-17 17:11:16.605 [info] 
  <Module test_options.py>
    <Function test_head_exc[flask]>
  <Module test_patch.py>
    <Function test_patch_cookie[flask]>
  <Module test_path.py>
    <Function test_path_parameter[flask]>
    <Function test_path_string[flask]>
  <Module test_post.py>
    <Function test_hello[flask]>

2023-12-17 17:11:16.605 [info]     <Function test_no_body_no_response_post[flask]>
    <Function test_201[flask]>
    <Function test_multiple[flask]>
  <Module test_put.py>
    <Function test_put_custom_loader[flask]>
  <Module test_query.py>
    <Function test_query_post[flask]>
  <Module test_subapps.py>
    <Function test_subapp[flask]>
  <Module test_attrs.py>
    <Function test_model[quart]>
    <Function test_model_wrong_content_type[quart]>
    <Function test_model_error[quart]>
    <Function test_patch_custom_loader_no_ct[quart]>
    <Function test_model_custom_error[quart]>
    <Function test_attrs_union[quart]>
    <Function test_attrs_union_nocontent[quart]>
    <Function test_attrs_union_none[quart]>

2023-12-17 17:11:16.605 [info]     <Function test_generic_model[quart]>
    <Function test_dictionary_models[quart]>
    <Function test_datetime_models[quart]>
  <Module test_composition.py>
    <Function test_route_name[quart]>
    <Function test_request_method[quart]>
  <Module test_cookies.py>
    <Function test_put_cookie[quart]>
    <Function test_put_cookie_optional[quart]>
  <Module test_delete.py>
    <Function test_delete_response_header[quart]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[quart]>
  <Module test_forms.py>
    <Function test_simple_form[quart]>
    <Function test_wrong_content_type[quart]>
2023-12-17 17:11:16.605 [info] 
    <Function test_validation_failure[quart]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[quart]>
    <Function test_no_body_native_response_post[quart]>
    <Function test_native_resp_subclass[quart]>
  <Module test_get.py>
    <Function test_index[quart]>
    <Function test_query_parameter_unannotated[quart]>
    <Function test_query_parameter_string[quart]>
    <Function test_query_parameter[quart]>
    <Function test_query_parameter_default[quart]>
    <Function test_response_bytes[quart]>
    <Function test_response_model[quart]>
    <Function test_response_model_custom_status[quart]>
    <Function test_user_response_class[quart]>
  <Module test_head.py>
    <Function test_head_exc[quart]>
  <Module test_headers.py>
    <Function test_simple_header[quart]>

2023-12-17 17:11:16.606 [info]     <Function test_missing_header[quart]>
    <Function test_header_with_str_default[quart]>
    <Function test_header_with_default[quart]>
    <Function test_header_name_override[quart]>
  <Module test_options.py>
    <Function test_head_exc[quart]>
  <Module test_patch.py>
    <Function test_patch_cookie[quart]>
  <Module test_path.py>
    <Function test_path_parameter[quart]>
    <Function test_path_string[quart]>
  <Module test_post.py>
    <Function test_hello[quart]>
    <Function test_no_body_no_response_post[quart]>
    <Function test_201[quart]>
    <Function test_multiple[quart]>
  <Module test_put.py>
    <Function test_put_custom_loader[quart]>
  <Module test_query.py>
    <Function test_query_post[quart]>
2023-12-17 17:11:16.606 [info] 
  <Module test_subapps.py>
    <Function test_subapp[quart]>
  <Module test_attrs.py>
    <Function test_model[starlette]>
    <Function test_model_wrong_content_type[starlette]>
    <Function test_model_error[starlette]>
    <Function test_patch_custom_loader_no_ct[starlette]>
    <Function test_model_custom_error[starlette]>
    <Function test_attrs_union[starlette]>
    <Function test_attrs_union_nocontent[starlette]>
    <Function test_attrs_union_none[starlette]>
    <Function test_generic_model[starlette]>

2023-12-17 17:11:16.606 [info]     <Function test_dictionary_models[starlette]>
    <Function test_datetime_models[starlette]>
  <Module test_composition.py>
    <Function test_route_name[starlette]>
    <Function test_request_method[starlette]>
  <Module test_cookies.py>
    <Function test_put_cookie[starlette]>
    <Function test_put_cookie_optional[starlette]>
  <Module test_delete.py>
    <Function test_delete_response_header[starlette]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[starlette]>
  <Module test_forms.py>
    <Function test_simple_form[starlette]>
    <Function test_wrong_content_type[starlette]>
    <Function test_validation_failure[starlette]>
  <Module test_framework_escape_hatch.py>

2023-12-17 17:11:16.606 [info]     <Function test_framework_req[starlette]>
    <Function test_no_body_native_response_post[starlette]>
    <Function test_native_resp_subclass[starlette]>
  <Module test_get.py>
    <Function test_index[starlette]>
    <Function test_query_parameter_unannotated[starlette]>
    <Function test_query_parameter_string[starlette]>
    <Function test_query_parameter[starlette]>
    <Function test_query_parameter_default[starlette]>
    <Function test_response_bytes[starlette]>
    <Function test_response_model[starlette]>
    <Function test_response_model_custom_status[starlette]>

2023-12-17 17:11:16.606 [info]     <Function test_user_response_class[starlette]>
  <Module test_head.py>
    <Function test_head_exc[starlette]>
  <Module test_headers.py>
    <Function test_simple_header[starlette]>
    <Function test_missing_header[starlette]>
    <Function test_header_with_str_default[starlette]>
    <Function test_header_with_default[starlette]>
    <Function test_header_name_override[starlette]>
  <Module test_options.py>
    <Function test_head_exc[starlette]>
  <Module test_patch.py>
    <Function test_patch_cookie[starlette]>
  <Module test_path.py>

2023-12-17 17:11:16.607 [info]     <Function test_path_parameter[starlette]>
    <Function test_path_string[starlette]>
  <Module test_post.py>
    <Function test_hello[starlette]>
    <Function test_no_body_no_response_post[starlette]>
    <Function test_201[starlette]>
    <Function test_multiple[starlette]>
  <Module test_put.py>
    <Function test_put_custom_loader[starlette]>
  <Module test_query.py>
    <Function test_query_post[starlette]>
  <Module test_subapps.py>
    <Function test_subapp[starlette]>
  <Module test_attrs.py>
    <Function test_model[django]>
    <Function test_model_wrong_content_type[django]>
    <Function test_model_error[django]>
    <Function test_patch_custom_loader_no_ct[django]>

2023-12-17 17:11:16.607 [info]     <Function test_model_custom_error[django]>
    <Function test_attrs_union[django]>
    <Function test_attrs_union_nocontent[django]>
    <Function test_attrs_union_none[django]>
    <Function test_generic_model[django]>
    <Function test_dictionary_models[django]>
    <Function test_datetime_models[django]>
  <Module test_composition.py>
    <Function test_route_name[django]>
    <Function test_request_method[django]>
  <Module test_cookies.py>
    <Function test_put_cookie[django]>
    <Function test_put_cookie_optional[django]>
  <Module test_delete.py>
    <Function test_delete_response_header[django]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[django]>
  <Module test_forms.py>
    <Function test_simple_form[django]>
    <Function test_wrong_content_type[django]>

2023-12-17 17:11:16.607 [info]     <Function test_validation_failure[django]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[django]>
    <Function test_no_body_native_response_post[django]>
    <Function test_native_resp_subclass[django]>
  <Module test_get.py>
    <Function test_index[django]>
    <Function test_query_parameter_unannotated[django]>
    <Function test_query_parameter_string[django]>
    <Function test_query_parameter[django]>
    <Function test_query_parameter_default[django]>
    <Function test_response_bytes[django]>
    <Function test_response_model[django]>

2023-12-17 17:11:16.607 [info]     <Function test_response_model_custom_status[django]>
    <Function test_user_response_class[django]>
  <Module test_head.py>
    <Function test_head_exc[django]>
  <Module test_headers.py>
    <Function test_simple_header[django]>
    <Function test_missing_header[django]>
    <Function test_header_with_str_default[django]>
    <Function test_header_with_default[django]>
    <Function test_header_name_override[django]>
  <Module test_options.py>
    <Function test_head_exc[django]>
  <Module test_patch.py>
    <Function test_patch_cookie[django]>
  <Module test_path.py>
    <Function test_path_parameter[django]>
    <Function test_path_string[django]>
  <Module test_post.py>
    <Function test_hello[django]>
2023-12-17 17:11:16.607 [info] 
    <Function test_no_body_no_response_post[django]>
    <Function test_201[django]>
    <Function test_multiple[django]>
  <Module test_put.py>
    <Function test_put_custom_loader[django]>
  <Module test_query.py>
    <Function test_query_post[django]>
  <Module test_subapps.py>
    <Function test_subapp[django]>
  <Module test_shorthands.py>
    <Function test_custom_shorthand[QuartApp]>
    <Function test_custom_shorthand[AiohttpApp]>
    <Function test_custom_shorthand[StarletteApp]>
    <Function test_custom_shorthand[FlaskApp]>
    <Function test_custom_shorthand[DjangoApp]>
    <Function test_shorthand_unions>
  <YamlTestFile test_shorthands.yml>
    <YamlTestItem shorthand_str>
    <YamlTestItem shorthand_attrs>
    <YamlTestItem shorthand_unsupported>

2023-12-17 17:11:16.608 [info]     <YamlTestItem shorthand_added>
<Package login>
  <Module test_login.py>
    <Function test_login_logout>
    <Function test_session_expiry>
    <Function test_logging_out_others>
<Package openapi>
  <Module test_openapi.py>
    <Function test_get_index[aiohttp]>
    <Function test_get_index[flask]>
    <Function test_get_index[quart]>
    <Function test_get_index[starlette]>
    <Function test_get_index[django]>
    <Function test_get_path_param[aiohttp]>
    <Function test_get_path_param[flask]>
    <Function test_get_path_param[quart]>
    <Function test_get_path_param[starlette]>
    <Function test_get_path_param[django]>
    <Function test_get_query_int[aiohttp]>
    <Function test_get_query_int[flask]>
    <Function test_get_query_int[quart]>
    <Function test_get_query_int[starlette]>
    <Function test_get_query_int[django]>

2023-12-17 17:11:16.608 [info]     <Function test_get_query_default[aiohttp]>
    <Function test_get_query_default[flask]>
    <Function test_get_query_default[quart]>
    <Function test_get_query_default[starlette]>
    <Function test_get_query_default[django]>
    <Function test_get_query_unannotated[aiohttp]>
    <Function test_get_query_unannotated[flask]>
    <Function test_get_query_unannotated[quart]>
    <Function test_get_query_unannotated[starlette]>
    <Function test_get_query_unannotated[django]>
    <Function test_get_query_string[aiohttp]>
    <Function test_get_query_string[flask]>
    <Function test_get_query_string[quart]>
    <Function test_get_query_string[starlette]>
    <Function test_get_query_string[django]>
    <Function test_get_bytes[aiohttp]>
    <Function test_get_bytes[flask]>
    <Function test_get_bytes[quart]>

2023-12-17 17:11:16.608 [info]     <Function test_get_bytes[starlette]>
    <Function test_get_bytes[django]>
    <Function test_post_no_body_native_response[aiohttp]>
    <Function test_post_no_body_native_response[flask]>
    <Function test_post_no_body_native_response[quart]>
    <Function test_post_no_body_native_response[starlette]>
    <Function test_post_no_body_native_response[django]>
    <Function test_post_no_body_no_response[aiohttp]>
    <Function test_post_no_body_no_response[flask]>

2023-12-17 17:11:16.609 [info]     <Function test_post_no_body_no_response[quart]>
    <Function test_post_no_body_no_response[starlette]>
    <Function test_post_no_body_no_response[django]>
    <Function test_post_custom_status[aiohttp]>
    <Function test_post_custom_status[flask]>
    <Function test_post_custom_status[quart]>
    <Function test_post_custom_status[starlette]>
    <Function test_post_custom_status[django]>
    <Function test_post_multiple_statuses[aiohttp]>
    <Function test_post_multiple_statuses[flask]>
    <Function test_post_multiple_statuses[quart]>
    <Function test_post_multiple_statuses[starlette]>
    <Function test_post_multiple_statuses[django]>

2023-12-17 17:11:16.609 [info]     <Function test_put_cookie[aiohttp]>
    <Function test_put_cookie[flask]>
    <Function test_put_cookie[quart]>
    <Function test_put_cookie[starlette]>
    <Function test_put_cookie[django]>
    <Function test_delete[aiohttp]>
    <Function test_delete[flask]>
    <Function test_delete[quart]>
    <Function test_delete[starlette]>
    <Function test_delete[django]>
    <Function test_ignore_framework_request[aiohttp]>
    <Function test_ignore_framework_request[flask]>
    <Function test_ignore_framework_request[quart]>
    <Function test_ignore_framework_request[starlette]>
    <Function test_ignore_framework_request[django]>
    <Function test_get_injection[aiohttp]>

2023-12-17 17:11:16.609 [info]     <Function test_get_injection[flask]>
    <Function test_get_injection[quart]>
    <Function test_get_injection[starlette]>
    <Function test_get_injection[django]>
    <Function test_excluded[aiohttp]>
    <Function test_excluded[flask]>
    <Function test_excluded[quart]>
    <Function test_excluded[starlette]>
    <Function test_excluded[django]>
    <Function test_tags[aiohttp]>
    <Function test_tags[flask]>

2023-12-17 17:11:16.609 [info]     <Function test_tags[quart]>
    <Function test_tags[starlette]>
    <Function test_tags[django]>
    <Function test_user_response_class[aiohttp]>
    <Function test_user_response_class[flask]>
    <Function test_user_response_class[quart]>
    <Function test_user_response_class[starlette]>
    <Function test_user_response_class[django]>
  <Module test_openapi_attrs.py>
    <Function test_get_model[aiohttp]>
    <Function test_get_model[flask]>
    <Function test_get_model[quart]>
    <Function test_get_model[starlette]>
    <Function test_get_model[django]>
    <Function test_get_model_status[aiohttp]>
    <Function test_get_model_status[flask]>
    <Function test_get_model_status[quart]>
    <Function test_get_model_status[starlette]>
    <Function test_get_model_status[django]>

2023-12-17 17:11:16.610 [info]     <Function test_post_model[aiohttp]>
    <Function test_post_model[flask]>
    <Function test_post_model[quart]>
    <Function test_post_model[starlette]>
    <Function test_post_model[django]>
    <Function test_patch_union[aiohttp]>
    <Function test_patch_union[flask]>
    <Function test_patch_union[quart]>
    <Function test_patch_union[starlette]>
    <Function test_patch_union[django]>
    <Function test_custom_loader[aiohttp]>
    <Function test_custom_loader[flask]>
    <Function test_custom_loader[quart]>
    <Function test_custom_loader[starlette]>
    <Function test_custom_loader[django]>
    <Function test_models_same_name[aiohttp]>
    <Function test_models_same_name[flask]>
    <Function test_models_same_name[quart]>
    <Function test_models_same_name[starlette]>
    <Function test_models_same_name[django]>
    <Function test_response_models[aiohttp]>
    <Function test_response_models[flask]>
    <Function test_response_models[quart]>
    <Function test_response_models[starlette]>
    <Function test_response_models[django]>
    <Function test_response_union_none[aiohttp]>
    <Function test_response_union_none[flask]>
    <Function test_response_union_none[quart]>
    <Function test_response_union_none[starlette]>
    <Function test_response_union_none[django]>
    <Function test_model_with_literal[aiohttp]>
    <Function test_model_with_literal[flask]>
    <Function test_model_with_literal[quart]>
    <Function test_model_with_literal[starlette]>
    <Function test_model_with_literal[django]>
    <Function test_generic_model[aiohttp]>
    <Function test_generic_model[flask]>
    <Function test_generic_model[quart]>
    <Function test_generic_model[starlette]>
    <Function test_generic_model[django]>
    <Function test_generic_response_model[aiohttp]>
    <Function test_generic_response_model[flask]>
    <Function test_generic_response_model[quart]>

2023-12-17 17:11:16.611 [info]     <Function test_generic_response_model[starlette]>
    <Function test_generic_response_model[django]>
    <Function test_sum_types_model[aiohttp]>
    <Function test_sum_types_model[flask]>
    <Function test_sum_types_model[quart]>
    <Function test_sum_types_model[starlette]>
    <Function test_sum_types_model[django]>
    <Function test_dictionary_models[aiohttp]>
    <Function test_dictionary_models[flask]>
    <Function test_dictionary_models[quart]>
    <Function test_dictionary_models[starlette]>
    <Function test_dictionary_models[django]>
    <Function test_model_with_datetime[aiohttp]>
    <Function test_model_with_datetime[flask]>
    <Function test_model_with_datetime[quart]>
    <Function test_model_with_datetime[starlette]>
    <Function test_model_with_datetime[django]>
    <Function test_same_name_models>
  <Module test_openapi_composition.py>
    <Function test_route_name_and_methods[aiohttp]>
    <Function test_route_name_and_methods[flask]>
    <Function test_route_name_and_methods[quart]>
    <Function test_route_name_and_methods[starlette]>

2023-12-17 17:11:16.611 [info]     <Function test_route_name_and_methods[django]>
    <Function test_native_route_name_and_methods[aiohttp]>
    <Function test_native_route_name_and_methods[flask]>
    <Function test_native_route_name_and_methods[quart]>
    <Function test_native_route_name_and_methods[starlette]>
    <Function test_native_route_name_and_methods[django]>
  <Module test_openapi_forms.py>
    <Function test_forms[aiohttp]>
    <Function test_forms[flask]>
    <Function test_forms[quart]>
    <Function test_forms[starlette]>
    <Function test_forms[django]>
  <Module test_openapi_headers.py>
    <Function test_header[aiohttp]>
    <Function test_header[flask]>
    <Function test_header[quart]>
    <Function test_header[starlette]>
    <Function test_header[django]>
2023-12-17 17:11:16.611 [info] 
    <Function test_default_header[aiohttp]>
    <Function test_default_header[flask]>
    <Function test_default_header[quart]>
    <Function test_default_header[starlette]>
    <Function test_default_header[django]>
  <Module test_openapi_metadata.py>
    <Function test_transformers>
  <Module test_openapi_uis.py>
    <Function test_elements>
    <Function test_swagger>
    <Function test_redoc>
  <Module test_shorthands.py>
    <Function test_no_openapi>
    <Function test_has_openapi>
    <Function test_unions>
    <Function test_unions_same_content_type>

2023-12-17 17:11:16.611 [info]     <Function test_unions_same_content_type_oneof>
    <Function test_unions_of_shorthands>
<Package sessions>
  <Module test_redis_sessions.py>
    <Function test_login_logout>
    <Function test_session_expiry>
    <Function test_openapi_security>
  <Module test_secure_cookie_sessions.py>
    <Function test_login_logout[aiohttp]>
    <Function test_session_expiry[aiohttp]>
    <Function test_login_logout[flask]>
2023-12-17 17:11:16.612 [info] 
    <Function test_session_expiry[flask]>
    <Function test_login_logout[quart]>
    <Function test_session_expiry[quart]>
    <Function test_login_logout[starlette]>
    <Function test_session_expiry[starlette]>

2023-12-17 17:11:16.644 [info] Test server connected to a client.
2023-12-17 17:11:16.654 [info] ResultResolver EOT received for discovery.
2023-12-17 17:11:16.654 [info] 
========================= 465 tests collected in 0.41s =========================

2023-12-17 17:11:16.845 [info] Disposing data receiver for /Users/tintvrtkovic/pg/uapi and deleting UUID; pytest discovery.

Output without the file present:

2023-12-17 17:15:52.313 [info] Discover tests for workspace name: uapi - uri: /Users/tintvrtkovic/pg/uapi
2023-12-17 17:15:52.327 [info] Running discovery for pytest using the new test adapter.
2023-12-17 17:15:52.328 [info] All environment variables set for pytest discovery for workspace /Users/tintvrtkovic/pg/uapi: {"COLORFGBG":"15;0","COLORTERM":"truecolor","COMMAND_MODE":"unix2003","ELECTRON_NO_ATTACH_CONSOLE":"1","GOPATH":"/Users/tintvrtkovic/gopath","HOME":"/Users/tintvrtkovic","IMG_PREFIX":"129994418504.dkr.ecr.us-east-1.amazonaws.com","ITERM_PROFILE":"Default","ITERM_SESSION_ID":"w0t3p0:64EA92FB-C33C-48EE-A34E-17AB15A4D1F6","LC_CTYPE":"UTF-8","LC_TERMINAL":"iTerm2","LC_TERMINAL_VERSION":"3.4.19","LOGNAME":"tintvrtkovic","MallocNanoZone":"0","NVM_DIR":"/Users/tintvrtkovic/.nvm","ORIGINAL_XDG_CURRENT_DESKTOP":"undefined","PWD":"/Users/tintvrtkovic/pg/uapi","PYTHONBREAKPOINT":"pudb.set_trace","SHELL":"/usr/local/bin/fish","SHLVL":"3","SSH_AUTH_SOCK":"/private/tmp/com.apple.launchd.AjloOov5Nl/Listeners","STARSHIP_SESSION_KEY":"2131026259110299","STARSHIP_SHELL":"fish","TERM":"xterm-256color","TERM_PROGRAM":"iTerm.app","TERM_PROGRAM_VERSION":"3.4.19","TERM_SESSION_ID":"w0t3p0:64EA92FB-C33C-48EE-A34E-17AB15A4D1F6","TMPDIR":"/var/folders/n_/j8ym0tx13cn9jyt_bfz7gz7c0000gn/T/","USER":"tintvrtkovic","VIRTUAL_ENV":"/Users/tintvrtkovic/pg/uapi/.venv","VSCODE_AMD_ENTRYPOINT":"vs/workbench/api/node/extensionHostProcess","VSCODE_CLI":"1","VSCODE_CODE_CACHE_PATH":"/Users/tintvrtkovic/Library/Application Support/Code/CachedData/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2","VSCODE_CRASH_REPORTER_PROCESS_TYPE":"extensionHost","VSCODE_CWD":"/Users/tintvrtkovic/pg/uapi","VSCODE_HANDLES_UNCAUGHT_ERRORS":"true","VSCODE_IPC_HOOK":"/Users/tintvrtkovic/Library/Application Support/Code/1.85-main.sock","VSCODE_NLS_CONFIG":"{\"locale\":\"en-gb\",\"osLocale\":\"en-gb\",\"availableLanguages\":{},\"_languagePackSupport\":true}","VSCODE_PID":"75681","XPC_FLAGS":"0x0","XPC_SERVICE_NAME":"application.com.microsoft.VSCode.123268238.123268244.86A054B9-895B-4791-AB24-518BD0CF1970","_OLD_VIRTUAL_PATH":"/usr/local/opt/terraform@0.13/bin:/Users/tintvrtkovic/.local/bin:/Users/tintvrtkovic/.fastlane/bin:/Users/tintvrtkovic/.cargo/bin:/Users/tintvrtkovic/.local/bin:/Users/tintvrtkovic/.fastlane/bin:/Users/tintvrtkovic/.cargo/bin:/Users/tintvrtkovic/.local/share/nvm/v16.13.1/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands","__CFBundleIdentifier":"com.microsoft.VSCode","__CF_USER_TEXT_ENCODING":"0x1F5:0x0:0x2","nvm_current_version":"v16.13.1","ELECTRON_RUN_AS_NODE":"1","PATH":"/Users/tintvrtkovic/pg/uapi/.venv/bin:/usr/local/opt/terraform@0.13/bin:/Users/tintvrtkovic/.local/bin:/Users/tintvrtkovic/.fastlane/bin:/Users/tintvrtkovic/.cargo/bin:/Users/tintvrtkovic/.local/bin:/Users/tintvrtkovic/.fastlane/bin:/Users/tintvrtkovic/.cargo/bin:/Users/tintvrtkovic/.local/share/nvm/v16.13.1/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands","PYTHONPATH":"/Users/tintvrtkovic/.vscode/extensions/ms-python.python-2023.22.1/pythonFiles","TEST_UUID":"970290c6-d72c-4786-8a13-23bfc4b451f6","TEST_PORT":"55170"} 

2023-12-17 17:15:52.331 [info] > ./.venv/bin/python -m pytest -p vscode_pytest --collect-only tests
2023-12-17 17:15:52.331 [info] cwd: .
2023-12-17 17:15:53.193 [info] ============================= test session starts ==============================
platform darwin -- Python 3.11.3, pytest-7.4.3, pluggy-1.3.0

2023-12-17 17:15:53.195 [info] rootdir: /Users/tintvrtkovic/pg/uapi
configfile: pyproject.toml
plugins: anyio-4.0.0, pudb-0.7.0, mypy-plugins-3.0.0, asyncio-0.21.1
asyncio: mode=Mode.AUTO

2023-12-17 17:15:53.401 [info] collected 461 items

<Package tests>
  <Module test_attrs.py>
    <Function test_model[aiohttp]>
    <Function test_model_wrong_content_type[aiohttp]>

2023-12-17 17:15:53.401 [info]     <Function test_model_error[aiohttp]>
    <Function test_patch_custom_loader_no_ct[aiohttp]>
    <Function test_model_custom_error[aiohttp]>
    <Function test_attrs_union[aiohttp]>
    <Function test_attrs_union_nocontent[aiohttp]>
    <Function test_attrs_union_none[aiohttp]>
    <Function test_generic_model[aiohttp]>
    <Function test_dictionary_models[aiohttp]>
    <Function test_datetime_models[aiohttp]>
  <Module test_composition.py>
    <Function test_route_name[aiohttp]>
    <Function test_request_method[aiohttp]>
  <Module test_cookies.py>
    <Function test_put_cookie[aiohttp]>
    <Function test_put_cookie_optional[aiohttp]>
  <Module test_delete.py>
    <Function test_delete_response_header[aiohttp]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[aiohttp]>
  <Module test_forms.py>
    <Function test_simple_form[aiohttp]>
    <Function test_wrong_content_type[aiohttp]>
    <Function test_validation_failure[aiohttp]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[aiohttp]>
    <Function test_no_body_native_response_post[aiohttp]>
    <Function test_native_resp_subclass[aiohttp]>
  <Module test_get.py>
    <Function test_index[aiohttp]>
    <Function test_query_parameter_unannotated[aiohttp]>
    <Function test_query_parameter_string[aiohttp]>
    <Function test_query_parameter[aiohttp]>
    <Function test_query_parameter_default[aiohttp]>
    <Function test_response_bytes[aiohttp]>
2023-12-17 17:15:53.401 [info] 
    <Function test_response_model[aiohttp]>
    <Function test_response_model_custom_status[aiohttp]>
    <Function test_user_response_class[aiohttp]>
  <Module test_head.py>
    <Function test_head_exc[aiohttp]>
  <Module test_headers.py>
    <Function test_simple_header[aiohttp]>
    <Function test_missing_header[aiohttp]>
    <Function test_header_with_str_default[aiohttp]>
    <Function test_header_with_default[aiohttp]>
    <Function test_header_name_override[aiohttp]>
  <Module test_options.py>
    <Function test_head_exc[aiohttp]>
  <Module test_patch.py>
    <Function test_patch_cookie[aiohttp]>
  <Module test_path.py>
    <Function test_path_parameter[aiohttp]>
    <Function test_path_string[aiohttp]>
  <Module test_post.py>
    <Function test_hello[aiohttp]>
    <Function test_no_body_no_response_post[aiohttp]>

2023-12-17 17:15:53.401 [info]     <Function test_201[aiohttp]>
    <Function test_multiple[aiohttp]>
  <Module test_put.py>
    <Function test_put_custom_loader[aiohttp]>
  <Module test_query.py>
    <Function test_query_post[aiohttp]>
  <Module test_subapps.py>
    <Function test_subapp[aiohttp]>
  <Module test_attrs.py>
    <Function test_model[flask]>
    <Function test_model_wrong_content_type[flask]>
    <Function test_model_error[flask]>
    <Function test_patch_custom_loader_no_ct[flask]>
    <Function test_model_custom_error[flask]>
    <Function test_attrs_union[flask]>
    <Function test_attrs_union_nocontent[flask]>
    <Function test_attrs_union_none[flask]>
    <Function test_generic_model[flask]>
    <Function test_dictionary_models[flask]>
    <Function test_datetime_models[flask]>
  <Module test_composition.py>

2023-12-17 17:15:53.401 [info]     <Function test_route_name[flask]>
    <Function test_request_method[flask]>
  <Module test_cookies.py>
    <Function test_put_cookie[flask]>
    <Function test_put_cookie_optional[flask]>
  <Module test_delete.py>
    <Function test_delete_response_header[flask]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[flask]>
  <Module test_forms.py>
    <Function test_simple_form[flask]>
    <Function test_wrong_content_type[flask]>
    <Function test_validation_failure[flask]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[flask]>
    <Function test_no_body_native_response_post[flask]>
    <Function test_native_resp_subclass[flask]>
  <Module test_get.py>
    <Function test_index[flask]>
    <Function test_query_parameter_unannotated[flask]>
    <Function test_query_parameter_string[flask]>
    <Function test_query_parameter[flask]>
    <Function test_query_parameter_default[flask]>
    <Function test_response_bytes[flask]>
    <Function test_response_model[flask]>
    <Function test_response_model_custom_status[flask]>
    <Function test_user_response_class[flask]>
  <Module test_head.py>

2023-12-17 17:15:53.401 [info]     <Function test_head_exc[flask]>
  <Module test_headers.py>
    <Function test_simple_header[flask]>
    <Function test_missing_header[flask]>
    <Function test_header_with_str_default[flask]>
    <Function test_header_with_default[flask]>
    <Function test_header_name_override[flask]>
  <Module test_options.py>
    <Function test_head_exc[flask]>
  <Module test_patch.py>
    <Function test_patch_cookie[flask]>
  <Module test_path.py>
    <Function test_path_parameter[flask]>
    <Function test_path_string[flask]>
  <Module test_post.py>
    <Function test_hello[flask]>
    <Function test_no_body_no_response_post[flask]>
    <Function test_201[flask]>
    <Function test_multiple[flask]>
  <Module test_put.py>
    <Function test_put_custom_loader[flask]>
  <Module test_query.py>
    <Function test_query_post[flask]>
  <Module test_subapps.py>
    <Function test_subapp[flask]>

2023-12-17 17:15:53.402 [info]   <Module test_attrs.py>
    <Function test_model[quart]>
    <Function test_model_wrong_content_type[quart]>
    <Function test_model_error[quart]>
    <Function test_patch_custom_loader_no_ct[quart]>
    <Function test_model_custom_error[quart]>
    <Function test_attrs_union[quart]>
    <Function test_attrs_union_nocontent[quart]>
    <Function test_attrs_union_none[quart]>
    <Function test_generic_model[quart]>
    <Function test_dictionary_models[quart]>
    <Function test_datetime_models[quart]>
  <Module test_composition.py>
    <Function test_route_name[quart]>
    <Function test_request_method[quart]>
  <Module test_cookies.py>
    <Function test_put_cookie[quart]>
    <Function test_put_cookie_optional[quart]>
  <Module test_delete.py>
    <Function test_delete_response_header[quart]>

2023-12-17 17:15:53.402 [info]   <Module test_exceptions.py>
    <Function test_attrs_exception[quart]>
  <Module test_forms.py>
    <Function test_simple_form[quart]>
    <Function test_wrong_content_type[quart]>
    <Function test_validation_failure[quart]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[quart]>
    <Function test_no_body_native_response_post[quart]>
    <Function test_native_resp_subclass[quart]>
  <Module test_get.py>
    <Function test_index[quart]>
    <Function test_query_parameter_unannotated[quart]>
    <Function test_query_parameter_string[quart]>
    <Function test_query_parameter[quart]>
    <Function test_query_parameter_default[quart]>
    <Function test_response_bytes[quart]>
    <Function test_response_model[quart]>
    <Function test_response_model_custom_status[quart]>
    <Function test_user_response_class[quart]>
  <Module test_head.py>
    <Function test_head_exc[quart]>
  <Module test_headers.py>
    <Function test_simple_header[quart]>
    <Function test_missing_header[quart]>
    <Function test_header_with_str_default[quart]>
    <Function test_header_with_default[quart]>
    <Function test_header_name_override[quart]>
  <Module test_options.py>
    <Function test_head_exc[quart]>
  <Module test_patch.py>
    <Function test_patch_cookie[quart]>
  <Module test_path.py>
    <Function test_path_parameter[quart]>
    <Function test_path_string[quart]>
  <Module test_post.py>
    <Function test_hello[quart]>
    <Function test_no_body_no_response_post[quart]>
    <Function test_201[quart]>
    <Function test_multiple[quart]>
  <Module test_put.py>
    <Function test_put_custom_loader[quart]>
  <Module test_query.py>
    <Function test_query_post[quart]>
  <Module test_subapps.py>
    <Function test_subapp[quart]>
  <Module test_attrs.py>
    <Function test_model[starlette]>
    <Function test_model_wrong_content_type[starlette]>
    <Function test_model_error[starlette]>
    <Function test_patch_custom_loader_no_ct[starlette]>
    <Function test_model_custom_error[starlette]>

2023-12-17 17:15:53.402 [info]     <Function test_attrs_union[starlette]>
    <Function test_attrs_union_nocontent[starlette]>
    <Function test_attrs_union_none[starlette]>
    <Function test_generic_model[starlette]>
    <Function test_dictionary_models[starlette]>
    <Function test_datetime_models[starlette]>
  <Module test_composition.py>
    <Function test_route_name[starlette]>
    <Function test_request_method[starlette]>
  <Module test_cookies.py>
    <Function test_put_cookie[starlette]>
    <Function test_put_cookie_optional[starlette]>
  <Module test_delete.py>
    <Function test_delete_response_header[starlette]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[starlette]>
  <Module test_forms.py>
    <Function test_simple_form[starlette]>
    <Function test_wrong_content_type[starlette]>
    <Function test_validation_failure[starlette]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[starlette]>
    <Function test_no_body_native_response_post[starlette]>
    <Function test_native_resp_subclass[starlette]>
  <Module test_get.py>
    <Function test_index[starlette]>
    <Function test_query_parameter_unannotated[starlette]>
    <Function test_query_parameter_string[starlette]>
    <Function test_query_parameter[starlette]>
    <Function test_query_parameter_default[starlette]>
    <Function test_response_bytes[starlette]>
    <Function test_response_model[starlette]>
    <Function test_response_model_custom_status[starlette]>

2023-12-17 17:15:53.402 [info]     <Function test_user_response_class[starlette]>
  <Module test_head.py>
    <Function test_head_exc[starlette]>
  <Module test_headers.py>
    <Function test_simple_header[starlette]>
    <Function test_missing_header[starlette]>
    <Function test_header_with_str_default[starlette]>
    <Function test_header_with_default[starlette]>
    <Function test_header_name_override[starlette]>
  <Module test_options.py>
    <Function test_head_exc[starlette]>
  <Module test_patch.py>
    <Function test_patch_cookie[starlette]>
  <Module test_path.py>
    <Function test_path_parameter[starlette]>
    <Function test_path_string[starlette]>
  <Module test_post.py>
    <Function test_hello[starlette]>
    <Function test_no_body_no_response_post[starlette]>
    <Function test_201[starlette]>
    <Function test_multiple[starlette]>
  <Module test_put.py>

2023-12-17 17:15:53.402 [info]     <Function test_put_custom_loader[starlette]>
  <Module test_query.py>
    <Function test_query_post[starlette]>
  <Module test_subapps.py>
    <Function test_subapp[starlette]>
  <Module test_attrs.py>
    <Function test_model[django]>
    <Function test_model_wrong_content_type[django]>
    <Function test_model_error[django]>
    <Function test_patch_custom_loader_no_ct[django]>
    <Function test_model_custom_error[django]>
    <Function test_attrs_union[django]>
    <Function test_attrs_union_nocontent[django]>
    <Function test_attrs_union_none[django]>
    <Function test_generic_model[django]>
    <Function test_dictionary_models[django]>
    <Function test_datetime_models[django]>
  <Module test_composition.py>
    <Function test_route_name[django]>
    <Function test_request_method[django]>
  <Module test_cookies.py>
    <Function test_put_cookie[django]>
    <Function test_put_cookie_optional[django]>
  <Module test_delete.py>

2023-12-17 17:15:53.403 [info]     <Function test_delete_response_header[django]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[django]>
  <Module test_forms.py>
    <Function test_simple_form[django]>
    <Function test_wrong_content_type[django]>
    <Function test_validation_failure[django]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[django]>
    <Function test_no_body_native_response_post[django]>
    <Function test_native_resp_subclass[django]>
  <Module test_get.py>
    <Function test_index[django]>
    <Function test_query_parameter_unannotated[django]>
    <Function test_query_parameter_string[django]>
    <Function test_query_parameter[django]>
    <Function test_query_parameter_default[django]>
    <Function test_response_bytes[django]>
    <Function test_response_model[django]>
    <Function test_response_model_custom_status[django]>
    <Function test_user_response_class[django]>
  <Module test_head.py>

2023-12-17 17:15:53.403 [info]     <Function test_head_exc[django]>
  <Module test_headers.py>
    <Function test_simple_header[django]>
    <Function test_missing_header[django]>
    <Function test_header_with_str_default[django]>
    <Function test_header_with_default[django]>
    <Function test_header_name_override[django]>
  <Module test_options.py>
2023-12-17 17:15:53.403 [info] 
    <Function test_head_exc[django]>
  <Module test_patch.py>
    <Function test_patch_cookie[django]>
  <Module test_path.py>
    <Function test_path_parameter[django]>
    <Function test_path_string[django]>
  <Module test_post.py>
    <Function test_hello[django]>
    <Function test_no_body_no_response_post[django]>
    <Function test_201[django]>
    <Function test_multiple[django]>
  <Module test_put.py>
    <Function test_put_custom_loader[django]>

2023-12-17 17:15:53.403 [info]   <Module test_query.py>
    <Function test_query_post[django]>
  <Module test_subapps.py>
    <Function test_subapp[django]>
  <Module test_shorthands.py>
    <Function test_custom_shorthand[QuartApp]>
    <Function test_custom_shorthand[AiohttpApp]>
    <Function test_custom_shorthand[StarletteApp]>
    <Function test_custom_shorthand[FlaskApp]>
    <Function test_custom_shorthand[DjangoApp]>
    <Function test_shorthand_unions>
<Package login>
  <Module test_login.py>
    <Function test_login_logout>
    <Function test_session_expiry>
    <Function test_logging_out_others>
<Package openapi>
  <Module test_openapi.py>
    <Function test_get_index[aiohttp]>
    <Function test_get_index[flask]>
2023-12-17 17:15:53.403 [info] 
    <Function test_get_index[quart]>
    <Function test_get_index[starlette]>
    <Function test_get_index[django]>
    <Function test_get_path_param[aiohttp]>
    <Function test_get_path_param[flask]>
    <Function test_get_path_param[quart]>
    <Function test_get_path_param[starlette]>
    <Function test_get_path_param[django]>
    <Function test_get_query_int[aiohttp]>
    <Function test_get_query_int[flask]>
    <Function test_get_query_int[quart]>
    <Function test_get_query_int[starlette]>
    <Function test_get_query_int[django]>
    <Function test_get_query_default[aiohttp]>
    <Function test_get_query_default[flask]>
    <Function test_get_query_default[quart]>
    <Function test_get_query_default[starlette]>
    <Function test_get_query_default[django]>
    <Function test_get_query_unannotated[aiohttp]>

2023-12-17 17:15:53.403 [info]     <Function test_get_query_unannotated[flask]>
    <Function test_get_query_unannotated[quart]>
    <Function test_get_query_unannotated[starlette]>
    <Function test_get_query_unannotated[django]>
    <Function test_get_query_string[aiohttp]>
    <Function test_get_query_string[flask]>
    <Function test_get_query_string[quart]>
    <Function test_get_query_string[starlette]>
    <Function test_get_query_string[django]>
    <Function test_get_bytes[aiohttp]>
    <Function test_get_bytes[flask]>
    <Function test_get_bytes[quart]>
    <Function test_get_bytes[starlette]>
    <Function test_get_bytes[django]>
    <Function test_post_no_body_native_response[aiohttp]>
    <Function test_post_no_body_native_response[flask]>
    <Function test_post_no_body_native_response[quart]>
    <Function test_post_no_body_native_response[starlette]>
    <Function test_post_no_body_native_response[django]>
    <Function test_post_no_body_no_response[aiohttp]>
2023-12-17 17:15:53.403 [info] 
    <Function test_post_no_body_no_response[flask]>
    <Function test_post_no_body_no_response[quart]>
    <Function test_post_no_body_no_response[starlette]>
    <Function test_post_no_body_no_response[django]>
    <Function test_post_custom_status[aiohttp]>
    <Function test_post_custom_status[flask]>
    <Function test_post_custom_status[quart]>
    <Function test_post_custom_status[starlette]>
    <Function test_post_custom_status[django]>
    <Function test_post_multiple_statuses[aiohttp]>
    <Function test_post_multiple_statuses[flask]>
    <Function test_post_multiple_statuses[quart]>
    <Function test_post_multiple_statuses[starlette]>
    <Function test_post_multiple_statuses[django]>
    <Function test_put_cookie[aiohttp]>
    <Function test_put_cookie[flask]>
    <Function test_put_cookie[quart]>
    <Function test_put_cookie[starlette]>
    <Function test_put_cookie[django]>
    <Function test_delete[aiohttp]>
    <Function test_delete[flask]>
    <Function test_delete[quart]>
    <Function test_delete[starlette]>
    <Function test_delete[django]>
    <Function test_ignore_framework_request[aiohttp]>

2023-12-17 17:15:53.404 [info]     <Function test_ignore_framework_request[flask]>
    <Function test_ignore_framework_request[quart]>
    <Function test_ignore_framework_request[starlette]>
    <Function test_ignore_framework_request[django]>
    <Function test_get_injection[aiohttp]>
    <Function test_get_injection[flask]>
    <Function test_get_injection[quart]>
    <Function test_get_injection[starlette]>
    <Function test_get_injection[django]>
    <Function test_excluded[aiohttp]>
    <Function test_excluded[flask]>
    <Function test_excluded[quart]>
    <Function test_excluded[starlette]>
    <Function test_excluded[django]>
    <Function test_tags[aiohttp]>
    <Function test_tags[flask]>
    <Function test_tags[quart]>
    <Function test_tags[starlette]>
    <Function test_tags[django]>
    <Function test_user_response_class[aiohttp]>
    <Function test_user_response_class[flask]>
    <Function test_user_response_class[quart]>
    <Function test_user_response_class[starlette]>

2023-12-17 17:15:53.404 [info]     <Function test_user_response_class[django]>
  <Module test_openapi_attrs.py>
    <Function test_get_model[aiohttp]>
    <Function test_get_model[flask]>
    <Function test_get_model[quart]>
    <Function test_get_model[starlette]>
    <Function test_get_model[django]>
    <Function test_get_model_status[aiohttp]>
    <Function test_get_model_status[flask]>
    <Function test_get_model_status[quart]>
    <Function test_get_model_status[starlette]>
    <Function test_get_model_status[django]>
    <Function test_post_model[aiohttp]>
    <Function test_post_model[flask]>
    <Function test_post_model[quart]>
    <Function test_post_model[starlette]>
    <Function test_post_model[django]>
    <Function test_patch_union[aiohttp]>
    <Function test_patch_union[flask]>
    <Function test_patch_union[quart]>
    <Function test_patch_union[starlette]>
    <Function test_patch_union[django]>
2023-12-17 17:15:53.404 [info] 
    <Function test_custom_loader[aiohttp]>
    <Function test_custom_loader[flask]>
    <Function test_custom_loader[quart]>
    <Function test_custom_loader[starlette]>
    <Function test_custom_loader[django]>
    <Function test_models_same_name[aiohttp]>
    <Function test_models_same_name[flask]>
    <Function test_models_same_name[quart]>
    <Function test_models_same_name[starlette]>
    <Function test_models_same_name[django]>
    <Function test_response_models[aiohttp]>
    <Function test_response_models[flask]>
    <Function test_response_models[quart]>
    <Function test_response_models[starlette]>
    <Function test_response_models[django]>
    <Function test_response_union_none[aiohttp]>
    <Function test_response_union_none[flask]>
    <Function test_response_union_none[quart]>
    <Function test_response_union_none[starlette]>
    <Function test_response_union_none[django]>
    <Function test_model_with_literal[aiohttp]>

2023-12-17 17:15:53.404 [info]     <Function test_model_with_literal[flask]>
    <Function test_model_with_literal[quart]>
    <Function test_model_with_literal[starlette]>
    <Function test_model_with_literal[django]>
    <Function test_generic_model[aiohttp]>
    <Function test_generic_model[flask]>
    <Function test_generic_model[quart]>
    <Function test_generic_model[starlette]>
    <Function test_generic_model[django]>
    <Function test_generic_response_model[aiohttp]>
    <Function test_generic_response_model[flask]>
    <Function test_generic_response_model[quart]>
    <Function test_generic_response_model[starlette]>
    <Function test_generic_response_model[django]>
    <Function test_sum_types_model[aiohttp]>
    <Function test_sum_types_model[flask]>
    <Function test_sum_types_model[quart]>
    <Function test_sum_types_model[starlette]>
    <Function test_sum_types_model[django]>
    <Function test_dictionary_models[aiohttp]>
    <Function test_dictionary_models[flask]>
2023-12-17 17:15:53.404 [info] 
    <Function test_dictionary_models[quart]>
    <Function test_dictionary_models[starlette]>
    <Function test_dictionary_models[django]>
    <Function test_model_with_datetime[aiohttp]>
    <Function test_model_with_datetime[flask]>
    <Function test_model_with_datetime[quart]>
    <Function test_model_with_datetime[starlette]>
    <Function test_model_with_datetime[django]>
    <Function test_same_name_models>
  <Module test_openapi_composition.py>
    <Function test_route_name_and_methods[aiohttp]>
    <Function test_route_name_and_methods[flask]>
    <Function test_route_name_and_methods[quart]>
    <Function test_route_name_and_methods[starlette]>
    <Function test_route_name_and_methods[django]>
    <Function test_native_route_name_and_methods[aiohttp]>
    <Function test_native_route_name_and_methods[flask]>
    <Function test_native_route_name_and_methods[quart]>
    <Function test_native_route_name_and_methods[starlette]>
    <Function test_native_route_name_and_methods[django]>

2023-12-17 17:15:53.404 [info]   <Module test_openapi_forms.py>
    <Function test_forms[aiohttp]>
    <Function test_forms[flask]>
    <Function test_forms[quart]>
    <Function test_forms[starlette]>
    <Function test_forms[django]>
  <Module test_openapi_headers.py>
    <Function test_header[aiohttp]>
    <Function test_header[flask]>
    <Function test_header[quart]>
    <Function test_header[starlette]>
    <Function test_header[django]>
    <Function test_default_header[aiohttp]>
    <Function test_default_header[flask]>
    <Function test_default_header[quart]>
    <Function test_default_header[starlette]>
    <Function test_default_header[django]>
  <Module test_openapi_metadata.py>
    <Function test_transformers>

2023-12-17 17:15:53.405 [info]   <Module test_openapi_uis.py>
    <Function test_elements>
    <Function test_swagger>
    <Function test_redoc>
  <Module test_shorthands.py>
    <Function test_no_openapi>
    <Function test_has_openapi>
    <Function test_unions>
    <Function test_unions_same_content_type>
    <Function test_unions_same_content_type_oneof>
    <Function test_unions_of_shorthands>
<Package sessions>
  <Module test_redis_sessions.py>
    <Function test_login_logout>
    <Function test_session_expiry>
    <Function test_openapi_security>
  <Module test_secure_cookie_sessions.py>
    <Function test_login_logout[aiohttp]>
    <Function test_session_expiry[aiohttp]>
    <Function test_login_logout[flask]>
    <Function test_session_expiry[flask]>
    <Function test_login_logout[quart]>
    <Function test_session_expiry[quart]>
    <Function test_login_logout[starlette]>
    <Function test_session_expiry[starlette]>

2023-12-17 17:15:53.427 [info] Test server connected to a client.
2023-12-17 17:15:53.448 [info] ResultResolver EOT received for discovery.
2023-12-17 17:15:53.449 [info] 
========================= 461 tests collected in 0.24s =========================

2023-12-17 17:15:53.615 [info] Disposing data receiver for /Users/tintvrtkovic/pg/uapi and deleting UUID; pytest discovery.

I imagine the presence of

<YamlTestFile test_shorthands.yml>
    <YamlTestItem shorthand_str>
    <YamlTestItem shorthand_attrs>
    <YamlTestItem shorthand_unsupported>
    <YamlTestItem shorthand_added>

stops the parser in some way?

Environment data

  • Language Server version: v2023.12.1
  • OS and version: macOs Sonoma
  • Python version (& distribution if applicable, e.g. Anaconda): 3.11.3
@debonte debonte transferred this issue from microsoft/pylance-release Dec 17, 2023
@github-actions github-actions bot added the triage-needed Needs assignment to the proper sub-team label Dec 17, 2023
@karthiknadig
Copy link
Member

Can you run the test discovery manually from the terminal using python -m pytest --collect-only tests with both cases and see if there is a difference?

@github-actions github-actions bot added the info-needed Issue requires more information from poster label Dec 18, 2023
@Tinche
Copy link
Author

Tinche commented Dec 18, 2023

Sure.

With the file:

❯ python -m pytest --collect-only tests
=================================================================================================================================================== test session starts ====================================================================================================================================================
platform darwin -- Python 3.11.3, pytest-7.4.3, pluggy-1.3.0
rootdir: /Users/tintvrtkovic/pg/uapi
configfile: pyproject.toml
plugins: anyio-4.0.0, pudb-0.7.0, mypy-plugins-3.0.0, asyncio-0.21.1
asyncio: mode=Mode.AUTO
collected 465 items

<Package tests>
  <Module test_attrs.py>
    <Function test_model[aiohttp]>
    <Function test_model_wrong_content_type[aiohttp]>
    <Function test_model_error[aiohttp]>
    <Function test_patch_custom_loader_no_ct[aiohttp]>
    <Function test_model_custom_error[aiohttp]>
    <Function test_attrs_union[aiohttp]>
    <Function test_attrs_union_nocontent[aiohttp]>
    <Function test_attrs_union_none[aiohttp]>
    <Function test_generic_model[aiohttp]>
    <Function test_dictionary_models[aiohttp]>
    <Function test_datetime_models[aiohttp]>
  <Module test_composition.py>
    <Function test_route_name[aiohttp]>
    <Function test_request_method[aiohttp]>
  <Module test_cookies.py>
    <Function test_put_cookie[aiohttp]>
    <Function test_put_cookie_optional[aiohttp]>
  <Module test_delete.py>
    <Function test_delete_response_header[aiohttp]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[aiohttp]>
  <Module test_forms.py>
    <Function test_simple_form[aiohttp]>
    <Function test_wrong_content_type[aiohttp]>
    <Function test_validation_failure[aiohttp]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[aiohttp]>
    <Function test_no_body_native_response_post[aiohttp]>
    <Function test_native_resp_subclass[aiohttp]>
  <Module test_get.py>
    <Function test_index[aiohttp]>
    <Function test_query_parameter_unannotated[aiohttp]>
    <Function test_query_parameter_string[aiohttp]>
    <Function test_query_parameter[aiohttp]>
    <Function test_query_parameter_default[aiohttp]>
    <Function test_response_bytes[aiohttp]>
    <Function test_response_model[aiohttp]>
    <Function test_response_model_custom_status[aiohttp]>
    <Function test_user_response_class[aiohttp]>
  <Module test_head.py>
    <Function test_head_exc[aiohttp]>
  <Module test_headers.py>
    <Function test_simple_header[aiohttp]>
    <Function test_missing_header[aiohttp]>
    <Function test_header_with_str_default[aiohttp]>
    <Function test_header_with_default[aiohttp]>
    <Function test_header_name_override[aiohttp]>
  <Module test_options.py>
    <Function test_head_exc[aiohttp]>
  <Module test_patch.py>
    <Function test_patch_cookie[aiohttp]>
  <Module test_path.py>
    <Function test_path_parameter[aiohttp]>
    <Function test_path_string[aiohttp]>
  <Module test_post.py>
    <Function test_hello[aiohttp]>
    <Function test_no_body_no_response_post[aiohttp]>
    <Function test_201[aiohttp]>
    <Function test_multiple[aiohttp]>
  <Module test_put.py>
    <Function test_put_custom_loader[aiohttp]>
  <Module test_query.py>
    <Function test_query_post[aiohttp]>
  <Module test_subapps.py>
    <Function test_subapp[aiohttp]>
  <Module test_attrs.py>
    <Function test_model[flask]>
    <Function test_model_wrong_content_type[flask]>
    <Function test_model_error[flask]>
    <Function test_patch_custom_loader_no_ct[flask]>
    <Function test_model_custom_error[flask]>
    <Function test_attrs_union[flask]>
    <Function test_attrs_union_nocontent[flask]>
    <Function test_attrs_union_none[flask]>
    <Function test_generic_model[flask]>
    <Function test_dictionary_models[flask]>
    <Function test_datetime_models[flask]>
  <Module test_composition.py>
    <Function test_route_name[flask]>
    <Function test_request_method[flask]>
  <Module test_cookies.py>
    <Function test_put_cookie[flask]>
    <Function test_put_cookie_optional[flask]>
  <Module test_delete.py>
    <Function test_delete_response_header[flask]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[flask]>
  <Module test_forms.py>
    <Function test_simple_form[flask]>
    <Function test_wrong_content_type[flask]>
    <Function test_validation_failure[flask]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[flask]>
    <Function test_no_body_native_response_post[flask]>
    <Function test_native_resp_subclass[flask]>
  <Module test_get.py>
    <Function test_index[flask]>
    <Function test_query_parameter_unannotated[flask]>
    <Function test_query_parameter_string[flask]>
    <Function test_query_parameter[flask]>
    <Function test_query_parameter_default[flask]>
    <Function test_response_bytes[flask]>
    <Function test_response_model[flask]>
    <Function test_response_model_custom_status[flask]>
    <Function test_user_response_class[flask]>
  <Module test_head.py>
    <Function test_head_exc[flask]>
  <Module test_headers.py>
    <Function test_simple_header[flask]>
    <Function test_missing_header[flask]>
    <Function test_header_with_str_default[flask]>
    <Function test_header_with_default[flask]>
    <Function test_header_name_override[flask]>
  <Module test_options.py>
    <Function test_head_exc[flask]>
  <Module test_patch.py>
    <Function test_patch_cookie[flask]>
  <Module test_path.py>
    <Function test_path_parameter[flask]>
    <Function test_path_string[flask]>
  <Module test_post.py>
    <Function test_hello[flask]>
    <Function test_no_body_no_response_post[flask]>
    <Function test_201[flask]>
    <Function test_multiple[flask]>
  <Module test_put.py>
    <Function test_put_custom_loader[flask]>
  <Module test_query.py>
    <Function test_query_post[flask]>
  <Module test_subapps.py>
    <Function test_subapp[flask]>
  <Module test_attrs.py>
    <Function test_model[quart]>
    <Function test_model_wrong_content_type[quart]>
    <Function test_model_error[quart]>
    <Function test_patch_custom_loader_no_ct[quart]>
    <Function test_model_custom_error[quart]>
    <Function test_attrs_union[quart]>
    <Function test_attrs_union_nocontent[quart]>
    <Function test_attrs_union_none[quart]>
    <Function test_generic_model[quart]>
    <Function test_dictionary_models[quart]>
    <Function test_datetime_models[quart]>
  <Module test_composition.py>
    <Function test_route_name[quart]>
    <Function test_request_method[quart]>
  <Module test_cookies.py>
    <Function test_put_cookie[quart]>
    <Function test_put_cookie_optional[quart]>
  <Module test_delete.py>
    <Function test_delete_response_header[quart]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[quart]>
  <Module test_forms.py>
    <Function test_simple_form[quart]>
    <Function test_wrong_content_type[quart]>
    <Function test_validation_failure[quart]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[quart]>
    <Function test_no_body_native_response_post[quart]>
    <Function test_native_resp_subclass[quart]>
  <Module test_get.py>
    <Function test_index[quart]>
    <Function test_query_parameter_unannotated[quart]>
    <Function test_query_parameter_string[quart]>
    <Function test_query_parameter[quart]>
    <Function test_query_parameter_default[quart]>
    <Function test_response_bytes[quart]>
    <Function test_response_model[quart]>
    <Function test_response_model_custom_status[quart]>
    <Function test_user_response_class[quart]>
  <Module test_head.py>
    <Function test_head_exc[quart]>
  <Module test_headers.py>
    <Function test_simple_header[quart]>
    <Function test_missing_header[quart]>
    <Function test_header_with_str_default[quart]>
    <Function test_header_with_default[quart]>
    <Function test_header_name_override[quart]>
  <Module test_options.py>
    <Function test_head_exc[quart]>
  <Module test_patch.py>
    <Function test_patch_cookie[quart]>
  <Module test_path.py>
    <Function test_path_parameter[quart]>
    <Function test_path_string[quart]>
  <Module test_post.py>
    <Function test_hello[quart]>
    <Function test_no_body_no_response_post[quart]>
    <Function test_201[quart]>
    <Function test_multiple[quart]>
  <Module test_put.py>
    <Function test_put_custom_loader[quart]>
  <Module test_query.py>
    <Function test_query_post[quart]>
  <Module test_subapps.py>
    <Function test_subapp[quart]>
  <Module test_attrs.py>
    <Function test_model[starlette]>
    <Function test_model_wrong_content_type[starlette]>
    <Function test_model_error[starlette]>
    <Function test_patch_custom_loader_no_ct[starlette]>
    <Function test_model_custom_error[starlette]>
    <Function test_attrs_union[starlette]>
    <Function test_attrs_union_nocontent[starlette]>
    <Function test_attrs_union_none[starlette]>
    <Function test_generic_model[starlette]>
    <Function test_dictionary_models[starlette]>
    <Function test_datetime_models[starlette]>
  <Module test_composition.py>
    <Function test_route_name[starlette]>
    <Function test_request_method[starlette]>
  <Module test_cookies.py>
    <Function test_put_cookie[starlette]>
    <Function test_put_cookie_optional[starlette]>
  <Module test_delete.py>
    <Function test_delete_response_header[starlette]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[starlette]>
  <Module test_forms.py>
    <Function test_simple_form[starlette]>
    <Function test_wrong_content_type[starlette]>
    <Function test_validation_failure[starlette]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[starlette]>
    <Function test_no_body_native_response_post[starlette]>
    <Function test_native_resp_subclass[starlette]>
  <Module test_get.py>
    <Function test_index[starlette]>
    <Function test_query_parameter_unannotated[starlette]>
    <Function test_query_parameter_string[starlette]>
    <Function test_query_parameter[starlette]>
    <Function test_query_parameter_default[starlette]>
    <Function test_response_bytes[starlette]>
    <Function test_response_model[starlette]>
    <Function test_response_model_custom_status[starlette]>
    <Function test_user_response_class[starlette]>
  <Module test_head.py>
    <Function test_head_exc[starlette]>
  <Module test_headers.py>
    <Function test_simple_header[starlette]>
    <Function test_missing_header[starlette]>
    <Function test_header_with_str_default[starlette]>
    <Function test_header_with_default[starlette]>
    <Function test_header_name_override[starlette]>
  <Module test_options.py>
    <Function test_head_exc[starlette]>
  <Module test_patch.py>
    <Function test_patch_cookie[starlette]>
  <Module test_path.py>
    <Function test_path_parameter[starlette]>
    <Function test_path_string[starlette]>
  <Module test_post.py>
    <Function test_hello[starlette]>
    <Function test_no_body_no_response_post[starlette]>
    <Function test_201[starlette]>
    <Function test_multiple[starlette]>
  <Module test_put.py>
    <Function test_put_custom_loader[starlette]>
  <Module test_query.py>
    <Function test_query_post[starlette]>
  <Module test_subapps.py>
    <Function test_subapp[starlette]>
  <Module test_attrs.py>
    <Function test_model[django]>
    <Function test_model_wrong_content_type[django]>
    <Function test_model_error[django]>
    <Function test_patch_custom_loader_no_ct[django]>
    <Function test_model_custom_error[django]>
    <Function test_attrs_union[django]>
    <Function test_attrs_union_nocontent[django]>
    <Function test_attrs_union_none[django]>
    <Function test_generic_model[django]>
    <Function test_dictionary_models[django]>
    <Function test_datetime_models[django]>
  <Module test_composition.py>
    <Function test_route_name[django]>
    <Function test_request_method[django]>
  <Module test_cookies.py>
    <Function test_put_cookie[django]>
    <Function test_put_cookie_optional[django]>
  <Module test_delete.py>
    <Function test_delete_response_header[django]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[django]>
  <Module test_forms.py>
    <Function test_simple_form[django]>
    <Function test_wrong_content_type[django]>
    <Function test_validation_failure[django]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[django]>
    <Function test_no_body_native_response_post[django]>
    <Function test_native_resp_subclass[django]>
  <Module test_get.py>
    <Function test_index[django]>
    <Function test_query_parameter_unannotated[django]>
    <Function test_query_parameter_string[django]>
    <Function test_query_parameter[django]>
    <Function test_query_parameter_default[django]>
    <Function test_response_bytes[django]>
    <Function test_response_model[django]>
    <Function test_response_model_custom_status[django]>
    <Function test_user_response_class[django]>
  <Module test_head.py>
    <Function test_head_exc[django]>
  <Module test_headers.py>
    <Function test_simple_header[django]>
    <Function test_missing_header[django]>
    <Function test_header_with_str_default[django]>
    <Function test_header_with_default[django]>
    <Function test_header_name_override[django]>
  <Module test_options.py>
    <Function test_head_exc[django]>
  <Module test_patch.py>
    <Function test_patch_cookie[django]>
  <Module test_path.py>
    <Function test_path_parameter[django]>
    <Function test_path_string[django]>
  <Module test_post.py>
    <Function test_hello[django]>
    <Function test_no_body_no_response_post[django]>
    <Function test_201[django]>
    <Function test_multiple[django]>
  <Module test_put.py>
    <Function test_put_custom_loader[django]>
  <Module test_query.py>
    <Function test_query_post[django]>
  <Module test_subapps.py>
    <Function test_subapp[django]>
  <Module test_shorthands.py>
    <Function test_custom_shorthand[QuartApp]>
    <Function test_custom_shorthand[AiohttpApp]>
    <Function test_custom_shorthand[StarletteApp]>
    <Function test_custom_shorthand[FlaskApp]>
    <Function test_custom_shorthand[DjangoApp]>
    <Function test_shorthand_unions>
  <YamlTestFile test_shorthands.yml>
    <YamlTestItem shorthand_str>
    <YamlTestItem shorthand_attrs>
    <YamlTestItem shorthand_unsupported>
    <YamlTestItem shorthand_added>
<Package login>
  <Module test_login.py>
    <Function test_login_logout>
    <Function test_session_expiry>
    <Function test_logging_out_others>
<Package openapi>
  <Module test_openapi.py>
    <Function test_get_index[aiohttp]>
    <Function test_get_index[flask]>
    <Function test_get_index[quart]>
    <Function test_get_index[starlette]>
    <Function test_get_index[django]>
    <Function test_get_path_param[aiohttp]>
    <Function test_get_path_param[flask]>
    <Function test_get_path_param[quart]>
    <Function test_get_path_param[starlette]>
    <Function test_get_path_param[django]>
    <Function test_get_query_int[aiohttp]>
    <Function test_get_query_int[flask]>
    <Function test_get_query_int[quart]>
    <Function test_get_query_int[starlette]>
    <Function test_get_query_int[django]>
    <Function test_get_query_default[aiohttp]>
    <Function test_get_query_default[flask]>
    <Function test_get_query_default[quart]>
    <Function test_get_query_default[starlette]>
    <Function test_get_query_default[django]>
    <Function test_get_query_unannotated[aiohttp]>
    <Function test_get_query_unannotated[flask]>
    <Function test_get_query_unannotated[quart]>
    <Function test_get_query_unannotated[starlette]>
    <Function test_get_query_unannotated[django]>
    <Function test_get_query_string[aiohttp]>
    <Function test_get_query_string[flask]>
    <Function test_get_query_string[quart]>
    <Function test_get_query_string[starlette]>
    <Function test_get_query_string[django]>
    <Function test_get_bytes[aiohttp]>
    <Function test_get_bytes[flask]>
    <Function test_get_bytes[quart]>
    <Function test_get_bytes[starlette]>
    <Function test_get_bytes[django]>
    <Function test_post_no_body_native_response[aiohttp]>
    <Function test_post_no_body_native_response[flask]>
    <Function test_post_no_body_native_response[quart]>
    <Function test_post_no_body_native_response[starlette]>
    <Function test_post_no_body_native_response[django]>
    <Function test_post_no_body_no_response[aiohttp]>
    <Function test_post_no_body_no_response[flask]>
    <Function test_post_no_body_no_response[quart]>
    <Function test_post_no_body_no_response[starlette]>
    <Function test_post_no_body_no_response[django]>
    <Function test_post_custom_status[aiohttp]>
    <Function test_post_custom_status[flask]>
    <Function test_post_custom_status[quart]>
    <Function test_post_custom_status[starlette]>
    <Function test_post_custom_status[django]>
    <Function test_post_multiple_statuses[aiohttp]>
    <Function test_post_multiple_statuses[flask]>
    <Function test_post_multiple_statuses[quart]>
    <Function test_post_multiple_statuses[starlette]>
    <Function test_post_multiple_statuses[django]>
    <Function test_put_cookie[aiohttp]>
    <Function test_put_cookie[flask]>
    <Function test_put_cookie[quart]>
    <Function test_put_cookie[starlette]>
    <Function test_put_cookie[django]>
    <Function test_delete[aiohttp]>
    <Function test_delete[flask]>
    <Function test_delete[quart]>
    <Function test_delete[starlette]>
    <Function test_delete[django]>
    <Function test_ignore_framework_request[aiohttp]>
    <Function test_ignore_framework_request[flask]>
    <Function test_ignore_framework_request[quart]>
    <Function test_ignore_framework_request[starlette]>
    <Function test_ignore_framework_request[django]>
    <Function test_get_injection[aiohttp]>
    <Function test_get_injection[flask]>
    <Function test_get_injection[quart]>
    <Function test_get_injection[starlette]>
    <Function test_get_injection[django]>
    <Function test_excluded[aiohttp]>
    <Function test_excluded[flask]>
    <Function test_excluded[quart]>
    <Function test_excluded[starlette]>
    <Function test_excluded[django]>
    <Function test_tags[aiohttp]>
    <Function test_tags[flask]>
    <Function test_tags[quart]>
    <Function test_tags[starlette]>
    <Function test_tags[django]>
    <Function test_user_response_class[aiohttp]>
    <Function test_user_response_class[flask]>
    <Function test_user_response_class[quart]>
    <Function test_user_response_class[starlette]>
    <Function test_user_response_class[django]>
  <Module test_openapi_attrs.py>
    <Function test_get_model[aiohttp]>
    <Function test_get_model[flask]>
    <Function test_get_model[quart]>
    <Function test_get_model[starlette]>
    <Function test_get_model[django]>
    <Function test_get_model_status[aiohttp]>
    <Function test_get_model_status[flask]>
    <Function test_get_model_status[quart]>
    <Function test_get_model_status[starlette]>
    <Function test_get_model_status[django]>
    <Function test_post_model[aiohttp]>
    <Function test_post_model[flask]>
    <Function test_post_model[quart]>
    <Function test_post_model[starlette]>
    <Function test_post_model[django]>
    <Function test_patch_union[aiohttp]>
    <Function test_patch_union[flask]>
    <Function test_patch_union[quart]>
    <Function test_patch_union[starlette]>
    <Function test_patch_union[django]>
    <Function test_custom_loader[aiohttp]>
    <Function test_custom_loader[flask]>
    <Function test_custom_loader[quart]>
    <Function test_custom_loader[starlette]>
    <Function test_custom_loader[django]>
    <Function test_models_same_name[aiohttp]>
    <Function test_models_same_name[flask]>
    <Function test_models_same_name[quart]>
    <Function test_models_same_name[starlette]>
    <Function test_models_same_name[django]>
    <Function test_response_models[aiohttp]>
    <Function test_response_models[flask]>
    <Function test_response_models[quart]>
    <Function test_response_models[starlette]>
    <Function test_response_models[django]>
    <Function test_response_union_none[aiohttp]>
    <Function test_response_union_none[flask]>
    <Function test_response_union_none[quart]>
    <Function test_response_union_none[starlette]>
    <Function test_response_union_none[django]>
    <Function test_model_with_literal[aiohttp]>
    <Function test_model_with_literal[flask]>
    <Function test_model_with_literal[quart]>
    <Function test_model_with_literal[starlette]>
    <Function test_model_with_literal[django]>
    <Function test_generic_model[aiohttp]>
    <Function test_generic_model[flask]>
    <Function test_generic_model[quart]>
    <Function test_generic_model[starlette]>
    <Function test_generic_model[django]>
    <Function test_generic_response_model[aiohttp]>
    <Function test_generic_response_model[flask]>
    <Function test_generic_response_model[quart]>
    <Function test_generic_response_model[starlette]>
    <Function test_generic_response_model[django]>
    <Function test_sum_types_model[aiohttp]>
    <Function test_sum_types_model[flask]>
    <Function test_sum_types_model[quart]>
    <Function test_sum_types_model[starlette]>
    <Function test_sum_types_model[django]>
    <Function test_dictionary_models[aiohttp]>
    <Function test_dictionary_models[flask]>
    <Function test_dictionary_models[quart]>
    <Function test_dictionary_models[starlette]>
    <Function test_dictionary_models[django]>
    <Function test_model_with_datetime[aiohttp]>
    <Function test_model_with_datetime[flask]>
    <Function test_model_with_datetime[quart]>
    <Function test_model_with_datetime[starlette]>
    <Function test_model_with_datetime[django]>
    <Function test_same_name_models>
  <Module test_openapi_composition.py>
    <Function test_route_name_and_methods[aiohttp]>
    <Function test_route_name_and_methods[flask]>
    <Function test_route_name_and_methods[quart]>
    <Function test_route_name_and_methods[starlette]>
    <Function test_route_name_and_methods[django]>
    <Function test_native_route_name_and_methods[aiohttp]>
    <Function test_native_route_name_and_methods[flask]>
    <Function test_native_route_name_and_methods[quart]>
    <Function test_native_route_name_and_methods[starlette]>
    <Function test_native_route_name_and_methods[django]>
  <Module test_openapi_forms.py>
    <Function test_forms[aiohttp]>
    <Function test_forms[flask]>
    <Function test_forms[quart]>
    <Function test_forms[starlette]>
    <Function test_forms[django]>
  <Module test_openapi_headers.py>
    <Function test_header[aiohttp]>
    <Function test_header[flask]>
    <Function test_header[quart]>
    <Function test_header[starlette]>
    <Function test_header[django]>
    <Function test_default_header[aiohttp]>
    <Function test_default_header[flask]>
    <Function test_default_header[quart]>
    <Function test_default_header[starlette]>
    <Function test_default_header[django]>
  <Module test_openapi_metadata.py>
    <Function test_transformers>
  <Module test_openapi_uis.py>
    <Function test_elements>
    <Function test_swagger>
    <Function test_redoc>
  <Module test_shorthands.py>
    <Function test_no_openapi>
    <Function test_has_openapi>
    <Function test_unions>
    <Function test_unions_same_content_type>
    <Function test_unions_same_content_type_oneof>
    <Function test_unions_of_shorthands>
<Package sessions>
  <Module test_redis_sessions.py>
    <Function test_login_logout>
    <Function test_session_expiry>
    <Function test_openapi_security>
  <Module test_secure_cookie_sessions.py>
    <Function test_login_logout[aiohttp]>
    <Function test_session_expiry[aiohttp]>
    <Function test_login_logout[flask]>
    <Function test_session_expiry[flask]>
    <Function test_login_logout[quart]>
    <Function test_session_expiry[quart]>
    <Function test_login_logout[starlette]>
    <Function test_session_expiry[starlette]>

Without the file:

❯ python -m pytest --collect-only tests
=================================================================================================================================================== test session starts ====================================================================================================================================================
platform darwin -- Python 3.11.3, pytest-7.4.3, pluggy-1.3.0
rootdir: /Users/tintvrtkovic/pg/uapi
configfile: pyproject.toml
plugins: anyio-4.0.0, pudb-0.7.0, mypy-plugins-3.0.0, asyncio-0.21.1
asyncio: mode=Mode.AUTO
collected 461 items

<Package tests>
  <Module test_attrs.py>
    <Function test_model[aiohttp]>
    <Function test_model_wrong_content_type[aiohttp]>
    <Function test_model_error[aiohttp]>
    <Function test_patch_custom_loader_no_ct[aiohttp]>
    <Function test_model_custom_error[aiohttp]>
    <Function test_attrs_union[aiohttp]>
    <Function test_attrs_union_nocontent[aiohttp]>
    <Function test_attrs_union_none[aiohttp]>
    <Function test_generic_model[aiohttp]>
    <Function test_dictionary_models[aiohttp]>
    <Function test_datetime_models[aiohttp]>
  <Module test_composition.py>
    <Function test_route_name[aiohttp]>
    <Function test_request_method[aiohttp]>
  <Module test_cookies.py>
    <Function test_put_cookie[aiohttp]>
    <Function test_put_cookie_optional[aiohttp]>
  <Module test_delete.py>
    <Function test_delete_response_header[aiohttp]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[aiohttp]>
  <Module test_forms.py>
    <Function test_simple_form[aiohttp]>
    <Function test_wrong_content_type[aiohttp]>
    <Function test_validation_failure[aiohttp]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[aiohttp]>
    <Function test_no_body_native_response_post[aiohttp]>
    <Function test_native_resp_subclass[aiohttp]>
  <Module test_get.py>
    <Function test_index[aiohttp]>
    <Function test_query_parameter_unannotated[aiohttp]>
    <Function test_query_parameter_string[aiohttp]>
    <Function test_query_parameter[aiohttp]>
    <Function test_query_parameter_default[aiohttp]>
    <Function test_response_bytes[aiohttp]>
    <Function test_response_model[aiohttp]>
    <Function test_response_model_custom_status[aiohttp]>
    <Function test_user_response_class[aiohttp]>
  <Module test_head.py>
    <Function test_head_exc[aiohttp]>
  <Module test_headers.py>
    <Function test_simple_header[aiohttp]>
    <Function test_missing_header[aiohttp]>
    <Function test_header_with_str_default[aiohttp]>
    <Function test_header_with_default[aiohttp]>
    <Function test_header_name_override[aiohttp]>
  <Module test_options.py>
    <Function test_head_exc[aiohttp]>
  <Module test_patch.py>
    <Function test_patch_cookie[aiohttp]>
  <Module test_path.py>
    <Function test_path_parameter[aiohttp]>
    <Function test_path_string[aiohttp]>
  <Module test_post.py>
    <Function test_hello[aiohttp]>
    <Function test_no_body_no_response_post[aiohttp]>
    <Function test_201[aiohttp]>
    <Function test_multiple[aiohttp]>
  <Module test_put.py>
    <Function test_put_custom_loader[aiohttp]>
  <Module test_query.py>
    <Function test_query_post[aiohttp]>
  <Module test_subapps.py>
    <Function test_subapp[aiohttp]>
  <Module test_attrs.py>
    <Function test_model[flask]>
    <Function test_model_wrong_content_type[flask]>
    <Function test_model_error[flask]>
    <Function test_patch_custom_loader_no_ct[flask]>
    <Function test_model_custom_error[flask]>
    <Function test_attrs_union[flask]>
    <Function test_attrs_union_nocontent[flask]>
    <Function test_attrs_union_none[flask]>
    <Function test_generic_model[flask]>
    <Function test_dictionary_models[flask]>
    <Function test_datetime_models[flask]>
  <Module test_composition.py>
    <Function test_route_name[flask]>
    <Function test_request_method[flask]>
  <Module test_cookies.py>
    <Function test_put_cookie[flask]>
    <Function test_put_cookie_optional[flask]>
  <Module test_delete.py>
    <Function test_delete_response_header[flask]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[flask]>
  <Module test_forms.py>
    <Function test_simple_form[flask]>
    <Function test_wrong_content_type[flask]>
    <Function test_validation_failure[flask]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[flask]>
    <Function test_no_body_native_response_post[flask]>
    <Function test_native_resp_subclass[flask]>
  <Module test_get.py>
    <Function test_index[flask]>
    <Function test_query_parameter_unannotated[flask]>
    <Function test_query_parameter_string[flask]>
    <Function test_query_parameter[flask]>
    <Function test_query_parameter_default[flask]>
    <Function test_response_bytes[flask]>
    <Function test_response_model[flask]>
    <Function test_response_model_custom_status[flask]>
    <Function test_user_response_class[flask]>
  <Module test_head.py>
    <Function test_head_exc[flask]>
  <Module test_headers.py>
    <Function test_simple_header[flask]>
    <Function test_missing_header[flask]>
    <Function test_header_with_str_default[flask]>
    <Function test_header_with_default[flask]>
    <Function test_header_name_override[flask]>
  <Module test_options.py>
    <Function test_head_exc[flask]>
  <Module test_patch.py>
    <Function test_patch_cookie[flask]>
  <Module test_path.py>
    <Function test_path_parameter[flask]>
    <Function test_path_string[flask]>
  <Module test_post.py>
    <Function test_hello[flask]>
    <Function test_no_body_no_response_post[flask]>
    <Function test_201[flask]>
    <Function test_multiple[flask]>
  <Module test_put.py>
    <Function test_put_custom_loader[flask]>
  <Module test_query.py>
    <Function test_query_post[flask]>
  <Module test_subapps.py>
    <Function test_subapp[flask]>
  <Module test_attrs.py>
    <Function test_model[quart]>
    <Function test_model_wrong_content_type[quart]>
    <Function test_model_error[quart]>
    <Function test_patch_custom_loader_no_ct[quart]>
    <Function test_model_custom_error[quart]>
    <Function test_attrs_union[quart]>
    <Function test_attrs_union_nocontent[quart]>
    <Function test_attrs_union_none[quart]>
    <Function test_generic_model[quart]>
    <Function test_dictionary_models[quart]>
    <Function test_datetime_models[quart]>
  <Module test_composition.py>
    <Function test_route_name[quart]>
    <Function test_request_method[quart]>
  <Module test_cookies.py>
    <Function test_put_cookie[quart]>
    <Function test_put_cookie_optional[quart]>
  <Module test_delete.py>
    <Function test_delete_response_header[quart]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[quart]>
  <Module test_forms.py>
    <Function test_simple_form[quart]>
    <Function test_wrong_content_type[quart]>
    <Function test_validation_failure[quart]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[quart]>
    <Function test_no_body_native_response_post[quart]>
    <Function test_native_resp_subclass[quart]>
  <Module test_get.py>
    <Function test_index[quart]>
    <Function test_query_parameter_unannotated[quart]>
    <Function test_query_parameter_string[quart]>
    <Function test_query_parameter[quart]>
    <Function test_query_parameter_default[quart]>
    <Function test_response_bytes[quart]>
    <Function test_response_model[quart]>
    <Function test_response_model_custom_status[quart]>
    <Function test_user_response_class[quart]>
  <Module test_head.py>
    <Function test_head_exc[quart]>
  <Module test_headers.py>
    <Function test_simple_header[quart]>
    <Function test_missing_header[quart]>
    <Function test_header_with_str_default[quart]>
    <Function test_header_with_default[quart]>
    <Function test_header_name_override[quart]>
  <Module test_options.py>
    <Function test_head_exc[quart]>
  <Module test_patch.py>
    <Function test_patch_cookie[quart]>
  <Module test_path.py>
    <Function test_path_parameter[quart]>
    <Function test_path_string[quart]>
  <Module test_post.py>
    <Function test_hello[quart]>
    <Function test_no_body_no_response_post[quart]>
    <Function test_201[quart]>
    <Function test_multiple[quart]>
  <Module test_put.py>
    <Function test_put_custom_loader[quart]>
  <Module test_query.py>
    <Function test_query_post[quart]>
  <Module test_subapps.py>
    <Function test_subapp[quart]>
  <Module test_attrs.py>
    <Function test_model[starlette]>
    <Function test_model_wrong_content_type[starlette]>
    <Function test_model_error[starlette]>
    <Function test_patch_custom_loader_no_ct[starlette]>
    <Function test_model_custom_error[starlette]>
    <Function test_attrs_union[starlette]>
    <Function test_attrs_union_nocontent[starlette]>
    <Function test_attrs_union_none[starlette]>
    <Function test_generic_model[starlette]>
    <Function test_dictionary_models[starlette]>
    <Function test_datetime_models[starlette]>
  <Module test_composition.py>
    <Function test_route_name[starlette]>
    <Function test_request_method[starlette]>
  <Module test_cookies.py>
    <Function test_put_cookie[starlette]>
    <Function test_put_cookie_optional[starlette]>
  <Module test_delete.py>
    <Function test_delete_response_header[starlette]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[starlette]>
  <Module test_forms.py>
    <Function test_simple_form[starlette]>
    <Function test_wrong_content_type[starlette]>
    <Function test_validation_failure[starlette]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[starlette]>
    <Function test_no_body_native_response_post[starlette]>
    <Function test_native_resp_subclass[starlette]>
  <Module test_get.py>
    <Function test_index[starlette]>
    <Function test_query_parameter_unannotated[starlette]>
    <Function test_query_parameter_string[starlette]>
    <Function test_query_parameter[starlette]>
    <Function test_query_parameter_default[starlette]>
    <Function test_response_bytes[starlette]>
    <Function test_response_model[starlette]>
    <Function test_response_model_custom_status[starlette]>
    <Function test_user_response_class[starlette]>
  <Module test_head.py>
    <Function test_head_exc[starlette]>
  <Module test_headers.py>
    <Function test_simple_header[starlette]>
    <Function test_missing_header[starlette]>
    <Function test_header_with_str_default[starlette]>
    <Function test_header_with_default[starlette]>
    <Function test_header_name_override[starlette]>
  <Module test_options.py>
    <Function test_head_exc[starlette]>
  <Module test_patch.py>
    <Function test_patch_cookie[starlette]>
  <Module test_path.py>
    <Function test_path_parameter[starlette]>
    <Function test_path_string[starlette]>
  <Module test_post.py>
    <Function test_hello[starlette]>
    <Function test_no_body_no_response_post[starlette]>
    <Function test_201[starlette]>
    <Function test_multiple[starlette]>
  <Module test_put.py>
    <Function test_put_custom_loader[starlette]>
  <Module test_query.py>
    <Function test_query_post[starlette]>
  <Module test_subapps.py>
    <Function test_subapp[starlette]>
  <Module test_attrs.py>
    <Function test_model[django]>
    <Function test_model_wrong_content_type[django]>
    <Function test_model_error[django]>
    <Function test_patch_custom_loader_no_ct[django]>
    <Function test_model_custom_error[django]>
    <Function test_attrs_union[django]>
    <Function test_attrs_union_nocontent[django]>
    <Function test_attrs_union_none[django]>
    <Function test_generic_model[django]>
    <Function test_dictionary_models[django]>
    <Function test_datetime_models[django]>
  <Module test_composition.py>
    <Function test_route_name[django]>
    <Function test_request_method[django]>
  <Module test_cookies.py>
    <Function test_put_cookie[django]>
    <Function test_put_cookie_optional[django]>
  <Module test_delete.py>
    <Function test_delete_response_header[django]>
  <Module test_exceptions.py>
    <Function test_attrs_exception[django]>
  <Module test_forms.py>
    <Function test_simple_form[django]>
    <Function test_wrong_content_type[django]>
    <Function test_validation_failure[django]>
  <Module test_framework_escape_hatch.py>
    <Function test_framework_req[django]>
    <Function test_no_body_native_response_post[django]>
    <Function test_native_resp_subclass[django]>
  <Module test_get.py>
    <Function test_index[django]>
    <Function test_query_parameter_unannotated[django]>
    <Function test_query_parameter_string[django]>
    <Function test_query_parameter[django]>
    <Function test_query_parameter_default[django]>
    <Function test_response_bytes[django]>
    <Function test_response_model[django]>
    <Function test_response_model_custom_status[django]>
    <Function test_user_response_class[django]>
  <Module test_head.py>
    <Function test_head_exc[django]>
  <Module test_headers.py>
    <Function test_simple_header[django]>
    <Function test_missing_header[django]>
    <Function test_header_with_str_default[django]>
    <Function test_header_with_default[django]>
    <Function test_header_name_override[django]>
  <Module test_options.py>
    <Function test_head_exc[django]>
  <Module test_patch.py>
    <Function test_patch_cookie[django]>
  <Module test_path.py>
    <Function test_path_parameter[django]>
    <Function test_path_string[django]>
  <Module test_post.py>
    <Function test_hello[django]>
    <Function test_no_body_no_response_post[django]>
    <Function test_201[django]>
    <Function test_multiple[django]>
  <Module test_put.py>
    <Function test_put_custom_loader[django]>
  <Module test_query.py>
    <Function test_query_post[django]>
  <Module test_subapps.py>
    <Function test_subapp[django]>
  <Module test_shorthands.py>
    <Function test_custom_shorthand[QuartApp]>
    <Function test_custom_shorthand[AiohttpApp]>
    <Function test_custom_shorthand[StarletteApp]>
    <Function test_custom_shorthand[FlaskApp]>
    <Function test_custom_shorthand[DjangoApp]>
    <Function test_shorthand_unions>
<Package login>
  <Module test_login.py>
    <Function test_login_logout>
    <Function test_session_expiry>
    <Function test_logging_out_others>
<Package openapi>
  <Module test_openapi.py>
    <Function test_get_index[aiohttp]>
    <Function test_get_index[flask]>
    <Function test_get_index[quart]>
    <Function test_get_index[starlette]>
    <Function test_get_index[django]>
    <Function test_get_path_param[aiohttp]>
    <Function test_get_path_param[flask]>
    <Function test_get_path_param[quart]>
    <Function test_get_path_param[starlette]>
    <Function test_get_path_param[django]>
    <Function test_get_query_int[aiohttp]>
    <Function test_get_query_int[flask]>
    <Function test_get_query_int[quart]>
    <Function test_get_query_int[starlette]>
    <Function test_get_query_int[django]>
    <Function test_get_query_default[aiohttp]>
    <Function test_get_query_default[flask]>
    <Function test_get_query_default[quart]>
    <Function test_get_query_default[starlette]>
    <Function test_get_query_default[django]>
    <Function test_get_query_unannotated[aiohttp]>
    <Function test_get_query_unannotated[flask]>
    <Function test_get_query_unannotated[quart]>
    <Function test_get_query_unannotated[starlette]>
    <Function test_get_query_unannotated[django]>
    <Function test_get_query_string[aiohttp]>
    <Function test_get_query_string[flask]>
    <Function test_get_query_string[quart]>
    <Function test_get_query_string[starlette]>
    <Function test_get_query_string[django]>
    <Function test_get_bytes[aiohttp]>
    <Function test_get_bytes[flask]>
    <Function test_get_bytes[quart]>
    <Function test_get_bytes[starlette]>
    <Function test_get_bytes[django]>
    <Function test_post_no_body_native_response[aiohttp]>
    <Function test_post_no_body_native_response[flask]>
    <Function test_post_no_body_native_response[quart]>
    <Function test_post_no_body_native_response[starlette]>
    <Function test_post_no_body_native_response[django]>
    <Function test_post_no_body_no_response[aiohttp]>
    <Function test_post_no_body_no_response[flask]>
    <Function test_post_no_body_no_response[quart]>
    <Function test_post_no_body_no_response[starlette]>
    <Function test_post_no_body_no_response[django]>
    <Function test_post_custom_status[aiohttp]>
    <Function test_post_custom_status[flask]>
    <Function test_post_custom_status[quart]>
    <Function test_post_custom_status[starlette]>
    <Function test_post_custom_status[django]>
    <Function test_post_multiple_statuses[aiohttp]>
    <Function test_post_multiple_statuses[flask]>
    <Function test_post_multiple_statuses[quart]>
    <Function test_post_multiple_statuses[starlette]>
    <Function test_post_multiple_statuses[django]>
    <Function test_put_cookie[aiohttp]>
    <Function test_put_cookie[flask]>
    <Function test_put_cookie[quart]>
    <Function test_put_cookie[starlette]>
    <Function test_put_cookie[django]>
    <Function test_delete[aiohttp]>
    <Function test_delete[flask]>
    <Function test_delete[quart]>
    <Function test_delete[starlette]>
    <Function test_delete[django]>
    <Function test_ignore_framework_request[aiohttp]>
    <Function test_ignore_framework_request[flask]>
    <Function test_ignore_framework_request[quart]>
    <Function test_ignore_framework_request[starlette]>
    <Function test_ignore_framework_request[django]>
    <Function test_get_injection[aiohttp]>
    <Function test_get_injection[flask]>
    <Function test_get_injection[quart]>
    <Function test_get_injection[starlette]>
    <Function test_get_injection[django]>
    <Function test_excluded[aiohttp]>
    <Function test_excluded[flask]>
    <Function test_excluded[quart]>
    <Function test_excluded[starlette]>
    <Function test_excluded[django]>
    <Function test_tags[aiohttp]>
    <Function test_tags[flask]>
    <Function test_tags[quart]>
    <Function test_tags[starlette]>
    <Function test_tags[django]>
    <Function test_user_response_class[aiohttp]>
    <Function test_user_response_class[flask]>
    <Function test_user_response_class[quart]>
    <Function test_user_response_class[starlette]>
    <Function test_user_response_class[django]>
  <Module test_openapi_attrs.py>
    <Function test_get_model[aiohttp]>
    <Function test_get_model[flask]>
    <Function test_get_model[quart]>
    <Function test_get_model[starlette]>
    <Function test_get_model[django]>
    <Function test_get_model_status[aiohttp]>
    <Function test_get_model_status[flask]>
    <Function test_get_model_status[quart]>
    <Function test_get_model_status[starlette]>
    <Function test_get_model_status[django]>
    <Function test_post_model[aiohttp]>
    <Function test_post_model[flask]>
    <Function test_post_model[quart]>
    <Function test_post_model[starlette]>
    <Function test_post_model[django]>
    <Function test_patch_union[aiohttp]>
    <Function test_patch_union[flask]>
    <Function test_patch_union[quart]>
    <Function test_patch_union[starlette]>
    <Function test_patch_union[django]>
    <Function test_custom_loader[aiohttp]>
    <Function test_custom_loader[flask]>
    <Function test_custom_loader[quart]>
    <Function test_custom_loader[starlette]>
    <Function test_custom_loader[django]>
    <Function test_models_same_name[aiohttp]>
    <Function test_models_same_name[flask]>
    <Function test_models_same_name[quart]>
    <Function test_models_same_name[starlette]>
    <Function test_models_same_name[django]>
    <Function test_response_models[aiohttp]>
    <Function test_response_models[flask]>
    <Function test_response_models[quart]>
    <Function test_response_models[starlette]>
    <Function test_response_models[django]>
    <Function test_response_union_none[aiohttp]>
    <Function test_response_union_none[flask]>
    <Function test_response_union_none[quart]>
    <Function test_response_union_none[starlette]>
    <Function test_response_union_none[django]>
    <Function test_model_with_literal[aiohttp]>
    <Function test_model_with_literal[flask]>
    <Function test_model_with_literal[quart]>
    <Function test_model_with_literal[starlette]>
    <Function test_model_with_literal[django]>
    <Function test_generic_model[aiohttp]>
    <Function test_generic_model[flask]>
    <Function test_generic_model[quart]>
    <Function test_generic_model[starlette]>
    <Function test_generic_model[django]>
    <Function test_generic_response_model[aiohttp]>
    <Function test_generic_response_model[flask]>
    <Function test_generic_response_model[quart]>
    <Function test_generic_response_model[starlette]>
    <Function test_generic_response_model[django]>
    <Function test_sum_types_model[aiohttp]>
    <Function test_sum_types_model[flask]>
    <Function test_sum_types_model[quart]>
    <Function test_sum_types_model[starlette]>
    <Function test_sum_types_model[django]>
    <Function test_dictionary_models[aiohttp]>
    <Function test_dictionary_models[flask]>
    <Function test_dictionary_models[quart]>
    <Function test_dictionary_models[starlette]>
    <Function test_dictionary_models[django]>
    <Function test_model_with_datetime[aiohttp]>
    <Function test_model_with_datetime[flask]>
    <Function test_model_with_datetime[quart]>
    <Function test_model_with_datetime[starlette]>
    <Function test_model_with_datetime[django]>
    <Function test_same_name_models>
  <Module test_openapi_composition.py>
    <Function test_route_name_and_methods[aiohttp]>
    <Function test_route_name_and_methods[flask]>
    <Function test_route_name_and_methods[quart]>
    <Function test_route_name_and_methods[starlette]>
    <Function test_route_name_and_methods[django]>
    <Function test_native_route_name_and_methods[aiohttp]>
    <Function test_native_route_name_and_methods[flask]>
    <Function test_native_route_name_and_methods[quart]>
    <Function test_native_route_name_and_methods[starlette]>
    <Function test_native_route_name_and_methods[django]>
  <Module test_openapi_forms.py>
    <Function test_forms[aiohttp]>
    <Function test_forms[flask]>
    <Function test_forms[quart]>
    <Function test_forms[starlette]>
    <Function test_forms[django]>
  <Module test_openapi_headers.py>
    <Function test_header[aiohttp]>
    <Function test_header[flask]>
    <Function test_header[quart]>
    <Function test_header[starlette]>
    <Function test_header[django]>
    <Function test_default_header[aiohttp]>
    <Function test_default_header[flask]>
    <Function test_default_header[quart]>
    <Function test_default_header[starlette]>
    <Function test_default_header[django]>
  <Module test_openapi_metadata.py>
    <Function test_transformers>
  <Module test_openapi_uis.py>
    <Function test_elements>
    <Function test_swagger>
    <Function test_redoc>
  <Module test_shorthands.py>
    <Function test_no_openapi>
    <Function test_has_openapi>
    <Function test_unions>
    <Function test_unions_same_content_type>
    <Function test_unions_same_content_type_oneof>
    <Function test_unions_of_shorthands>
<Package sessions>
  <Module test_redis_sessions.py>
    <Function test_login_logout>
    <Function test_session_expiry>
    <Function test_openapi_security>
  <Module test_secure_cookie_sessions.py>
    <Function test_login_logout[aiohttp]>
    <Function test_session_expiry[aiohttp]>
    <Function test_login_logout[flask]>
    <Function test_session_expiry[flask]>
    <Function test_login_logout[quart]>
    <Function test_session_expiry[quart]>
    <Function test_login_logout[starlette]>
    <Function test_session_expiry[starlette]>

The difference is the presence of

  <YamlTestFile test_shorthands.yml>
    <YamlTestItem shorthand_str>
    <YamlTestItem shorthand_attrs>
    <YamlTestItem shorthand_unsupported>
    <YamlTestItem shorthand_added>

@github-actions github-actions bot removed the info-needed Issue requires more information from poster label Dec 18, 2023
@eleanorjboyd
Copy link
Member

Will investigate thanks!

@eleanorjboyd
Copy link
Member

Hello, one follow up question: did this work before the testing rewrite? You can check by opting out of the rewrite by setting this in your user settings: "python.experiments.optOutFrom": ["pythonTestAdapter"],. Trying to understand if this is a regression or existing issue, thanks

@github-actions github-actions bot added the info-needed Issue requires more information from poster label Dec 18, 2023
@Tinche
Copy link
Author

Tinche commented Dec 18, 2023

@eleanorjboyd Enabling that setting fixes the issue!

@github-actions github-actions bot removed the info-needed Issue requires more information from poster label Dec 18, 2023
@eleanorjboyd
Copy link
Member

Hi @tinChe- I am looking at this on the rewrite because we are going to turn the experiment off soon and that will remove the possibility to opt out from the experiment. Can you send an example yml file? I am using this one but pytest isn't able to discover it. Do you have a conftest.py that allows for this discovery to work similar to this: https://docs.pytest.org/en/7.1.x/example/nonpython.html? Thanks

@github-actions github-actions bot added the info-needed Issue requires more information from poster label Apr 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-testing info-needed Issue requires more information from poster triage-needed Needs assignment to the proper sub-team
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants