mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-09 13:21:42 +00:00
Reconciles the "pluginify everything" refactor (moving provider adapters, platform adapters, and terminal backends out of core into plugins/) with 267 commits of main. main had 515 edits across 635 files; our branch moved 98 files into plugins/. The dangerous class was main editing files at OLD paths that we relocated — handled below. STRUCTURAL DECISIONS - ai-gateway + vercel_sandbox: honored main's PR #33067 deletion. Dropped our orphaned plugins/terminals/vercel/ dir and all 3 stale vercel refs that survived in pyproject (workspace member, [all] entry, uv source). - tools/lazy_deps.py: kept main's version. Our branch deleted it incompletely (WIP) while main has 30 live callers + active maintenance. main's intent won. - agent/agent_runtime_helpers.py: COMBINED — main's atomic swap+rollback snapshot envelope wraps our pluginified registries-based anthropic imports. - agent/credential_pool.py: took our plugin-hook indirection AND ported main's api_key_path_explicit OAuth-masquerade security fix INTO the anthropic credential_pool_hook (it was pluginified from a pre-fix base and would have been silently dropped otherwise). - hermes_cli/model_switch.py, hermes_cli/models.py: took main's logic (cached_provider_model_ids, AI-gateway removal) then re-applied our pluginify import rewrites (agent.bedrock_adapter/anthropic_adapter -> registries namespace lookups) since those modules moved to plugins. - tools/terminal_tool.py: took main's version (vercel_sandbox deletion) then restored our lazy registry resolution for modal + daytona environments (both moved to plugins; main's direct imports would crash at runtime). - nix/checks.nix: kept both — our hermetic-boundary checks + main's messaging-variant discord.py guard. - pyproject.toml: plugin extras as workspace members (ours) + main's new wecom extra; vercel removed throughout. - uv.lock: regenerated with `uv lock` (not hand-merged); 233 packages. VERIFICATION - Zero conflict markers anywhere. - Exhaustive 17-moved-module grep: no dead imports of relocated modules in core. - Import smoke test: all hot core modules import clean. - Targeted tests (21 files incl. credential_pool, anthropic plugin, run_agent, project_metadata): pass. - 3 credential_pool security tests rewired to register the real plugin hook (core tests don't trigger plugin discovery): pass. - Full suite: remaining failures are pre-existing on premerge-oh-god (telegram collection error: setUpModule MagicMock __code__) or environmental (matrix DNS/e2ee-deps, network) — NOT introduced by this merge. See PR notes.
58693 lines
3.1 MiB
58693 lines
3.1 MiB
▶ running per-file parallel test suite via run_tests_parallel.py
|
|
(TZ=UTC LANG=C.UTF-8 PYTHONHASHSEED=0; clean env)
|
|
Discovered 1204 test files (26162 tests) under ['tests', 'plugins']; running with -j 32
|
|
[ 0.1% | 19/26162 | ✓19 | ✗ 0] ✓ plugins/model-providers/bedrock/tests/test_bedrock_transport.py (19✓, 1.5s)
|
|
[ 0.1% | 21/26162 | ✓21 | ✗ 0] ✓ plugins/model-providers/bedrock/tests/test_bedrock_1m_context.py (2✓, 1.5s)
|
|
[ 0.1% | 31/26162 | ✓31 | ✗ 0] ✓ plugins/hermes-achievements/tests/test_achievement_engine.py (10✓, 1.6s)
|
|
[ 0.2% | 47/26162 | ✓47 | ✗ 0] ✓ plugins/model-providers/azure-foundry/tests/test_azure_foundry_entra.py (16✓, 1.7s)
|
|
[ 0.2% | 52/26162 | ✓52 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_ctx_halving.py (5✓, 2.2s)
|
|
[ 0.2% | 54/26162 | ✓54 | ✗ 0] ✓ plugins/platforms/discord/tests/test_discord_lazy_install_views.py (2✓, 2.3s)
|
|
[ 0.3% | 66/26162 | ✓66 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_keychain.py (12✓, 2.3s)
|
|
[ 0.3% | 83/26162 | ✓83 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_kimi_coding_anthropic_thinking.py (17✓, 2.4s)
|
|
[ 0.4% | 92/26162 | ✓92 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_deepseek_anthropic_thinking.py (9✓, 2.6s)
|
|
[ 0.4% | 94/26162 | ✓94 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_oauth_pkce.py (2✓, 2.7s)
|
|
[ 0.4% | 95/26162 | ✓95 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_timeouts.py (1✓, 2.8s)
|
|
[ 0.5% | 134/26162 | ✓134 | ✗ 0] ✓ plugins/model-providers/azure-foundry/tests/test_azure_identity_adapter.py (39✓, 2.9s)
|
|
[ 0.6% | 150/26162 | ✓150 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_transport.py (16✓, 2.9s)
|
|
[ 0.6% | 161/26162 | ✓161 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_mcp_prefix_strip.py (11✓, 3.0s)
|
|
[ 0.6% | 163/26162 | ✓163 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_auth_commands.py (2✓, 3.0s)
|
|
[ 0.6% | 166/26162 | ✓166 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_custom_endpoint.py (3✓, 3.1s)
|
|
[ 0.6% | 169/26162 | ✓169 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_computer_use.py (3✓, 3.5s)
|
|
[ 0.7% | 186/26162 | ✓186 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_fast_command.py (17✓, 3.7s)
|
|
[ 0.7% | 193/26162 | ✓193 | ✗ 0] ✓ plugins/platforms/matrix/tests/test_matrix_voice.py (7✓, 1.4s)
|
|
[ 0.8% | 199/26162 | ✓199 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_model_flow_stale_oauth.py (6✓, 3.8s)
|
|
[ 0.8% | 208/26162 | ✓208 | ✗ 0] ✓ plugins/model-providers/azure-foundry/tests/test_auxiliary_client_azure_foundry.py (9✓, 3.9s)
|
|
[ 1.2% | 326/26162 | ✓326 | ✗ 0] ✓ plugins/model-providers/bedrock/tests/test_bedrock_adapter.py (118✓, 4.1s)
|
|
[ 1.3% | 328/26162 | ✓328 | ✗ 0] ✓ plugins/platforms/matrix/tests/test_matrix_exec_approval.py (2✓, 1.9s)
|
|
[ 1.3% | 339/26162 | ✓339 | ✗ 0] ✓ plugins/platforms/slack/tests/test_slack_channel_skills.py (11✓, 1.7s)
|
|
[ 1.4% | 362/26162 | ✓362 | ✗ 0] ✓ plugins/platforms/slack/tests/test_slack_approval_buttons.py (23✓, 2.4s)
|
|
[ 1.6% | 414/26162 | ✓414 | ✗ 0] ✓ plugins/platforms/matrix/tests/test_matrix_mention.py (52✓, 2.9s)
|
|
[ 1.6% | 417/26162 | ✓414 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_channel_posts.py (3e, 1.8s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_channel_posts.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ specs = <MagicMock name='mock.pytest_plugins' id='140228153637248'>
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='140228153637248'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_channel_posts.py::test_build_message_event_uses_channel_identity_for_channel_posts
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_channel_posts.py::test_text_handler_uses_effective_message_for_channel_post
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_channel_posts.py::test_command_handler_uses_effective_message_for_channel_post
|
|
║ ============================== 3 errors in 0.82s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_channel_posts.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 1.6% | 422/26162 | ✓414 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py (5e, 2.4s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py::test_voice_message_still_transcribed
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py::test_audio_attachment_skips_stt
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py::test_audio_attachment_context_note_format
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py::test_audio_attachment_skips_stt_when_stt_disabled
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py::test_telegram_media_type_detection_audio_vs_voice
|
|
║ ============================== 5 errors in 1.71s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 1.6% | 427/26162 | ✓414 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py (5e, 2.5s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py::TestCallbackAuthFailClosed::test_no_allowlist_no_allow_all_denies
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py::TestCallbackAuthFailClosed::test_no_allowlist_with_global_allow_all_permits
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py::TestCallbackAuthFailClosed::test_allowlist_with_matching_user_permits
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py::TestCallbackAuthFailClosed::test_allowlist_without_matching_user_denies
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py::TestCallbackAuthFailClosed::test_allowlist_wildcard_permits
|
|
║ ============================== 5 errors in 1.73s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 1.9% | 495/26162 | ✓414 | ✗ 0] ✗ plugins/platforms/dingtalk/tests/test_dingtalk.py (68e, 5.7s)
|
|
|
|
╔╍ Failed: plugins/platforms/dingtalk/tests/test_dingtalk.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestAllowedUsersGate::test_rejects_unknown_user
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestAllowedUsersGate::test_env_var_csv_populates_allowlist
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_empty_patterns_list
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_pattern_matches_text
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_pattern_is_case_insensitive
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_invalid_regex_is_skipped_not_raised
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_env_var_json_populates_patterns
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_env_var_newline_fallback_when_not_json
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_dm_always_accepted
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_group_rejected_when_require_mention_and_no_trigger
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_group_accepted_when_require_mention_disabled
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_group_accepted_when_bot_is_mentioned
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_group_accepted_when_text_matches_wake_word
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_group_accepted_when_chat_in_free_response_list
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestIncomingHandlerProcess::test_process_extracts_session_webhook
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestIncomingHandlerProcess::test_process_fallback_session_webhook_when_from_dict_misses_it
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestIncomingHandlerProcess::test_process_returns_ack_immediately
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractTextMentions::test_preserves_at_mentions_in_text
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractTextMentions::test_dingtalk_in_platform_enum
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMessageContextIsolation::test_contexts_keyed_by_chat_id
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_final_reply_finalizes_card
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_intermediate_send_stays_streaming
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_done_fires_only_when_reply_to_is_set
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_edit_message_finalize_fires_done
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_edit_message_finalize_false_tracks_sibling
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_next_send_auto_closes_sibling_streaming_cards
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_edit_message_requires_message_id
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_fire_done_reaction_is_idempotent
|
|
║ ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDingTalkAdapterAICards::test_send_uses_ai_card_if_configured
|
|
║ ============================== 68 errors in 4.96s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/dingtalk/tests/test_dingtalk.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 1.9% | 498/26162 | ✓414 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py (3e, 1.7s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ specs = <MagicMock name='mock.pytest_plugins' id='132774752073056'>
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132774752073056'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py::test_max_doc_bytes_defaults_to_20mb_without_base_url
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py::test_max_doc_bytes_raised_to_2gb_when_base_url_set
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py::test_max_doc_bytes_empty_base_url_keeps_default
|
|
║ ============================== 3 errors in 0.98s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 1.9% | 503/26162 | ✓414 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_forum_commands.py (5e, 2.1s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_forum_commands.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_forum_commands.py::test_ensure_forum_commands_skips_non_forum
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_forum_commands.py::test_ensure_forum_commands_skips_already_registered
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_forum_commands.py::test_ensure_forum_commands_registers_once
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_forum_commands.py::test_ensure_forum_commands_handles_set_failure
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_forum_commands.py::test_ensure_forum_commands_race_safety
|
|
║ ============================== 5 errors in 1.36s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_forum_commands.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 2.0% | 524/26162 | ✓435 | ✗ 0] ✓ plugins/model-providers/bedrock/tests/test_bedrock_model_picker.py (21✓, 6.6s)
|
|
[ 2.0% | 530/26162 | ✓435 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_conflict.py (6e, 2.9s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_conflict.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_connect_rejects_same_host_token_lock
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_polling_conflict_retries_before_fatal
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_polling_conflict_becomes_fatal_after_retries
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_connect_marks_retryable_fatal_error_for_startup_network_failure
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_connect_clears_webhook_before_polling
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_disconnect_skips_inactive_updater_and_app
|
|
║ ============================== 6 errors in 2.26s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_conflict.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 2.6% | 683/26162 | ✓588 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_adapter.py (153✓, 7.0s)
|
|
[ 2.7% | 696/26162 | ✓588 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_caption_merge.py (13e, 4.9s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_caption_merge.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionBasic::test_no_existing_text
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionBasic::test_empty_existing_text
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionBasic::test_exact_duplicate_dropped
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionBasic::test_different_captions_merged
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionSubstringBug::test_shorter_caption_not_dropped_when_substring
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionSubstringBug::test_longer_caption_not_dropped_when_contains_existing
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionSubstringBug::test_prefix_caption_not_dropped
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionWhitespace::test_trailing_space_treated_as_duplicate
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionWhitespace::test_leading_space_treated_as_duplicate
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionWhitespace::test_whitespace_only_new_text_not_added
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionMultipleItems::test_three_unique_captions_all_present
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionMultipleItems::test_duplicate_in_middle_dropped
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionMultipleItems::test_album_scenario_revenue_profit
|
|
║ ============================== 13 errors in 4.49s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_caption_merge.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 2.7% | 700/26162 | ✓588 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_model_picker.py (4e, 3.0s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_model_picker.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ specs = <MagicMock name='mock.pytest_plugins' id='123481316360464'>
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123481316360464'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_model_picker.py::TestTelegramModelPicker::test_send_model_picker_escapes_dynamic_provider_label
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_model_picker.py::TestTelegramModelPicker::test_back_button_escapes_dynamic_provider_label
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_model_picker.py::TestTelegramModelPicker::test_model_selected_edits_message_on_success
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_model_picker.py::TestTelegramModelPicker::test_retries_without_thread_when_thread_not_found
|
|
║ ============================== 4 errors in 2.08s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_model_picker.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 2.7% | 704/26162 | ✓588 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_reply_quote.py (4e, 2.0s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_reply_quote.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ specs = <MagicMock name='mock.pytest_plugins' id='137476939102832'>
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137476939102832'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_quote.py::test_native_partial_quote_used_as_reply_to_text
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_quote.py::test_full_reply_text_used_when_no_native_quote
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_quote.py::test_caption_fallback_when_no_quote_and_no_text
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_quote.py::test_empty_quote_text_falls_back_to_full_reply
|
|
║ ============================== 4 errors in 1.33s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_reply_quote.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 2.7% | 707/26162 | ✓588 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_send_path_health.py (3e, 2.1s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_send_path_health.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ specs = <MagicMock name='mock.pytest_plugins' id='130780192767872'>
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130780192767872'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_send_path_health.py::test_send_succeeds_when_path_healthy
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_send_path_health.py::test_send_short_circuits_when_path_degraded
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_send_path_health.py::test_reconnect_storm_sets_and_heartbeat_clears_flag
|
|
║ ============================== 3 errors in 1.36s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_send_path_health.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 2.7% | 719/26162 | ✓588 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py (12e, 5.7s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramSendClarify::test_multi_choice_renders_buttons_and_other
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramSendClarify::test_open_ended_no_keyboard
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramSendClarify::test_not_connected
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramSendClarify::test_long_choice_rendered_in_body_not_truncated
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramSendClarify::test_html_escapes_question
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramClarifyCallback::test_numeric_choice_resolves_with_choice_text
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramClarifyCallback::test_other_button_flips_to_text_mode
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramClarifyCallback::test_already_resolved
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramClarifyCallback::test_unauthorized_user_rejected
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramClarifyCallback::test_invalid_choice_token
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestBaseAdapterClarifyFallback::test_numbered_text_fallback
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestBaseAdapterClarifyFallback::test_open_ended_fallback_renders_question_only
|
|
║ ============================== 12 errors in 4.49s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 2.9% | 749/26162 | ✓618 | ✗ 0] ✓ plugins/platforms/feishu/tests/test_feishu_comment_rules.py (30✓, 8.6s)
|
|
[ 2.9% | 769/26162 | ✓618 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_approval_buttons.py (20e, 7.3s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_approval_buttons.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_sends_inline_keyboard
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_stores_approval_state
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_sends_in_thread
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_retries_without_thread_when_thread_not_found
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_not_connected
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_disable_link_previews_sets_preview_kwargs
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_send_update_prompt_escapes_dynamic_prompt
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_truncates_long_command
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_resolves_approval_on_click
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_resume_typing_after_inline_approval
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_typing_stays_paused_when_resolve_returns_zero
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_approval_callback_escapes_dynamic_user_name
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_deny_button
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_approval_callback_rejects_user_blocked_by_global_allowlist
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_already_resolved
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_model_picker_callback_not_affected
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_update_prompt_callback_not_affected
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_update_prompt_callback_rejects_unauthorized_user
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_update_prompt_callback_rejects_user_blocked_by_global_allowlist
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_update_prompt_callback_allows_authorized_user
|
|
║ ============================== 20 errors in 5.93s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_approval_buttons.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 3.0% | 796/26162 | ✓645 | ✗ 0] ✓ plugins/platforms/feishu/tests/test_feishu_onboard.py (27✓, 8.7s)
|
|
[ 3.1% | 799/26162 | ✓645 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_slash_confirm.py (3e, 2.3s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_slash_confirm.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ specs = <MagicMock name='mock.pytest_plugins' id='125076534375872'>
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125076534375872'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_slash_confirm.py::TestSendSlashConfirm::test_uses_markdown_v2_and_escapes_special_chars
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_slash_confirm.py::TestSendSlashConfirm::test_stores_slash_confirm_state
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_slash_confirm.py::TestSendSlashConfirm::test_not_connected_returns_failure
|
|
║ ============================== 3 errors in 1.18s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_slash_confirm.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 3.1% | 804/26162 | ✓645 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_status_update.py (5e, 2.0s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_status_update.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_status_update.py::test_first_call_sends_and_caches_message_id
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_status_update.py::test_second_call_edits_in_place
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_status_update.py::test_edit_failure_falls_back_to_fresh_send
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_status_update.py::test_distinct_status_keys_do_not_collide
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_status_update.py::test_distinct_chat_ids_do_not_collide
|
|
║ ============================== 5 errors in 1.52s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_status_update.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 3.1% | 819/26162 | ✓645 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_network_reconnect.py (15e, 5.2s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_network_reconnect.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_self_schedules_on_start_polling_failure
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_does_not_self_schedule_when_fatal_error_set
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_success_resets_error_count
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_triggers_fatal_after_max_retries
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_drains_polling_request_only
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_continues_if_drain_fails
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_initialize_still_runs_when_shutdown_fails
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_conflict_retry_also_drains_polling_connections
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_drain_helper_noop_without_app
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_heartbeat_probe_no_op_when_polling_healthy
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_heartbeat_probe_reenters_ladder_when_updater_not_running
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_heartbeat_probe_reenters_ladder_when_get_me_times_out
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_heartbeat_probe_reenters_ladder_on_get_me_network_error
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_heartbeat_probe_skips_when_already_fatal
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_schedules_heartbeat_probe_on_success
|
|
║ ============================== 15 errors in 4.70s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_network_reconnect.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 3.4% | 879/26162 | ✓705 | ✗ 0] ✓ plugins/platforms/feishu/tests/test_feishu_bot_admission.py (60✓, 10.7s)
|
|
[ 3.5% | 914/26162 | ✓725 | ✗ 0] ✗ plugins/platforms/feishu/tests/test_feishu_approval_buttons.py (20✓ 15e, 10.9s)
|
|
|
|
╔╍ Failed: plugins/platforms/feishu/tests/test_feishu_approval_buttons.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ .venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26: DeprecationWarning: There is no current event loop
|
|
║ loop = asyncio.get_event_loop()
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
║ def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
║ warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_drops_action_when_loop_not_ready
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_returns_card_for_approve_action
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_returns_card_for_deny_action
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_ignores_missing_approval_id
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_no_card_for_non_approval_action
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_falls_back_to_open_id_when_name_not_cached
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_ignores_expired_cached_name
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_rejects_approval_click_from_unauthorized_user
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_rejects_approval_click_when_callback_chat_mismatches
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_returns_card_for_update_prompt_yes
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_returns_card_for_update_prompt_no
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_ignores_missing_update_prompt_id
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_already_resolved_update_prompt_returns_no_card
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_update_prompt_schedule_failure_returns_no_card
|
|
║ ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_update_prompt_unauthorized_operator_returns_no_card
|
|
║ ================== 20 passed, 4 warnings, 15 errors in 7.91s ===================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/feishu/tests/test_feishu_approval_buttons.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 3.5% | 928/26162 | ✓739 | ✗ 0] ✓ plugins/platforms/feishu/tests/test_setup_feishu.py (14✓, 9.4s)
|
|
[ 3.6% | 948/26162 | ✓759 | ✗ 0] ✓ plugins/platforms/feishu/tests/test_feishu_comment.py (20✓, 9.6s)
|
|
[ 3.6% | 953/26162 | ✓759 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_text_batching.py (5e, 2.3s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_text_batching.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batching.py::TestTextBatching::test_single_message_dispatched_after_delay
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batching.py::TestTextBatching::test_split_messages_aggregated
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batching.py::TestTextBatching::test_three_way_split_aggregated
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batching.py::TestTextBatching::test_different_chats_not_merged
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batching.py::TestTextBatching::test_batch_cleans_up_after_flush
|
|
║ ============================== 5 errors in 1.59s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_text_batching.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 3.7% | 979/26162 | ✓759 | ✗ 0] ✗ plugins/stt/tests/test_transcription.py (26e, 1.2s)
|
|
|
|
╔╍ Failed: plugins/stt/tests/test_transcription.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:293
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_local_when_available
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_explicit_local_no_cloud_fallback
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_local_nothing_available
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_openai_when_key_set
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_explicit_openai_no_key_returns_none
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_default_provider_is_local
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_disabled_config_returns_none
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestValidateAudioFile::test_missing_file
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestValidateAudioFile::test_unsupported_format
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestValidateAudioFile::test_valid_file_returns_none
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestValidateAudioFile::test_too_large
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestTranscribeLocal::test_successful_transcription
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestTranscribeLocal::test_not_installed
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestTranscribeOpenAI::test_no_key
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestTranscribeOpenAI::test_successful_transcription
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestTranscribeAudio::test_dispatches_to_local
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestTranscribeAudio::test_dispatches_to_openai
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestTranscribeAudio::test_no_provider_returns_error
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestTranscribeAudio::test_disabled_config_returns_disabled_error
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestTranscribeAudio::test_invalid_file_returns_error
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_openai_model_name_maps_to_default
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_groq_model_name_maps_to_default
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_valid_local_model_preserved
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_none_maps_to_default
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_warning_emitted_for_cloud_model
|
|
║ ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_local_transcribe_normalises_model
|
|
║ ============================== 26 errors in 0.62s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/stt/tests/test_transcription.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 3.8% | 998/26162 | ✓759 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py (19e, 7.1s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestRealMentionsAreDetected::test_mention_at_start_of_message
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestRealMentionsAreDetected::test_mention_mid_sentence
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestRealMentionsAreDetected::test_mention_at_end_of_message
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestRealMentionsAreDetected::test_mention_in_caption
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestRealMentionsAreDetected::test_text_mention_entity_targets_bot
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_email_like_substring
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_hostname_substring
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_superstring_username
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_underscore_suffix_substring
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_substring_inside_url_without_entity
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_substring_inside_code_block_without_entity
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_plain_text_with_no_at_sign
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_email_substring_in_caption
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestEntityEdgeCases::test_mention_entity_for_different_username
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestEntityEdgeCases::test_text_mention_entity_for_different_user
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestEntityEdgeCases::test_malformed_entity_with_negative_offset
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestEntityEdgeCases::test_malformed_entity_with_zero_length
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestCaseInsensitivity::test_uppercase_mention
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestCaseInsensitivity::test_mixed_case_mention
|
|
║ ============================== 19 errors in 5.98s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 3.9% | 1008/26162 | ✓769 | ✗ 0] ✓ plugins/tts/tests/test_tts_kittentts.py (10✓, 1.4s)
|
|
[ 4.2% | 1104/26162 | ✓769 | ✗ 0] ✗ plugins/stt/tests/test_transcription_tools.py (96e, 2.5s)
|
|
|
|
╔╍ Failed: plugins/stt/tests/test_transcription_tools.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_mistral_explicit_no_sdk_returns_none
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_auto_detect_skips_mistral
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_auto_detect_openai_preferred_over_mistral
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_auto_detect_groq_preferred_over_mistral
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_auto_detect_skips_mistral_without_sdk
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioMistralDispatch::test_dispatches_to_mistral
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioMistralDispatch::test_config_mistral_model_used
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioMistralDispatch::test_model_override_passed_to_mistral
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_no_key
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_successful_transcription
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_whitespace_stripped
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_api_error_returns_failure
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_empty_transcript_returns_failure
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_permission_error
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_network_error_returns_failure
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_sends_language_and_format
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_custom_base_url
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_diarize_sent_when_configured
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderXAI::test_xai_when_key_set
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderXAI::test_xai_explicit_no_key_returns_none
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderXAI::test_auto_detect_xai_after_mistral
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderXAI::test_auto_detect_mistral_skipped_xai_wins
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderXAI::test_auto_detect_no_key_returns_none
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioXAIDispatch::test_dispatches_to_xai
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioXAIDispatch::test_model_default_is_grok_stt
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioXAIDispatch::test_model_override_passed_to_xai
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestShellSafety::test_auto_detected_template_is_shlex_safe
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestShellSafety::test_env_var_template_uses_shell_path
|
|
║ ERROR plugins/stt/tests/test_transcription_tools.py::TestShellSafety::test_no_env_var_uses_list_mode
|
|
║ ============================== 96 errors in 1.74s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/stt/tests/test_transcription_tools.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 4.3% | 1120/26162 | ✓785 | ✗ 0] ✓ plugins/tts/tests/test_tts_mistral.py (16✓, 1.4s)
|
|
[ 4.3% | 1125/26162 | ✓785 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_webhook_secret.py (5e, 3.2s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_webhook_secret.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ def _get_plugin_specs_as_list(
|
|
║ specs: None | types.ModuleType | str | Sequence[str],
|
|
║ ) -> list[str]:
|
|
║ """Parse a plugins specification into a list of plugin names."""
|
|
║ # None means empty.
|
|
║ if specs is None:
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_webhook_secret.py::TestTelegramWebhookSecretRequired::test_webhook_branch_checks_secret
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_webhook_secret.py::TestTelegramWebhookSecretRequired::test_guard_raises_runtime_error
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_webhook_secret.py::TestTelegramWebhookSecretRequired::test_guard_message_includes_advisory_link
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_webhook_secret.py::TestTelegramWebhookSecretRequired::test_guard_message_explains_remediation
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_webhook_secret.py::TestTelegramWebhookSecretRequired::test_polling_branch_has_no_secret_guard
|
|
║ ============================== 5 errors in 2.17s ===============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_webhook_secret.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 4.3% | 1137/26162 | ✓785 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py (12e, 4.7s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ return []
|
|
║ # Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
║ if isinstance(specs, types.ModuleType):
|
|
║ return []
|
|
║ # Comma-separated list.
|
|
║ if isinstance(specs, str):
|
|
║ return specs.split(",") if specs else []
|
|
║ # Direct specification.
|
|
║ if isinstance(specs, collections.abc.Sequence):
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_default_when_unset
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_parses_valid_value
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_falls_back_to_default_on_garbage
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_rejects_nan
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_rejects_inf
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_clamps_below_min
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_clamps_above_max
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestAdaptiveTextBatchTiers::test_class_constants_are_sensible
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestAdaptiveTextBatchTiers::test_fast_tier_uses_min_with_configured_cap
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestAdaptiveTextBatchTiers::test_short_tier_uses_min_with_configured_cap
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestAdaptiveTextBatchTiers::test_long_message_uses_full_cap
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestAdaptiveTextBatchTiers::test_split_threshold_takes_priority_over_fast_tier
|
|
║ ============================== 12 errors in 4.07s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 4.4% | 1153/26162 | ✓801 | ✗ 0] ✓ plugins/tts/tests/test_tts_piper.py (16✓, 1.2s)
|
|
[ 4.6% | 1195/26162 | ✓843 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_minimax_provider.py (42✓, 13.9s)
|
|
[ 4.6% | 1199/26162 | ✓847 | ✗ 0] ✓ plugins/tts/tests/test_tts_path_traversal.py (4✓, 1.8s)
|
|
[ 4.7% | 1226/26162 | ✓874 | ✗ 0] ✓ plugins/tts/tests/test_tts_max_text_length.py (27✓, 2.5s)
|
|
[ 4.8% | 1245/26162 | ✓893 | ✗ 0] ✓ plugins/tts/tests/test_tts_speed.py (19✓, 1.3s)
|
|
[ 4.8% | 1250/26162 | ✓898 | ✗ 0] ✓ plugins/tts/tests/test_tts_xai_speech_tags.py (5✓, 1.7s)
|
|
[ 4.8% | 1257/26162 | ✓905 | ✗ 0] ✓ tests/acp/test_approval_isolation.py (7✓, 1.4s)
|
|
[ 4.9% | 1278/26162 | ✓905 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_reactions.py (21e, 8.5s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_reactions.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ return list(specs)
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_disabled_by_default
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_enabled_when_set_true
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_enabled_with_1
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_disabled_with_false
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_disabled_with_0
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_disabled_with_no
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_set_reaction_calls_bot_api
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_set_reaction_returns_false_without_bot
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_set_reaction_handles_api_error_gracefully
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_start_adds_eyes_reaction
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_start_skipped_when_disabled
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_start_handles_missing_ids
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_complete_success
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_complete_failure
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_complete_skipped_when_disabled
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_complete_cancelled_clears_reaction
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_complete_cancelled_skipped_when_disabled
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_clear_reactions_handles_api_error_gracefully
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_clear_reactions_returns_false_without_bot
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_config_bridges_telegram_reactions
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_config_reactions_env_takes_precedence
|
|
║ ============================== 21 errors in 7.81s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_reactions.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 5.0% | 1299/26162 | ✓926 | ✗ 0] ✓ plugins/model-providers/anthropic/tests/test_anthropic_auxiliary.py (21✓, 14.9s)
|
|
[ 5.1% | 1325/26162 | ✓952 | ✗ 0] ✓ plugins/terminals/daytona/tests/test_daytona_environment.py (26✓, 4.5s)
|
|
[ 5.1% | 1347/26162 | ✓952 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py (22e, 9.0s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ > raise UsageError(
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[httpx.ConnectError: Connection refused]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[telegram.error.NetworkError: httpx.ConnectError]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[NetworkError: remote end closed connection without response]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[httpx.ReadTimeout: read timed out]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[ReadTimeout: timed out]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[Server disconnected]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[Temporarily unavailable]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[Temporary failure in name resolution]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[Connection error: failed to connect]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[Bad Request: message to edit not found]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[Bad Request: message can't be edited]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[Bad Request: not enough rights to edit the message]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[Bad Request: MESSAGE_ID_INVALID]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[flood_control:30.0]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[Forbidden: bot was blocked by the user]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_send_result_retryable_default_is_false
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_send_result_retryable_can_be_set_true
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_send_result_retryable_false_for_permanent
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_failure_keeps_can_edit_true
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_failure_sets_can_edit_false
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_multiple_transient_then_success_keeps_can_edit_true
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_flood_control_sets_can_edit_false
|
|
║ ============================== 22 errors in 8.55s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 5.2% | 1357/26162 | ✓962 | ✗ 0] ✓ tests/acp/test_auth.py (10✓, 2.4s)
|
|
[ 5.2% | 1366/26162 | ✓971 | ✗ 0] ✓ tests/acp/test_permissions.py (9✓, 2.1s)
|
|
[ 5.2% | 1372/26162 | ✓977 | ✗ 0] ✓ tests/acp/test_registry_manifest.py (6✓, 1.4s)
|
|
[ 5.4% | 1413/26162 | ✓977 | ✗ 0] ✗ plugins/platforms/telegram/tests/test_telegram_documents.py (41e, 12.6s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_documents.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_missing_filename_and_mime_rejected
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_unicode_decode_error_handled
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_text_injection_capped
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_download_exception_handled
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestVideoDownloadBlock::test_native_video_is_cached
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestVideoDownloadBlock::test_mp4_document_is_treated_as_video
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestMediaGroups::test_non_album_photo_burst_is_buffered_and_combined
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestMediaGroups::test_photo_album_is_buffered_and_combined
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestMediaGroups::test_disconnect_cancels_pending_media_group_flush
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVoice::test_flac_falls_back_to_document
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVoice::test_wav_falls_back_to_document
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVoice::test_mp3_routes_to_send_audio
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_success
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_custom_filename
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_file_not_found
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_workspace_path_has_docker_hint
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_outputs_path_has_docker_hint
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_not_connected
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_caption_truncated
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_api_error_falls_back
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_reply_to
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_thread_id
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestTelegramPhotoBatching::test_flush_photo_batch_does_not_drop_newer_scheduled_task
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestTelegramPhotoBatching::test_disconnect_cancels_pending_photo_batch_tasks
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVideo::test_send_video_success
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVideo::test_send_video_file_not_found
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVideo::test_send_video_workspace_path_has_docker_hint
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVideo::test_send_video_not_connected
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVideo::test_send_video_thread_id
|
|
║ ============================= 41 errors in 11.83s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_documents.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 5.5% | 1428/26162 | ✓992 | ✗ 0] ✓ plugins/tts/tests/test_tts_gemini.py (15✓, 5.5s)
|
|
[ 5.7% | 1483/26162 | ✓1045 | ✗ 2] ✗ plugins/platforms/slack/tests/test_slack_mention.py (53✓ 2✗, 14.1s)
|
|
|
|
╔╍ Failed: plugins/platforms/slack/tests/test_slack_mention.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ monkeypatch.setenv("HERMES_HOME", str(hermes_home))
|
|
║ monkeypatch.setenv("SLACK_BOT_TOKEN", "xoxb-test")
|
|
║
|
|
║ config = load_gateway_config()
|
|
║
|
|
║ slack_config = config.platforms[Platform.SLACK]
|
|
║ > assert slack_config.enabled is False
|
|
║ E AssertionError: assert True is False
|
|
║ E + where True = PlatformConfig(enabled=True, token='xoxb-test', api_key=None, home_channel=None, reply_to_mode='first', gateway_restart_notification=True, extra={'reply_in_thread': False}).enabled
|
|
║
|
|
║ plugins/platforms/slack/tests/test_slack_mention.py:452: AssertionError
|
|
║ =============================== warnings summary ===============================
|
|
║ plugins/platforms/slack/tests/test_slack_mention.py::test_config_bridges_slack_free_response_channels
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
║ _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
║
|
|
║ plugins/platforms/slack/tests/test_slack_mention.py::test_config_bridges_slack_free_response_channels
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
║ def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
║
|
|
║ plugins/platforms/slack/tests/test_slack_mention.py::test_config_bridges_slack_free_response_channels
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
║ warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED plugins/platforms/slack/tests/test_slack_mention.py::test_explicit_top_level_slack_enabled_false_wins_over_env_token
|
|
║ FAILED plugins/platforms/slack/tests/test_slack_mention.py::test_explicit_platforms_slack_enabled_false_wins_over_env_token
|
|
║ ================== 2 failed, 53 passed, 3 warnings in 10.76s ===================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/slack/tests/test_slack_mention.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 5.7% | 1502/26162 | ✓1064 | ✗ 2] ✓ tests/acp/test_events.py (19✓, 3.1s)
|
|
[ 5.8% | 1518/26162 | ✓1080 | ✗ 2] ✓ plugins/model-providers/anthropic/tests/test_anthropic_agent_integration.py (16✓, 17.3s)
|
|
[ 5.8% | 1527/26162 | ✓1089 | ✗ 2] ✓ tests/acp/test_ping_suppression.py (9✓, 2.8s)
|
|
[ 5.9% | 1534/26162 | ✓1096 | ✗ 2] ✓ tests/agent/lsp/test_broken_set.py (7✓, 1.3s)
|
|
[ 5.9% | 1539/26162 | ✓1101 | ✗ 2] ✓ tests/acp_adapter/test_detect_provider_entra.py (5✓, 1.8s)
|
|
[ 5.9% | 1545/26162 | ✓1107 | ✗ 2] ✓ tests/agent/lsp/test_client_e2e.py (6✓, 1.3s)
|
|
[ 5.9% | 1551/26162 | ✓1113 | ✗ 2] ✓ tests/acp_adapter/test_acp_commands.py (6✓, 2.8s)
|
|
[ 6.1% | 1606/26162 | ✓1167 | ✗ 3] ✗ plugins/model-providers/bedrock/tests/test_bedrock_integration.py (54✓ 1✗, 18.0s)
|
|
|
|
╔╍ Failed: plugins/model-providers/bedrock/tests/test_bedrock_integration.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ from agent.anthropic_aux import AsyncAnthropicAuxiliaryClient
|
|
║ client, model = resolve_provider_client("bedrock", None, async_mode=True)
|
|
║
|
|
║ assert client is not None
|
|
║ > assert isinstance(client, AsyncAnthropicAuxiliaryClient)
|
|
║ E AssertionError: assert False
|
|
║ E + where False = isinstance(<openai.AsyncOpenAI object at 0x74ef1f2f7fe0>, <class 'agent.anthropic_aux.AsyncAnthropicAuxiliaryClient'>)
|
|
║
|
|
║ plugins/model-providers/bedrock/tests/test_bedrock_integration.py:595: AssertionError
|
|
║ =============================== warnings summary ===============================
|
|
║ plugins/model-providers/bedrock/tests/test_bedrock_integration.py::TestBedrockPreserveDotsFlag::test_bedrock_provider_preserves_dots
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
║ import audioop
|
|
║
|
|
║ plugins/model-providers/bedrock/tests/test_bedrock_integration.py::TestBedrockPreserveDotsFlag::test_bedrock_provider_preserves_dots
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
║ _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
║
|
|
║ plugins/model-providers/bedrock/tests/test_bedrock_integration.py::TestBedrockPreserveDotsFlag::test_bedrock_provider_preserves_dots
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
║ def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
║
|
|
║ plugins/model-providers/bedrock/tests/test_bedrock_integration.py::TestBedrockPreserveDotsFlag::test_bedrock_provider_preserves_dots
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
║ warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED plugins/model-providers/bedrock/tests/test_bedrock_integration.py::TestAuxiliaryClientBedrockResolution::test_bedrock_async_mode
|
|
║ ================== 1 failed, 54 passed, 4 warnings in 12.68s ===================
|
|
║
|
|
║ Repro: python -m pytest plugins/model-providers/bedrock/tests/test_bedrock_integration.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 6.2% | 1616/26162 | ✓1177 | ✗ 3] ✓ tests/acp/test_entry.py (10✓, 4.2s)
|
|
[ 6.2% | 1621/26162 | ✓1182 | ✗ 3] ✓ tests/agent/lsp/test_backend_gate.py (5✓, 2.0s)
|
|
[ 6.3% | 1661/26162 | ✓1182 | ✗ 3] ✗ plugins/platforms/telegram/tests/test_telegram_group_gating.py (40e, 14.0s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_group_gating.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_group_messages_can_require_direct_trigger_via_config
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_explicit_multi_bot_mentions_route_only_to_named_bots
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_entityless_multi_bot_mentions_still_route_exclusively
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_intern_bots_ignore_messages_addressed_to_other_intern_bot
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_bot_command_addressed_to_other_bot_is_exclusive_even_when_mentions_not_required
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_raw_bot_mention_fallback_does_not_match_email_or_substring
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_exclusive_bot_mentions_can_be_disabled_for_legacy_groups
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_free_response_chats_bypass_mention_requirement
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_guest_mode_allows_only_direct_mentions_outside_allowed_chats
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_guest_mode_defaults_to_false_for_allowed_chat_bypass
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_guest_mode_mention_dropped_in_ignored_thread
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_ignored_threads_drop_group_messages_before_other_gates
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_allowed_topics_drop_other_forum_topics_before_other_gates
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_allowed_topics_do_not_filter_dms
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_allowed_topics_treat_missing_thread_as_general_topic
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_regex_mention_patterns_allow_custom_wake_words
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_invalid_regex_patterns_are_ignored
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_config_bridges_telegram_group_settings
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_config_bridges_telegram_user_allowlists
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_config_env_overrides_telegram_user_allowlists
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_dm_allow_from_is_enforced_by_gateway_authorization_not_trigger_gate
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_group_allow_from_is_enforced_by_gateway_authorization_not_trigger_gate
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_top_level_require_mention_bridges_to_telegram
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_top_level_require_mention_does_not_override_telegram_section
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_config_bridges_telegram_ignored_threads
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_unmentioned_location_message_observed_in_group
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_triggered_location_message_uses_shared_session_in_observe_mode
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_unmentioned_voice_message_observed_in_group
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_triggered_voice_message_uses_shared_session_in_observe_mode
|
|
║ ============================= 40 errors in 13.23s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_group_gating.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 6.4% | 1668/26162 | ✓1189 | ✗ 3] ✓ plugins/model-providers/anthropic/tests/test_anthropic_third_party_oauth_guard.py (7✓, 18.5s)
|
|
[ 6.4% | 1669/26162 | ✓1189 | ✗ 3] ✗ plugins/platforms/telegram/tests/test_telegram_photo_interrupts.py (1e, 12.8s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_photo_interrupts.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
║ )
|
|
║ E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='138685403012736'>
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
║ =============================== warnings summary ===============================
|
|
║ .venv/lib/python3.12/site-packages/discord/player.py:30
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
║ import audioop
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
║ _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26: DeprecationWarning: There is no current event loop
|
|
║ loop = asyncio.get_event_loop()
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
║ def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
║ warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_photo_interrupts.py::test_handle_message_does_not_priority_interrupt_photo_followup
|
|
║ ========================= 5 warnings, 1 error in 8.30s =========================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_photo_interrupts.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 6.6% | 1739/26162 | ✓1259 | ✗ 3] ✓ tests/acp/test_tools.py (70✓, 3.8s)
|
|
[ 6.7% | 1747/26162 | ✓1267 | ✗ 3] ✓ tests/acp_adapter/test_acp_images.py (8✓, 3.0s)
|
|
[ 6.7% | 1755/26162 | ✓1275 | ✗ 3] ✓ tests/agent/lsp/test_lifecycle.py (8✓, 1.3s)
|
|
[ 6.8% | 1773/26162 | ✓1293 | ✗ 3] ✓ tests/agent/lsp/test_eventlog.py (18✓, 1.6s)
|
|
[ 6.8% | 1785/26162 | ✓1305 | ✗ 3] ✓ tests/agent/lsp/test_install_and_lint_fixes.py (12✓, 1.7s)
|
|
[ 6.9% | 1803/26162 | ✓1323 | ✗ 3] ✓ tests/agent/lsp/test_delta_key.py (18✓, 2.2s)
|
|
[ 7.0% | 1821/26162 | ✓1341 | ✗ 3] ✓ tests/agent/lsp/test_protocol.py (18✓, 1.4s)
|
|
[ 7.0% | 1827/26162 | ✓1347 | ✗ 3] ✓ tests/agent/test_async_utils.py (6✓, 1.1s)
|
|
[ 7.0% | 1837/26162 | ✓1357 | ✗ 3] ✓ tests/agent/lsp/test_reporter.py (10✓, 1.5s)
|
|
[ 7.0% | 1842/26162 | ✓1362 | ✗ 3] ✓ tests/agent/lsp/test_service.py (5✓, 1.5s)
|
|
[ 7.8% | 2043/26162 | ✓1563 | ✗ 3] ✓ plugins/platforms/feishu/tests/test_feishu.py (201✓, 19.6s)
|
|
[ 7.9% | 2054/26162 | ✓1574 | ✗ 3] ✓ tests/agent/lsp/test_diagnostics_field.py (11✓, 2.6s)
|
|
[ 7.9% | 2066/26162 | ✓1586 | ✗ 3] ✓ tests/agent/lsp/test_workspace.py (12✓, 1.8s)
|
|
[ 8.0% | 2083/26162 | ✓1603 | ✗ 3] ✓ tests/agent/test_arcee_trinity_overrides.py (17✓, 1.9s)
|
|
[ 8.0% | 2095/26162 | ✓1615 | ✗ 3] ✓ tests/agent/test_compressor_image_tokens.py (12✓, 1.1s)
|
|
[ 8.1% | 2108/26162 | ✓1628 | ✗ 3] ✓ tests/agent/lsp/test_shell_linter_lsp_skip.py (13✓, 2.6s)
|
|
[ 8.1% | 2112/26162 | ✓1632 | ✗ 3] ✓ tests/agent/test_compress_focus.py (4✓, 1.6s)
|
|
[ 8.1% | 2131/26162 | ✓1651 | ✗ 3] ✓ tests/agent/test_auxiliary_config_bridge.py (19✓, 2.3s)
|
|
[ 8.3% | 2171/26162 | ✓1651 | ✗ 3] ✗ plugins/platforms/telegram/tests/test_telegram_reply_mode.py (40e, 14.2s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_reply_mode.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestShouldThreadReply::test_invalid_mode_falls_back_to_first
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestSendWithReplyToMode::test_off_mode_no_reply_threading
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestSendWithReplyToMode::test_first_mode_only_first_chunk_threads
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestSendWithReplyToMode::test_all_mode_all_chunks_thread
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestSendWithReplyToMode::test_no_reply_to_param_no_threading
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestSendWithReplyToMode::test_single_chunk_respects_mode
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestConfigSerialization::test_to_dict_includes_reply_to_mode
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestConfigSerialization::test_from_dict_loads_reply_to_mode
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestConfigSerialization::test_from_dict_defaults_to_first
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestEnvVarOverride::test_env_var_sets_off_mode
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestEnvVarOverride::test_env_var_sets_all_mode
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestEnvVarOverride::test_env_var_case_insensitive
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestEnvVarOverride::test_env_var_invalid_value_ignored
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestEnvVarOverride::test_env_var_empty_value_ignored
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestTelegramYamlConfigLoading::test_top_level_reply_to_mode_off
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestTelegramYamlConfigLoading::test_top_level_reply_to_mode_all
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestTelegramYamlConfigLoading::test_extra_reply_to_mode_off
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestTelegramYamlConfigLoading::test_env_var_takes_precedence_over_yaml
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestTelegramYamlConfigLoading::test_top_level_takes_precedence_over_extra
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_reply_to_id_suppressed_when_off
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_reply_to_id_returned_when_first
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_reply_to_id_returned_when_all
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_reply_to_id_returned_when_no_mode
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_explicit_reply_to_overrides_mode
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_thread_kwargs_suppressed_reply_anchor_when_off
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_thread_kwargs_returns_full_when_first
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_thread_kwargs_no_mode_backward_compat
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_send_dm_topic_off_no_quote
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_send_dm_topic_first_still_quotes
|
|
║ ============================= 40 errors in 13.52s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_reply_mode.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 8.3% | 2173/26162 | ✓1653 | ✗ 3] ✓ tests/agent/test_context_compressor_summary_continuity.py (2✓, 1.5s)
|
|
[ 8.5% | 2219/26162 | ✓1653 | ✗ 3] ✗ plugins/platforms/telegram/tests/test_telegram_network.py (46e, 15.7s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_network.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportPassthrough::test_non_telegram_host_bypasses_fallback
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportPassthrough::test_empty_fallback_list_uses_primary_only
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportPassthrough::test_primary_succeeds_no_fallback_needed
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportInit::test_deduplicates_fallback_ips
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportInit::test_filters_invalid_ips_at_init
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportInit::test_uses_proxy_env_for_primary_and_fallback_transports
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportInit::test_no_proxy_bypasses_fallback_ip_cidr
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportClose::test_aclose_closes_all_transports
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestConfigFallbackIps::test_env_var_populates_config_extra
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestConfigFallbackIps::test_env_var_creates_platform_if_missing
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestConfigFallbackIps::test_env_var_strips_whitespace
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestConfigFallbackIps::test_empty_env_var_does_not_populate
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestAdapterFallbackIps::test_list_in_extra
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestAdapterFallbackIps::test_csv_string_in_extra
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestAdapterFallbackIps::test_empty_extra
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestAdapterFallbackIps::test_no_extra_attr
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestAdapterFallbackIps::test_invalid_ips_filtered
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_google_and_cloudflare_ips_collected
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_system_dns_ip_kept_when_doh_confirms
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_doh_results_deduplicated
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_doh_timeout_falls_back_to_seed
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_doh_connect_error_falls_back_to_seed
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_doh_malformed_json_falls_back_to_seed
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_one_provider_fails_other_succeeds
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_system_dns_failure_keeps_all_doh_ips
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_all_doh_ips_same_as_system_dns_kept
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_cloudflare_gets_accept_header
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_non_a_records_ignored
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_invalid_ip_in_doh_response_skipped
|
|
║ ============================= 46 errors in 15.09s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_network.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 8.5% | 2226/26162 | ✓1660 | ✗ 3] ✓ tests/agent/test_copilot_acp_client.py (7✓, 1.3s)
|
|
[ 9.2% | 2412/26162 | ✓1840 | ✗ 9] ✗ plugins/platforms/slack/tests/test_slack.py (180✓ 6✗, 18.6s)
|
|
|
|
╔╍ Failed: plugins/platforms/slack/tests/test_slack.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ plugins/platforms/slack/tests/test_slack.py::TestThreadReplyHandling::test_thread_reply_without_mention_with_session_processed
|
|
║ plugins/platforms/slack/tests/test_slack.py::TestThreadReplyHandling::test_thread_reply_with_mention_strips_bot_id
|
|
║ plugins/platforms/slack/tests/test_slack.py::TestAssistantThreadLifecycle::test_message_uses_cached_assistant_thread_identity
|
|
║ /home/ari/src/hermes-agent/main/plugins/platforms/slack/hermes_agent_slack/adapter.py:2206: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
|
|
║ reply_to_text = await self._fetch_thread_parent_text(
|
|
║ Enable tracemalloc to get traceback where the object was allocated.
|
|
║ See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
|
|
║
|
|
║ plugins/platforms/slack/tests/test_slack.py::TestBangPrefixCommands::test_bang_works_inside_thread
|
|
║ plugins/platforms/slack/tests/test_slack.py::TestAssistantThreadLifecycle::test_message_uses_cached_assistant_thread_identity
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/_pytest/stash.py:108: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
|
|
║ del self._storage[key]
|
|
║ Enable tracemalloc to get traceback where the object was allocated.
|
|
║ See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
|
|
║
|
|
║ plugins/platforms/slack/tests/test_slack.py::TestBangPrefixCommands::test_bang_unknown_token_passes_through_unchanged
|
|
║ /nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/collections/__init__.py:458: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
|
|
║ result = self._make(_map(kwds.pop, field_names, self))
|
|
║ Enable tracemalloc to get traceback where the object was allocated.
|
|
║ See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED plugins/platforms/slack/tests/test_slack.py::TestAppMentionHandler::test_app_mention_registered_on_connect
|
|
║ FAILED plugins/platforms/slack/tests/test_slack.py::TestSlackConnectCleanup::test_reconnect_closes_previous_handler_to_prevent_zombie_socket
|
|
║ FAILED plugins/platforms/slack/tests/test_slack.py::TestSlackProxyBehavior::test_resolve_slack_proxy_url_ignores_unsupported_proxy_schemes
|
|
║ FAILED plugins/platforms/slack/tests/test_slack.py::TestSlackProxyBehavior::test_resolve_slack_proxy_url_checks_all_slack_hosts
|
|
║ FAILED plugins/platforms/slack/tests/test_slack.py::TestSlackProxyBehavior::test_connect_uses_proxy_when_not_bypassed
|
|
║ FAILED plugins/platforms/slack/tests/test_slack.py::TestSlackProxyBehavior::test_connect_clears_proxy_when_no_proxy_matches_slack
|
|
║ ================= 6 failed, 180 passed, 36 warnings in 15.51s ==================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/slack/tests/test_slack.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 9.3% | 2426/26162 | ✓1854 | ✗ 9] ✓ tests/agent/test_context_references.py (14✓, 1.6s)
|
|
[ 9.3% | 2432/26162 | ✓1854 | ✗ 9] ✗ plugins/platforms/telegram/tests/test_telegram_noise_filter.py (6e, 15.7s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_noise_filter.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ =============================== warnings summary ===============================
|
|
║ .venv/lib/python3.12/site-packages/discord/player.py:30
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
║ import audioop
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
║ _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26: DeprecationWarning: There is no current event loop
|
|
║ loop = asyncio.get_event_loop()
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
║ def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
║ warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_telegram_status_suppresses_auxiliary_and_retry_noise
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_non_telegram_status_is_unchanged
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_telegram_status_sanitizes_raw_provider_security_errors
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_telegram_final_response_sanitizes_raw_provider_errors
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_telegram_final_response_redacts_auth_secrets
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_telegram_final_response_keeps_normal_answers
|
|
║ ======================== 5 warnings, 6 errors in 10.61s ========================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_noise_filter.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 9.9% | 2582/26162 | ✓1991 | ✗ 21] ✗ plugins/platforms/matrix/tests/test_matrix.py (137✓ 12✗ 1s, 19.3s)
|
|
|
|
╔╍ Failed: plugins/platforms/matrix/tests/test_matrix.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ WARNING hermes_agent_matrix.adapter:adapter.py:1610 Matrix: dropped 3 consecutive live events as 'too old' more than 30s after startup (skew ≈ 7200s). The host system clock is likely set ahead of real time, which causes the startup grace filter to silently discard every incoming message. Run `timedatectl set-ntp true` (or sync NTP) and restart the bot.
|
|
║ WARNING hermes_agent_matrix.adapter:adapter.py:1610 Matrix: dropped 3 consecutive live events as 'too old' more than 30s after startup (skew ≈ 7200s). The host system clock is likely set ahead of real time, which causes the startup grace filter to silently discard every incoming message. Run `timedatectl set-ntp true` (or sync NTP) and restart the bot.
|
|
║ =============================== warnings summary ===============================
|
|
║ plugins/platforms/matrix/tests/test_matrix.py::TestMatrixConfigLoading::test_apply_env_overrides_with_access_token
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
║ _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
║
|
|
║ plugins/platforms/matrix/tests/test_matrix.py::TestMatrixConfigLoading::test_apply_env_overrides_with_access_token
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
║ def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
║
|
|
║ plugins/platforms/matrix/tests/test_matrix.py::TestMatrixConfigLoading::test_apply_env_overrides_with_access_token
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
║ warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixRequirements::test_check_requirements_encryption_true_no_e2ee_deps
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixRequirements::test_check_requirements_encryption_false_no_e2ee_deps_ok
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixRequirements::test_check_requirements_encryption_true_with_e2ee_deps
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixAccessTokenAuth::test_connect_with_access_token_and_encryption
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixE2EEHardFail::test_connect_fails_when_encryption_true_but_no_e2ee_deps
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixE2EEHardFail::test_connect_fails_when_crypto_setup_raises
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixDeviceId::test_connect_uses_configured_device_id_over_whoami
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixPasswordLoginDeviceId::test_password_login_uses_device_id
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixEncryptedEventHandler::test_connect_registers_encrypted_event_handler_when_encryption_on
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixEncryptedEventHandler::test_connect_fails_on_stale_otk_conflict
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixClockSkewWarning::test_late_drops_emit_one_shot_clock_skew_warning
|
|
║ FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixClockSkewWarning::test_state_reset_allows_warning_to_fire_again
|
|
║ ============ 12 failed, 137 passed, 1 skipped, 3 warnings in 16.10s ============
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/matrix/tests/test_matrix.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 10.0% | 2609/26162 | ✓2018 | ✗ 21] ✓ tests/agent/test_compressor_historical_media.py (27✓, 2.2s)
|
|
[ 10.0% | 2624/26162 | ✓2033 | ✗ 21] ✓ tests/agent/test_auxiliary_main_first.py (15✓, 2.9s)
|
|
[ 10.2% | 2665/26162 | ✓2033 | ✗ 21] ✗ plugins/platforms/telegram/tests/test_telegram_thread_fallback.py (41e, 12.6s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_thread_fallback.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_base_gateway_metadata_for_resumed_telegram_dm_topic_uses_direct_topic
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_base_gateway_replies_to_triggering_message_for_telegram_dm_topic
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_gateway_runner_busy_ack_replies_to_triggering_message_for_telegram_dm_topic
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_uses_reply_fallback_for_hermes_dm_topics
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_uses_metadata_reply_fallback_for_streaming_dm_topics
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_reply_fallback_applies_to_every_chunk_for_dm_topics
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_model_picker_uses_metadata_reply_fallback_for_dm_topics
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_dm_topic_fallback_without_anchor_does_not_crash
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_dm_topic_reply_not_found_retry_drops_thread_id
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_image_file-send_photo-image_path-photo.png-png-data]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_document-send_document-file_path-report.txt-report-data]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_video-send_video-video_path-clip.mp4-video-data]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_voice-send_voice-audio_path-clip.ogg-ogg-data]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_voice-send_audio-audio_path-clip.mp3-mp3-data]
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_animation_dm_topic_reply_not_found_retry_drops_thread_id
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_media_group_dm_topic_reply_not_found_retry_drops_thread_id
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_image_url_dm_topic_reply_not_found_retry_drops_thread_id
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_image_upload_dm_topic_reply_not_found_retry_drops_thread_id
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_slash_confirm_private_topic_callback_followup_sends_thread_and_reply
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_slash_confirm_forum_callback_followup_keeps_existing_thread_behavior
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_base_send_image_fallback_preserves_metadata
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_raises_on_other_bad_request
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_without_thread_id_unaffected
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_retries_network_errors_normally
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_does_not_retry_timeout
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_retries_wrapped_connect_timeout
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_marks_wrapped_connect_timeout_retryable_after_exhaustion
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_thread_fallback_only_fires_once
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_retries_retry_after_errors
|
|
║ ============================= 41 errors in 12.11s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_thread_fallback.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 10.2% | 2666/26162 | ✓2034 | ✗ 21] ✓ tests/agent/test_curator_activity.py (1✓, 1.1s)
|
|
[ 10.2% | 2680/26162 | ✓2048 | ✗ 21] ✓ tests/agent/test_copilot_acp_deprecation.py (14✓, 2.2s)
|
|
[ 10.3% | 2685/26162 | ✓2053 | ✗ 21] ✓ tests/agent/test_crossloop_client_cache.py (5✓, 1.5s)
|
|
[ 10.5% | 2735/26162 | ✓2103 | ✗ 21] ✓ plugins/stt/tests/test_transcription_command_providers.py (50✓, 12.2s)
|
|
[ 10.5% | 2745/26162 | ✓2113 | ✗ 21] ✓ tests/agent/test_curator_reports.py (10✓, 1.5s)
|
|
[ 10.5% | 2755/26162 | ✓2123 | ✗ 21] ✓ tests/agent/test_display_emoji.py (10✓, 1.6s)
|
|
[ 10.7% | 2798/26162 | ✓2123 | ✗ 21] ✗ plugins/platforms/telegram/tests/test_telegram_topic_mode.py (43e, 12.9s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_topic_mode.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_restore_refuses_session_owned_by_another_telegram_user
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_restore_refuses_already_linked_session
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_first_message_inside_topic_records_topic_binding
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_root_command_creates_and_pins_system_topic
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_auto_generated_title_renames_bound_telegram_topic
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_auto_generated_title_does_not_rename_topic_bound_to_other_session
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_operator_declared_topic_is_not_auto_renamed
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_disable_topic_auto_rename_extra_skips_rename
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_schedule_topic_rename_respects_disable_flag
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_telegram_topic_auto_rename_disabled_string_truthy
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_general_topic_is_treated_as_root_lobby
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_lobby_reminder_is_debounced_per_chat
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_binding_survives_session_deletion_via_cascade
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_migration_rebuilds_v1_binding_table_with_cascade_fk
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_help_subcommand_returns_usage
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_off_disables_mode_and_clears_bindings
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_off_is_idempotent_when_never_enabled
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_refuses_unauthorized_user
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_returns_none_for_known_topic
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_preserves_unknown_thread_id_for_new_topic
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_rewrites_lobby_thread_id_to_most_recent
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_returns_none_when_topic_mode_disabled
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_returns_none_when_no_bindings_yet
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_returns_none_for_brand_new_topic
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_list_telegram_topic_bindings_for_chat
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_list_telegram_topic_bindings_for_chat_no_table
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_get_telegram_topic_binding_by_session_returns_binding
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_get_telegram_topic_binding_by_session_returns_none_for_unknown
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_session_split_restores_source_thread_id_from_binding
|
|
║ ============================= 43 errors in 12.05s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_topic_mode.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 10.9% | 2844/26162 | ✓2169 | ✗ 21] ✓ tests/agent/test_curator_classification.py (46✓, 2.0s)
|
|
[ 11.0% | 2865/26162 | ✓2190 | ✗ 21] ✓ tests/agent/test_auxiliary_transport_autodetect.py (21✓, 4.2s)
|
|
[ 11.0% | 2889/26162 | ✓2214 | ✗ 21] ✓ tests/agent/test_display_tool_failure.py (24✓, 1.5s)
|
|
[ 11.1% | 2900/26162 | ✓2225 | ✗ 21] ✓ tests/agent/test_external_skills.py (11✓, 1.3s)
|
|
[ 11.2% | 2931/26162 | ✓2256 | ✗ 21] ✓ tests/agent/test_display.py (31✓, 2.0s)
|
|
[ 11.3% | 2953/26162 | ✓2277 | ✗ 21] ✓ plugins/terminals/modal/tests/test_modal_sandbox_fixes.py (21✓ 1s, 12.7s)
|
|
[ 11.4% | 2971/26162 | ✓2295 | ✗ 21] ✓ tests/agent/test_file_safety.py (18✓, 1.4s)
|
|
[ 11.4% | 2977/26162 | ✓2301 | ✗ 21] ✓ tests/agent/test_external_skills_dirs_cache.py (6✓, 1.5s)
|
|
[ 11.5% | 3001/26162 | ✓2325 | ✗ 21] ✓ tests/agent/test_display_todo_progress.py (24✓, 2.2s)
|
|
[ 11.6% | 3026/26162 | ✓2350 | ✗ 21] ✓ tests/agent/test_curator_backup.py (25✓, 2.7s)
|
|
[ 11.8% | 3078/26162 | ✓2402 | ✗ 21] ✓ plugins/tts/tests/test_tts_command_providers.py (52✓, 13.1s)
|
|
[ 11.8% | 3098/26162 | ✓2422 | ✗ 21] ✓ tests/agent/test_file_safety_credentials.py (20✓, 1.7s)
|
|
[ 11.9% | 3114/26162 | ✓2438 | ✗ 21] ✓ tests/agent/test_file_safety_cross_profile.py (16✓, 1.7s)
|
|
[ 12.0% | 3136/26162 | ✓2460 | ✗ 21] ✓ tests/agent/test_gemini_free_tier_gate.py (22✓, 1.7s)
|
|
[ 12.0% | 3147/26162 | ✓2471 | ✗ 21] ✓ tests/agent/test_gemini_schema.py (11✓, 1.5s)
|
|
[ 12.1% | 3157/26162 | ✓2481 | ✗ 21] ✓ tests/agent/test_image_gen_registry.py (10✓, 1.4s)
|
|
[ 12.1% | 3172/26162 | ✓2496 | ✗ 21] ✓ tests/agent/test_markdown_tables.py (15✓, 1.1s)
|
|
[ 12.1% | 3174/26162 | ✓2498 | ✗ 21] ✓ tests/agent/test_last_total_tokens.py (2✓, 1.3s)
|
|
[ 12.2% | 3186/26162 | ✓2510 | ✗ 21] ✓ tests/agent/test_memory_session_switch.py (12✓, 0.9s)
|
|
[ 12.3% | 3225/26162 | ✓2549 | ✗ 21] ✓ tests/agent/test_local_stream_timeout.py (39✓, 1.6s)
|
|
[ 12.4% | 3236/26162 | ✓2560 | ✗ 21] ✓ tests/agent/test_gemini_native_adapter.py (11✓, 2.3s)
|
|
[ 12.6% | 3293/26162 | ✓2617 | ✗ 21] ✓ tests/agent/test_image_routing.py (57✓, 2.2s)
|
|
[ 13.1% | 3433/26162 | ✓2757 | ✗ 21] ✓ tests/agent/test_error_classifier.py (140✓, 3.8s)
|
|
[ 13.2% | 3442/26162 | ✓2766 | ✗ 21] ✓ tests/agent/test_model_metadata_ssl.py (9✓, 1.2s)
|
|
[ 13.4% | 3516/26162 | ✓2840 | ✗ 21] ✓ tests/agent/test_memory_provider.py (74✓, 2.2s)
|
|
[ 13.6% | 3548/26162 | ✓2872 | ✗ 21] ✓ tests/agent/test_models_dev.py (32✓, 1.5s)
|
|
[ 13.6% | 3557/26162 | ✓2881 | ✗ 21] ✓ tests/agent/test_minimax_auxiliary_url.py (9✓, 2.0s)
|
|
[ 13.8% | 3605/26162 | ✓2929 | ✗ 21] ✓ tests/agent/test_curator.py (48✓, 6.1s)
|
|
[ 13.9% | 3647/26162 | ✓2971 | ✗ 21] ✓ tests/agent/test_moonshot_schema.py (42✓, 2.0s)
|
|
[ 14.1% | 3679/26162 | ✓3003 | ✗ 21] ✓ tests/agent/test_nous_rate_guard.py (32✓, 1.4s)
|
|
[ 14.1% | 3682/26162 | ✓3006 | ✗ 21] ✓ tests/agent/test_nous_oauth_401_guidance.py (3✓, 1.7s)
|
|
[ 14.2% | 3715/26162 | ✓3039 | ✗ 21] ✓ tests/agent/test_onboarding.py (33✓, 1.7s)
|
|
[ 14.2% | 3721/26162 | ✓3045 | ✗ 21] ✓ tests/agent/test_portal_tags.py (6✓, 1.2s)
|
|
[ 14.5% | 3788/26162 | ✓3112 | ✗ 21] ✓ tests/agent/test_credential_pool.py (67✓, 7.3s)
|
|
[ 14.8% | 3876/26162 | ✓3200 | ✗ 21] ✓ tests/agent/test_gemini_cloudcode.py (88✓, 4.8s)
|
|
[ 14.9% | 3890/26162 | ✓3214 | ✗ 21] ✓ tests/agent/test_prompt_caching.py (14✓, 1.2s)
|
|
[ 14.9% | 3909/26162 | ✓3233 | ✗ 21] ✓ tests/agent/test_context_engine.py (19✓, 8.6s)
|
|
[ 15.0% | 3917/26162 | ✓3241 | ✗ 21] ✓ tests/acp/test_edit_approval.py (8✓, 14.6s)
|
|
[ 15.1% | 3941/26162 | ✓3265 | ✗ 21] ✓ tests/agent/test_rate_limit_tracker.py (24✓, 1.2s)
|
|
[ 15.1% | 3963/26162 | ✓3287 | ✗ 21] ✓ tests/agent/test_model_metadata_local_ctx.py (22✓, 3.7s)
|
|
[ 15.2% | 3978/26162 | ✓3302 | ✗ 21] ✓ tests/agent/test_proxy_and_url_validation.py (15✓, 1.7s)
|
|
[ 15.2% | 3984/26162 | ✓3308 | ✗ 21] ✓ tests/agent/test_skill_commands_reload.py (6✓, 0.8s)
|
|
[ 15.3% | 4005/26162 | ✓3329 | ✗ 21] ✓ tests/agent/test_streaming_context_scrubber.py (21✓, 1.1s)
|
|
[ 15.4% | 4020/26162 | ✓3344 | ✗ 21] ✓ tests/agent/test_skill_utils.py (15✓, 1.1s)
|
|
[ 15.5% | 4063/26162 | ✓3387 | ✗ 21] ✓ tests/agent/test_i18n.py (43✓, 6.1s)
|
|
[ 15.6% | 4086/26162 | ✓3410 | ✗ 21] ✓ tests/agent/test_shell_hooks_consent.py (23✓, 1.9s)
|
|
[ 15.9% | 4168/26162 | ✓3492 | ✗ 21] ✓ tests/agent/test_redact.py (82✓, 2.6s)
|
|
[ 16.3% | 4270/26162 | ✓3594 | ✗ 21] ✓ tests/agent/test_model_metadata.py (102✓, 4.9s)
|
|
[ 16.4% | 4303/26162 | ✓3627 | ✗ 21] ✓ tests/agent/test_skill_bundles.py (33✓, 2.1s)
|
|
[ 16.5% | 4324/26162 | ✓3648 | ✗ 21] ✓ tests/agent/test_subagent_progress.py (21✓, 1.6s)
|
|
[ 16.6% | 4342/26162 | ✓3666 | ✗ 21] ✓ tests/agent/test_subdirectory_hints.py (18✓, 1.1s)
|
|
[ 16.6% | 4345/26162 | ✓3669 | ✗ 21] ✓ tests/agent/test_tool_result_classification.py (3✓, 0.8s)
|
|
[ 16.7% | 4358/26162 | ✓3682 | ✗ 21] ✓ tests/agent/test_tool_guardrails.py (13✓, 1.1s)
|
|
[ 16.7% | 4368/26162 | ✓3692 | ✗ 21] ✓ tests/agent/test_system_prompt_restore.py (10✓, 1.6s)
|
|
[ 16.9% | 4421/26162 | ✓3745 | ✗ 21] ✓ tests/agent/test_shell_hooks.py (53✓, 3.5s)
|
|
[ 17.1% | 4477/26162 | ✓3801 | ✗ 21] ✓ tests/agent/test_plugin_llm.py (56✓, 5.1s)
|
|
[ 17.2% | 4488/26162 | ✓3812 | ✗ 21] ✓ tests/agent/test_usage_pricing.py (11✓, 0.9s)
|
|
[ 17.3% | 4514/26162 | ✓3838 | ✗ 21] ✓ tests/agent/test_transcription_registry.py (26✓, 1.8s)
|
|
[ 17.4% | 4545/26162 | ✓3869 | ✗ 21] ✓ tests/agent/test_think_scrubber.py (31✓, 2.1s)
|
|
[ 17.4% | 4555/26162 | ✓3879 | ✗ 21] ✓ tests/agent/test_video_gen_registry.py (10✓, 0.9s)
|
|
[ 17.6% | 4596/26162 | ✓3920 | ✗ 21] ✓ tests/agent/test_skill_commands.py (41✓, 3.7s)
|
|
[ 17.6% | 4604/26162 | ✓3928 | ✗ 21] ✓ tests/acp/test_mcp_e2e.py (8✓, 17.9s)
|
|
[ 17.7% | 4624/26162 | ✓3948 | ✗ 21] ✓ tests/agent/test_title_generator.py (20✓, 2.6s)
|
|
[ 17.7% | 4632/26162 | ✓3956 | ✗ 21] ✓ tests/agent/test_save_url_image.py (8✓, 4.7s)
|
|
[ 17.9% | 4678/26162 | ✓4002 | ✗ 21] ✓ tests/agent/test_tts_registry.py (46✓, 2.5s)
|
|
[ 18.0% | 4701/26162 | ✓4025 | ✗ 21] ✓ tests/agent/transports/test_codex_event_projector.py (23✓, 1.3s)
|
|
[ 18.4% | 4825/26162 | ✓4149 | ✗ 21] ✓ tests/agent/test_prompt_builder.py (124✓, 6.1s)
|
|
[ 18.5% | 4833/26162 | ✓4157 | ✗ 21] ✓ tests/agent/transports/test_transport.py (8✓, 1.1s)
|
|
[ 18.6% | 4870/26162 | ✓4194 | ✗ 21] ✓ tests/agent/transports/test_types.py (37✓, 1.4s)
|
|
[ 18.9% | 4939/26162 | ✓4263 | ✗ 21] ✓ tests/agent/transports/test_chat_completions.py (69✓, 2.0s)
|
|
[ 18.9% | 4948/26162 | ✓4272 | ✗ 21] ✓ tests/agent/transports/test_hermes_tools_mcp_server.py (9✓, 1.6s)
|
|
[ 19.0% | 4975/26162 | ✓4299 | ✗ 21] ✓ tests/agent/transports/test_codex_app_server_runtime.py (27✓, 2.3s)
|
|
[ 19.4% | 5074/26162 | ✓4299 | ✗ 21] ✗ plugins/platforms/telegram/tests/test_telegram_format.py (99e, 30.2s)
|
|
|
|
╔╍ Failed: plugins/platforms/telegram/tests/test_telegram_format.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_preserves_multi_underscore_identifier
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_plain_text_unchanged
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_empty_string
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_removes_strikethrough_markers
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_removes_spoiler_markers
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_basic_table_rewritten_as_row_groups
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_bare_pipe_table_rewritten
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_alignment_separators
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_two_consecutive_tables_rewritten_separately
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_plain_text_with_pipes_not_wrapped
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_horizontal_rule_not_wrapped
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_existing_code_block_with_pipes_left_alone
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_no_pipe_character_short_circuits
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_no_dash_short_circuits
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_single_column_separator_not_matched
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageTables::test_table_rendered_as_bullets
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageTables::test_text_after_table_still_formatted
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageTables::test_multiple_tables_in_single_message
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::test_send_escapes_chunk_indicator_for_markdownv2
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEditMessageStreamingSafety::test_non_final_edit_uses_plain_text_without_markdown
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEditMessageStreamingSafety::test_final_edit_uses_markdownv2_with_plain_fallback
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEditMessageStreamingSafety::test_message_too_long_splits_into_continuations_not_silent_truncation
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEditMessageStreamingSafety::test_message_too_long_continuations_preserve_topic_metadata
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_allows_explicit_mention_outside_allowed_chats
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_does_not_allow_reply_outside_allowed_chats
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_disabled_keeps_allowed_chats_as_hard_gate_for_mentions
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_allows_bot_command_entity_outside_allowed_chats
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_allows_text_mention_entity_outside_allowed_chats
|
|
║ ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_allows_mention_in_caption_outside_allowed_chats
|
|
║ ============================= 99 errors in 29.37s ==============================
|
|
║
|
|
║ Repro: python -m pytest plugins/platforms/telegram/tests/test_telegram_format.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 19.4% | 5077/26162 | ✓4302 | ✗ 21] ✓ tests/agent/test_direct_provider_url_detection.py (3✓, 12.9s)
|
|
[ 19.4% | 5085/26162 | ✓4310 | ✗ 21] ✓ tests/cli/test_busy_input_mode_command.py (8✓, 1.4s)
|
|
[ 19.4% | 5088/26162 | ✓4313 | ✗ 21] ✓ tests/agent/test_custom_provider_extra_body.py (3✓, 13.3s)
|
|
[ 19.5% | 5098/26162 | ✓4323 | ✗ 21] ✓ tests/agent/test_credential_pool_routing.py (10✓, 13.9s)
|
|
[ 19.5% | 5114/26162 | ✓4339 | ✗ 21] ✓ tests/cli/test_cli_background_status_indicator.py (16✓, 2.0s)
|
|
[ 19.6% | 5125/26162 | ✓4350 | ✗ 21] ✓ tests/cli/test_cli_bracketed_paste_sanitizer.py (11✓, 1.6s)
|
|
[ 19.6% | 5129/26162 | ✓4354 | ✗ 21] ✓ tests/cli/test_cli_copy_command.py (4✓, 1.1s)
|
|
[ 19.7% | 5158/26162 | ✓4383 | ✗ 21] ✓ tests/agent/test_auxiliary_named_custom_providers.py (29✓, 16.5s)
|
|
[ 19.8% | 5169/26162 | ✓4394 | ✗ 21] ✓ tests/cli/test_cli_approval_ui.py (11✓, 2.5s)
|
|
[ 19.8% | 5173/26162 | ✓4398 | ✗ 21] ✓ tests/cli/test_cli_background_tui_refresh.py (4✓, 2.0s)
|
|
[ 19.8% | 5187/26162 | ✓4412 | ✗ 21] ✓ tests/agent/test_memory_user_id.py (14✓, 11.1s)
|
|
[ 19.9% | 5203/26162 | ✓4428 | ✗ 21] ✓ tests/cli/test_cli_browser_connect.py (16✓, 2.1s)
|
|
[ 19.9% | 5210/26162 | ✓4435 | ✗ 21] ✓ tests/cli/test_cli_external_editor.py (7✓, 1.4s)
|
|
[ 20.0% | 5223/26162 | ✓4448 | ✗ 21] ✓ tests/agent/test_codex_cloudflare_headers.py (13✓, 16.9s)
|
|
[ 20.0% | 5231/26162 | ✓4456 | ✗ 21] ✓ tests/cli/test_bracketed_paste_timeout.py (8✓, 3.9s)
|
|
[ 20.0% | 5238/26162 | ✓4463 | ✗ 21] ✓ tests/agent/test_gemini_fast_fallback.py (7✓, 13.4s)
|
|
[ 20.2% | 5273/26162 | ✓4498 | ✗ 21] ✓ tests/cli/test_cli_file_drop.py (35✓, 1.9s)
|
|
[ 20.2% | 5282/26162 | ✓4507 | ✗ 21] ✓ tests/cli/test_cli_image_command.py (9✓, 1.6s)
|
|
[ 20.2% | 5284/26162 | ✓4509 | ✗ 21] ✓ tests/cli/test_cli_loading_indicator.py (2✓, 1.3s)
|
|
[ 20.2% | 5291/26162 | ✓4516 | ✗ 21] ✓ tests/cli/test_cli_goal_interrupt.py (7✓, 1.9s)
|
|
[ 20.2% | 5297/26162 | ✓4522 | ✗ 21] ✓ tests/cli/test_cli_mcp_config_watch.py (6✓, 1.2s)
|
|
[ 20.3% | 5299/26162 | ✓4524 | ✗ 21] ✓ tests/cli/test_cli_insights_command.py (2✓, 1.7s)
|
|
[ 20.3% | 5308/26162 | ✓4533 | ✗ 21] ✓ tests/cli/test_cli_force_redraw.py (9✓, 2.4s)
|
|
[ 20.4% | 5324/26162 | ✓4549 | ✗ 21] ✓ tests/cli/test_cli_light_mode.py (16✓, 1.8s)
|
|
[ 20.4% | 5338/26162 | ✓4563 | ✗ 21] ✓ tests/cli/test_cli_markdown_rendering.py (14✓, 1.8s)
|
|
[ 21.0% | 5493/26162 | ✓4718 | ✗ 21] ✓ tests/agent/test_auxiliary_client.py (155✓, 19.5s)
|
|
[ 21.2% | 5539/26162 | ✓4764 | ✗ 21] ✓ tests/agent/test_openrouter_response_cache.py (46✓, 12.0s)
|
|
[ 21.2% | 5544/26162 | ✓4769 | ✗ 21] ✓ tests/cli/test_cli_resume_command.py (5✓, 1.4s)
|
|
[ 21.3% | 5585/26162 | ✓4810 | ✗ 21] ✓ tests/acp/test_session.py (41✓, 23.4s)
|
|
[ 21.4% | 5588/26162 | ✓4813 | ✗ 21] ✓ tests/cli/test_cli_reload_skills.py (3✓, 1.8s)
|
|
[ 21.4% | 5593/26162 | ✓4818 | ✗ 21] ✓ tests/cli/test_cli_extension_hooks.py (5✓, 4.3s)
|
|
[ 21.4% | 5600/26162 | ✓4825 | ✗ 21] ✓ tests/agent/test_subagent_stop_hook.py (7✓, 9.8s)
|
|
[ 21.4% | 5606/26162 | ✓4831 | ✗ 21] ✓ tests/cli/test_cli_shift_enter_newline.py (6✓, 1.6s)
|
|
[ 21.5% | 5614/26162 | ✓4839 | ✗ 21] ✓ tests/cli/test_cli_save_config_value.py (8✓, 1.8s)
|
|
[ 21.5% | 5625/26162 | ✓4850 | ✗ 21] ✓ tests/cli/test_cli_skin_integration.py (11✓, 1.4s)
|
|
[ 21.5% | 5627/26162 | ✓4852 | ✗ 21] ✓ tests/agent/test_vision_resolved_args.py (2✓, 7.9s)
|
|
[ 21.5% | 5629/26162 | ✓4854 | ✗ 21] ✓ tests/cli/test_cli_retry.py (2✓, 2.3s)
|
|
[ 21.5% | 5634/26162 | ✓4859 | ✗ 21] ✓ tests/cli/test_cli_secret_capture.py (5✓, 2.2s)
|
|
[ 21.6% | 5650/26162 | ✓4875 | ✗ 21] ✓ tests/cli/test_cli_terminal_response_sanitizer.py (16✓, 1.5s)
|
|
[ 21.6% | 5663/26162 | ✓4888 | ✗ 21] ✓ tests/cli/test_cprint_bg_thread.py (13✓, 1.3s)
|
|
[ 21.7% | 5675/26162 | ✓4900 | ✗ 21] ✓ tests/agent/test_non_stream_stale_timeout.py (12✓, 14.6s)
|
|
[ 21.8% | 5694/26162 | ✓4919 | ✗ 21] ✓ tests/agent/test_unsupported_temperature_retry.py (19✓, 9.8s)
|
|
[ 21.8% | 5714/26162 | ✓4939 | ✗ 21] ✓ tests/cli/test_cli_provider_resolution.py (20✓, 3.6s)
|
|
[ 21.9% | 5726/26162 | ✓4951 | ✗ 21] ✓ tests/cli/test_exit_delete_session.py (12✓, 0.9s)
|
|
[ 21.9% | 5742/26162 | ✓4967 | ✗ 21] ✓ tests/cli/test_destructive_slash_confirm.py (16✓, 1.1s)
|
|
[ 22.0% | 5758/26162 | ✓4983 | ✗ 21] ✓ tests/cli/test_branch_command.py (16✓, 7.7s)
|
|
[ 22.0% | 5762/26162 | ✓4987 | ✗ 21] ✓ tests/cli/test_cli_shutdown_memory_messages.py (4✓, 3.3s)
|
|
[ 22.1% | 5771/26162 | ✓4996 | ✗ 21] ✓ tests/cli/test_ctrl_enter_newline.py (9✓, 2.0s)
|
|
[ 22.1% | 5774/26162 | ✓4999 | ✗ 21] ✓ tests/agent/test_codex_ttfb_watchdog.py (3✓, 21.6s)
|
|
[ 22.1% | 5783/26162 | ✓5008 | ✗ 21] ✓ tests/cli/test_cwd_env_respect.py (9✓, 2.0s)
|
|
[ 22.2% | 5799/26162 | ✓5024 | ✗ 21] ✓ tests/agent/test_unsupported_parameter_retry.py (16✓, 10.8s)
|
|
[ 22.2% | 5802/26162 | ✓5027 | ✗ 21] ✓ tests/cli/test_destructive_slash_inline_skip_e2e.py (3✓, 1.9s)
|
|
[ 22.3% | 5838/26162 | ✓5063 | ✗ 21] ✓ tests/cli/test_cli_status_bar.py (36✓, 3.0s)
|
|
[ 22.3% | 5843/26162 | ✓5068 | ✗ 21] ✓ tests/cli/test_prompt_text_input_thread_safety.py (5✓, 1.0s)
|
|
[ 22.3% | 5846/26162 | ✓5071 | ✗ 21] ✓ tests/cli/test_cli_user_message_preview.py (3✓, 2.6s)
|
|
[ 22.4% | 5851/26162 | ✓5076 | ✗ 21] ✓ tests/cli/test_exit_summary_resume_hint.py (5✓, 1.3s)
|
|
[ 22.4% | 5858/26162 | ✓5083 | ✗ 21] ✓ tests/cli/test_cli_new_session.py (7✓, 5.2s)
|
|
[ 22.5% | 5876/26162 | ✓5101 | ✗ 21] ✓ tests/cli/test_fast_command.py (18✓, 1.8s)
|
|
[ 22.5% | 5878/26162 | ✓5103 | ✗ 21] ✓ tests/cli/test_save_conversation_location.py (2✓, 1.0s)
|
|
[ 22.5% | 5879/26162 | ✓5104 | ✗ 21] ✓ tests/cli/test_gquota_command.py (1✓, 2.0s)
|
|
[ 22.5% | 5898/26162 | ✓5123 | ✗ 21] ✓ tests/cli/test_personality_none.py (19✓, 2.0s)
|
|
[ 22.6% | 5902/26162 | ✓5127 | ✗ 21] ✓ tests/cli/test_resume_quiet_stderr.py (4✓, 1.7s)
|
|
[ 22.6% | 5906/26162 | ✓5131 | ✗ 21] ✓ tests/cli/test_slash_command_interrupt.py (4✓, 1.5s)
|
|
[ 22.7% | 5951/26162 | ✓5176 | ✗ 21] ✓ tests/agent/transports/test_codex_transport.py (45✓, 10.8s)
|
|
[ 22.8% | 5959/26162 | ✓5184 | ✗ 21] ✓ tests/cli/test_stream_delta_think_tag.py (8✓, 1.4s)
|
|
[ 22.8% | 5964/26162 | ✓5189 | ✗ 21] ✓ tests/cli/test_compress_focus.py (5✓, 3.9s)
|
|
[ 22.8% | 5967/26162 | ✓5192 | ✗ 21] ✓ tests/cron/test_compute_next_run_last_run_at.py (3✓, 0.9s)
|
|
[ 22.8% | 5974/26162 | ✓5199 | ✗ 21] ✓ tests/cli/test_cli_steer_busy_path.py (7✓, 4.8s)
|
|
[ 22.9% | 5983/26162 | ✓5208 | ✗ 21] ✓ tests/cli/test_slash_confirm_windows.py (9✓, 2.1s)
|
|
[ 22.9% | 6003/26162 | ✓5228 | ✗ 21] ✓ tests/cli/test_update_command.py (20✓, 2.0s)
|
|
[ 23.0% | 6007/26162 | ✓5232 | ✗ 21] ✓ tests/cli/test_session_boundary_hooks.py (4✓, 2.4s)
|
|
[ 23.0% | 6012/26162 | ✓5237 | ✗ 21] ✓ tests/cli/test_worktree_security.py (5✓, 1.6s)
|
|
[ 23.0% | 6023/26162 | ✓5248 | ✗ 21] ✓ tests/cron/test_cron_prompt_injection_skill.py (11✓, 1.5s)
|
|
[ 23.1% | 6035/26162 | ✓5260 | ✗ 21] ✓ tests/agent/test_vision_routing_31179.py (12✓, 12.8s)
|
|
[ 23.1% | 6056/26162 | ✓5281 | ✗ 21] ✓ tests/cron/test_cron_context_from.py (21✓, 2.2s)
|
|
[ 23.2% | 6064/26162 | ✓5289 | ✗ 21] ✓ tests/cron/test_file_permissions.py (8✓, 1.4s)
|
|
[ 23.3% | 6104/26162 | ✓5329 | ✗ 21] ✓ tests/cli/test_resume_display.py (40✓, 4.0s)
|
|
[ 23.3% | 6105/26162 | ✓5330 | ✗ 21] ✓ tests/cron/test_scheduler_mcp_init.py (1✓, 1.3s)
|
|
[ 23.4% | 6111/26162 | ✓5336 | ✗ 21] ✓ tests/cli/test_manual_compress.py (6✓, 5.0s)
|
|
[ 23.4% | 6120/26162 | ✓5345 | ✗ 21] ✓ tests/gateway/test_7100_transient_failure_transcript.py (9✓, 1.0s)
|
|
[ 23.5% | 6136/26162 | ✓5361 | ✗ 21] ✓ tests/cron/test_rewrite_skill_refs.py (16✓, 2.0s)
|
|
[ 23.5% | 6146/26162 | ✓5371 | ✗ 21] ✓ tests/cli/test_cli_context_warning.py (10✓, 11.6s)
|
|
[ 23.5% | 6150/26162 | ✓5375 | ✗ 21] ✓ tests/gateway/test_allowlist_startup_check.py (4✓, 1.1s)
|
|
[ 23.5% | 6152/26162 | ✓5377 | ✗ 21] ✓ tests/gateway/platforms/test_yuanbao_recall_db_only.py (2✓, 1.7s)
|
|
[ 23.6% | 6172/26162 | ✓5397 | ✗ 21] ✓ tests/cron/test_cron_profile.py (20✓, 3.4s)
|
|
[ 23.7% | 6193/26162 | ✓5418 | ✗ 21] ✓ tests/cron/test_cron_workdir.py (21✓, 3.0s)
|
|
[ 23.8% | 6234/26162 | ✓5459 | ✗ 21] ✓ tests/cli/test_worktree.py (41✓, 5.0s)
|
|
[ 23.8% | 6237/26162 | ✓5462 | ✗ 21] ✓ tests/cli/test_cli_preloaded_skills.py (3✓, 9.9s)
|
|
[ 23.9% | 6252/26162 | ✓5477 | ✗ 21] ✓ tests/gateway/test_active_session_text_merge.py (15✓, 2.4s)
|
|
[ 23.9% | 6253/26162 | ✓5478 | ✗ 21] ✓ tests/cli/test_cli_interrupt_subagent.py (1✓, 11.3s)
|
|
[ 24.1% | 6310/26162 | ✓5535 | ✗ 21] ✓ tests/agent/transports/test_codex_app_server_session.py (57✓, 15.3s)
|
|
[ 24.2% | 6327/26162 | ✓5552 | ✗ 21] ✓ tests/gateway/test_api_server_normalize.py (17✓, 1.5s)
|
|
[ 24.2% | 6330/26162 | ✓5555 | ✗ 21] ✓ tests/gateway/test_auth_fallback.py (3✓, 0.9s)
|
|
[ 24.3% | 6347/26162 | ✓5572 | ✗ 21] ✓ tests/gateway/test_api_server_bind_guard.py (17✓, 2.2s)
|
|
[ 24.3% | 6353/26162 | ✓5578 | ✗ 21] ✓ tests/cli/test_cli_status_command.py (6✓, 9.2s)
|
|
[ 24.6% | 6440/26162 | ✓5665 | ✗ 21] ✓ tests/cron/test_jobs.py (87✓, 4.4s)
|
|
[ 24.6% | 6446/26162 | ✓5671 | ✗ 21] ✓ tests/gateway/test_auto_continue.py (6✓, 1.2s)
|
|
[ 24.7% | 6456/26162 | ✓5681 | ✗ 21] ✓ tests/cli/test_cli_tools_command.py (10✓, 9.1s)
|
|
[ 24.8% | 6479/26162 | ✓5704 | ✗ 21] ✓ tests/gateway/test_api_server_multimodal.py (23✓, 2.2s)
|
|
[ 24.8% | 6490/26162 | ✓5715 | ✗ 21] ✓ tests/cli/test_cli_prefix_matching.py (11✓, 11.9s)
|
|
[ 24.8% | 6500/26162 | ✓5725 | ✗ 21] ✓ tests/gateway/test_base_topic_sessions.py (10✓, 1.3s)
|
|
[ 24.9% | 6504/26162 | ✓5729 | ✗ 21] ✓ tests/gateway/test_bundles_command.py (4✓, 1.3s)
|
|
[ 24.9% | 6525/26162 | ✓5750 | ✗ 21] ✓ tests/gateway/test_approve_deny_commands.py (21✓, 2.7s)
|
|
[ 25.0% | 6528/26162 | ✓5753 | ✗ 21] ✓ tests/gateway/test_cancel_background_drain.py (3✓, 1.1s)
|
|
[ 25.0% | 6539/26162 | ✓5764 | ✗ 21] ✓ tests/cron/test_cron_inactivity_timeout.py (11✓, 6.7s)
|
|
[ 25.1% | 6555/26162 | ✓5780 | ✗ 21] ✓ tests/gateway/test_busy_session_ack.py (16✓, 2.1s)
|
|
[ 25.1% | 6559/26162 | ✓5784 | ✗ 21] ✓ tests/gateway/test_busy_session_auth_bypass.py (4✓, 2.2s)
|
|
[ 25.1% | 6566/26162 | ✓5791 | ✗ 21] ✓ tests/gateway/test_clean_shutdown_marker.py (7✓, 2.0s)
|
|
[ 25.2% | 6599/26162 | ✓5824 | ✗ 21] ✓ tests/gateway/test_channel_directory.py (33✓, 2.1s)
|
|
[ 25.4% | 6639/26162 | ✓5864 | ✗ 21] ✓ tests/gateway/test_command_bypass_active_session.py (40✓, 2.3s)
|
|
[ 25.4% | 6654/26162 | ✓5879 | ✗ 21] ✓ tests/gateway/test_complete_path_at_filter.py (15✓, 2.1s)
|
|
[ 25.7% | 6732/26162 | ✓5957 | ✗ 21] ✓ tests/acp/test_server.py (78✓, 35.3s)
|
|
[ 25.8% | 6748/26162 | ✓5973 | ✗ 21] ✓ tests/gateway/test_delivery.py (16✓, 1.0s)
|
|
[ 25.9% | 6784/26162 | ✓6009 | ✗ 21] ✓ tests/gateway/test_api_server_jobs.py (36✓, 5.6s)
|
|
[ 26.1% | 6839/26162 | ✓6064 | ✗ 21] ✓ tests/cli/test_reasoning_command.py (55✓, 10.7s)
|
|
[ 26.2% | 6854/26162 | ✓6079 | ✗ 21] ✓ tests/cli/test_tool_progress_scrollback.py (15✓, 9.8s)
|
|
[ 26.3% | 6878/26162 | ✓6103 | ✗ 21] ✓ tests/gateway/test_config_cwd_bridge.py (24✓, 1.7s)
|
|
[ 26.3% | 6880/26162 | ✓6105 | ✗ 21] ✓ tests/gateway/test_debug_command.py (2✓, 1.5s)
|
|
[ 26.5% | 6922/26162 | ✓6147 | ✗ 21] ✓ tests/cli/test_cli_init.py (42✓, 16.1s)
|
|
[ 26.5% | 6941/26162 | ✓6166 | ✗ 21] ✓ tests/gateway/test_discord_allowed_mentions.py (19✓, 1.5s)
|
|
[ 26.6% | 6956/26162 | ✓6181 | ✗ 21] ✓ tests/gateway/test_discord_allowed_channels.py (15✓, 1.6s)
|
|
[ 26.7% | 6974/26162 | ✓6199 | ✗ 21] ✓ tests/cron/test_cron_no_agent.py (18✓, 9.5s)
|
|
[ 26.7% | 6980/26162 | ✓6205 | ✗ 21] ✓ tests/gateway/test_destructive_slash_confirm.py (6✓, 2.0s)
|
|
[ 26.8% | 7002/26162 | ✓6227 | ✗ 21] ✓ tests/gateway/test_api_server_runs.py (22✓, 6.3s)
|
|
[ 26.8% | 7016/26162 | ✓6241 | ✗ 21] ✓ tests/gateway/test_discord_attachment_download.py (14✓, 1.4s)
|
|
[ 26.8% | 7022/26162 | ✓6247 | ✗ 21] ✓ tests/gateway/test_discord_channel_skills.py (6✓, 1.1s)
|
|
[ 26.9% | 7040/26162 | ✓6265 | ✗ 21] ✓ tests/cli/test_quick_commands.py (18✓, 12.3s)
|
|
[ 26.9% | 7049/26162 | ✓6274 | ✗ 21] ✓ tests/gateway/test_discord_bot_auth_bypass.py (9✓, 2.0s)
|
|
[ 27.0% | 7057/26162 | ✓6282 | ✗ 21] ✓ tests/gateway/test_discord_bot_filter.py (8✓, 2.0s)
|
|
[ 27.0% | 7071/26162 | ✓6296 | ✗ 21] ✓ tests/gateway/test_discord_clarify_buttons.py (14✓, 1.9s)
|
|
[ 27.0% | 7072/26162 | ✓6297 | ✗ 21] ✓ tests/gateway/test_discord_media_metadata.py (1✓, 1.3s)
|
|
[ 27.0% | 7073/26162 | ✓6298 | ✗ 21] ✓ tests/gateway/test_discord_model_picker.py (1✓, 1.2s)
|
|
[ 27.1% | 7092/26162 | ✓6317 | ✗ 21] ✓ tests/gateway/test_discord_component_auth.py (19✓, 1.8s)
|
|
[ 27.1% | 7095/26162 | ✓6320 | ✗ 21] ✓ tests/gateway/test_discord_opus.py (3✓, 1.2s)
|
|
[ 27.1% | 7096/26162 | ✓6321 | ✗ 21] ✓ tests/gateway/test_discord_race_polish.py (1✓, 0.8s)
|
|
[ 27.1% | 7097/26162 | ✓6322 | ✗ 21] ✓ tests/gateway/test_discord_imports.py (1✓, 1.6s)
|
|
[ 27.2% | 7117/26162 | ✓6342 | ✗ 21] ✓ tests/gateway/test_discord_document_handling.py (20✓, 1.9s)
|
|
[ 27.3% | 7151/26162 | ✓6376 | ✗ 21] ✓ tests/gateway/test_discord_free_response.py (34✓, 2.0s)
|
|
[ 27.3% | 7153/26162 | ✓6378 | ✗ 21] ✓ tests/cron/test_codex_execution_paths.py (2✓, 12.7s)
|
|
[ 27.4% | 7159/26162 | ✓6384 | ✗ 21] ✓ tests/gateway/test_config_env_bridge_authority.py (6✓, 4.9s)
|
|
[ 27.6% | 7215/26162 | ✓6440 | ✗ 21] ✓ tests/agent/test_insights.py (56✓, 30.9s)
|
|
[ 27.6% | 7222/26162 | ✓6447 | ✗ 21] ✓ tests/gateway/test_discord_reactions.py (7✓, 1.6s)
|
|
[ 27.7% | 7250/26162 | ✓6475 | ✗ 21] ✓ tests/cli/test_surrogate_sanitization.py (28✓, 13.5s)
|
|
[ 27.7% | 7258/26162 | ✓6483 | ✗ 21] ✓ tests/gateway/test_discord_system_messages.py (8✓, 1.4s)
|
|
[ 27.8% | 7276/26162 | ✓6501 | ✗ 21] ✓ tests/gateway/test_discord_send.py (18✓, 1.7s)
|
|
[ 27.8% | 7284/26162 | ✓6509 | ✗ 21] ✓ tests/gateway/test_discord_thread_persistence.py (8✓, 1.6s)
|
|
[ 28.0% | 7316/26162 | ✓6541 | ✗ 21] ✓ tests/gateway/test_discord_slash_auth.py (32✓, 2.1s)
|
|
[ 28.0% | 7328/26162 | ✓6553 | ✗ 21] ✓ tests/gateway/test_discord_roles_dm_scope.py (12✓, 2.3s)
|
|
[ 28.1% | 7361/26162 | ✓6586 | ✗ 21] ✓ tests/gateway/test_dm_topics.py (33✓, 1.8s)
|
|
[ 28.2% | 7383/26162 | ✓6608 | ✗ 21] ✓ tests/gateway/test_document_cache.py (22✓, 1.4s)
|
|
[ 28.4% | 7419/26162 | ✓6644 | ✗ 21] ✓ tests/cron/test_cron_script.py (36✓, 13.3s)
|
|
[ 28.5% | 7463/26162 | ✓6688 | ✗ 21] ✓ tests/gateway/test_extract_local_files.py (44✓, 1.4s)
|
|
[ 28.5% | 7467/26162 | ✓6692 | ✗ 21] ✓ tests/gateway/test_fallback_eviction.py (4✓, 1.2s)
|
|
[ 28.7% | 7499/26162 | ✓6724 | ✗ 21] ✓ tests/gateway/test_display_config.py (32✓, 2.8s)
|
|
[ 28.7% | 7512/26162 | ✓6737 | ✗ 21] ✓ tests/gateway/test_ephemeral_reply.py (13✓, 2.2s)
|
|
[ 28.7% | 7518/26162 | ✓6743 | ✗ 21] ✓ tests/gateway/test_feishu_bot_auth_bypass.py (6✓, 1.7s)
|
|
[ 28.8% | 7545/26162 | ✓6764 | ✗ 21] ✓ tests/gateway/test_allowed_channels_widening.py (21✓ 6s, 12.5s)
|
|
[ 28.9% | 7569/26162 | ✓6788 | ✗ 21] ✓ tests/gateway/test_duplicate_reply_suppression.py (24✓, 2.6s)
|
|
[ 29.1% | 7619/26162 | ✓6838 | ✗ 21] ✓ tests/gateway/test_bluebubbles.py (50✓, 10.1s)
|
|
[ 29.1% | 7622/26162 | ✓6841 | ✗ 21] ✓ tests/gateway/test_gateway_command_help.py (3✓, 1.9s)
|
|
[ 29.2% | 7631/26162 | ✓6850 | ✗ 21] ✓ tests/gateway/test_fresh_reset_skill_injection.py (9✓, 2.2s)
|
|
[ 29.2% | 7652/26162 | ✓6871 | ✗ 21] ✓ tests/gateway/test_hooks.py (21✓, 1.1s)
|
|
[ 29.3% | 7664/26162 | ✓6883 | ✗ 21] ✓ tests/gateway/test_api_server_toolset.py (12✓, 12.3s)
|
|
[ 29.6% | 7747/26162 | ✓6966 | ✗ 21] ✓ tests/agent/test_context_compressor.py (83✓, 38.9s)
|
|
[ 29.6% | 7752/26162 | ✓6971 | ✗ 21] ✓ tests/gateway/test_goal_verdict_send.py (5✓, 2.4s)
|
|
[ 29.7% | 7764/26162 | ✓6983 | ✗ 21] ✓ tests/gateway/test_insights_unicode_flags.py (12✓, 1.6s)
|
|
[ 29.7% | 7770/26162 | ✓6989 | ✗ 21] ✓ tests/gateway/test_interrupt_key_match.py (6✓, 1.2s)
|
|
[ 29.8% | 7784/26162 | ✓7003 | ✗ 21] ✓ tests/gateway/test_discord_channel_controls.py (14✓, 7.8s)
|
|
[ 29.9% | 7815/26162 | ✓7034 | ✗ 21] ✓ tests/gateway/test_background_process_notifications.py (31✓, 12.1s)
|
|
[ 29.9% | 7816/26162 | ✓7035 | ✗ 21] ✓ tests/gateway/test_compression_session_id_persistence.py (1✓, 10.3s)
|
|
[ 30.0% | 7837/26162 | ✓7056 | ✗ 21] ✓ tests/gateway/test_background_command.py (21✓, 12.3s)
|
|
[ 30.0% | 7841/26162 | ✓7060 | ✗ 21] ✓ tests/gateway/test_compress_command.py (4✓, 11.0s)
|
|
[ 30.0% | 7851/26162 | ✓7070 | ✗ 21] ✓ tests/gateway/test_discord_channel_prompts.py (10✓, 8.3s)
|
|
[ 30.0% | 7852/26162 | ✓7071 | ✗ 21] ✓ tests/gateway/test_load_transcript_db_only.py (1✓, 1.2s)
|
|
[ 30.0% | 7860/26162 | ✓7079 | ✗ 21] ✓ tests/gateway/test_message_deduplicator.py (8✓, 0.8s)
|
|
[ 30.1% | 7875/26162 | ✓7094 | ✗ 21] ✓ tests/gateway/test_mirror.py (15✓, 0.8s)
|
|
[ 30.1% | 7879/26162 | ✓7098 | ✗ 21] ✓ tests/gateway/test_media_extraction.py (4✓, 1.8s)
|
|
[ 30.3% | 7915/26162 | ✓7134 | ✗ 21] ✓ tests/gateway/test_media_download_retry.py (36✓, 2.1s)
|
|
[ 30.3% | 7917/26162 | ✓7136 | ✗ 21] ✓ tests/gateway/test_compress_focus.py (2✓, 12.5s)
|
|
[ 30.3% | 7919/26162 | ✓7138 | ✗ 21] ✓ tests/gateway/test_compress_plugin_engine.py (2✓, 12.5s)
|
|
[ 30.3% | 7929/26162 | ✓7148 | ✗ 21] ✓ tests/gateway/test_memory_monitor.py (10✓, 2.3s)
|
|
[ 30.6% | 8002/26162 | ✓7221 | ✗ 21] ✓ tests/gateway/test_line_plugin.py (73✓, 3.4s)
|
|
[ 30.6% | 8011/26162 | ✓7230 | ✗ 21] ✓ tests/gateway/test_model_switch_persistence.py (9✓, 2.1s)
|
|
[ 30.8% | 8055/26162 | ✓7274 | ✗ 21] ✓ tests/gateway/test_irc_adapter.py (44✓, 4.4s)
|
|
[ 30.9% | 8071/26162 | ✓7290 | ✗ 21] ✓ tests/gateway/test_pii_redaction.py (16✓, 1.0s)
|
|
[ 31.3% | 8199/26162 | ✓7418 | ✗ 21] ✓ tests/cron/test_scheduler.py (128✓, 20.0s)
|
|
[ 31.4% | 8215/26162 | ✓7434 | ✗ 21] ✓ tests/gateway/test_discord_connect.py (16✓, 11.5s)
|
|
[ 31.4% | 8218/26162 | ✓7437 | ✗ 21] ✓ tests/gateway/test_pending_drain_race.py (3✓, 2.1s)
|
|
[ 31.5% | 8251/26162 | ✓7470 | ✗ 21] ✓ tests/gateway/test_discord_reply_mode.py (33✓, 10.9s)
|
|
[ 31.7% | 8282/26162 | ✓7501 | ✗ 21] ✓ tests/gateway/test_platform_connected_checkers.py (31✓, 1.2s)
|
|
[ 31.9% | 8337/26162 | ✓7556 | ✗ 21] ✓ tests/gateway/test_agent_cache.py (55✓, 20.1s)
|
|
[ 32.3% | 8440/26162 | ✓7659 | ✗ 21] ✓ tests/gateway/test_platform_base.py (103✓, 2.4s)
|
|
[ 32.3% | 8447/26162 | ✓7659 | ✗ 21] ✓ tests/gateway/test_plugin_platform_interface.py (7s, 0.5s)
|
|
[ 32.3% | 8454/26162 | ✓7666 | ✗ 21] ✓ tests/gateway/test_home_target_env_var.py (7✓, 7.9s)
|
|
[ 32.6% | 8532/26162 | ✓7744 | ✗ 21] ✓ tests/gateway/test_ntfy_plugin.py (78✓, 3.8s)
|
|
[ 32.8% | 8575/26162 | ✓7787 | ✗ 21] ✓ tests/gateway/test_pairing.py (43✓, 3.8s)
|
|
[ 32.8% | 8579/26162 | ✓7791 | ✗ 21] ✓ tests/gateway/test_fast_command.py (4✓, 10.0s)
|
|
[ 32.8% | 8588/26162 | ✓7800 | ✗ 21] ✓ tests/gateway/test_post_delivery_callback_chaining.py (9✓, 1.0s)
|
|
[ 32.9% | 8595/26162 | ✓7807 | ✗ 21] ✓ tests/gateway/test_platform_http_client_limits.py (7✓, 2.3s)
|
|
[ 32.9% | 8599/26162 | ✓7811 | ✗ 21] ✓ tests/gateway/test_reload_skills_command.py (4✓, 1.4s)
|
|
[ 32.9% | 8602/26162 | ✓7814 | ✗ 21] ✓ tests/gateway/test_goal_status_notice.py (3✓, 10.2s)
|
|
[ 32.9% | 8606/26162 | ✓7818 | ✗ 21] ✓ tests/gateway/test_keep_typing_timeout.py (4✓, 8.4s)
|
|
[ 32.9% | 8611/26162 | ✓7823 | ✗ 21] ✓ tests/gateway/test_pre_gateway_dispatch.py (5✓, 2.1s)
|
|
[ 32.9% | 8616/26162 | ✓7828 | ✗ 21] ✓ tests/gateway/test_reload_skills_discord_resync.py (5✓, 1.6s)
|
|
[ 33.0% | 8621/26162 | ✓7833 | ✗ 21] ✓ tests/gateway/test_pending_drain_no_recursion.py (5✓, 5.9s)
|
|
[ 33.2% | 8681/26162 | ✓7893 | ✗ 21] ✓ tests/gateway/test_email.py (60✓, 12.7s)
|
|
[ 33.2% | 8682/26162 | ✓7894 | ✗ 21] ✓ tests/gateway/test_goal_max_turns_config.py (1✓, 11.8s)
|
|
[ 33.4% | 8730/26162 | ✓7942 | ✗ 21] ✓ tests/gateway/test_config.py (48✓, 18.6s)
|
|
[ 33.5% | 8753/26162 | ✓7965 | ✗ 21] ✓ tests/gateway/test_msgraph_webhook.py (23✓, 9.1s)
|
|
[ 33.6% | 8786/26162 | ✓7998 | ✗ 21] ✓ tests/gateway/test_discord_slash_commands.py (33✓, 15.5s)
|
|
[ 33.8% | 8831/26162 | ✓8043 | ✗ 21] ✓ tests/gateway/test_homeassistant.py (45✓, 12.7s)
|
|
[ 33.8% | 8837/26162 | ✓8049 | ✗ 21] ✓ tests/gateway/test_kanban_notifier.py (6✓, 11.7s)
|
|
[ 33.8% | 8838/26162 | ✓8050 | ✗ 21] ✓ tests/gateway/test_model_command_custom_providers.py (1✓, 10.7s)
|
|
[ 33.9% | 8881/26162 | ✓8093 | ✗ 21] ✓ tests/gateway/test_mattermost.py (43✓, 11.6s)
|
|
[ 34.0% | 8887/26162 | ✓8099 | ✗ 21] ✓ tests/gateway/test_pending_event_none.py (6✓, 8.8s)
|
|
[ 34.0% | 8895/26162 | ✓8107 | ✗ 21] ✓ tests/gateway/test_internal_event_bypass_pairing.py (8✓, 13.4s)
|
|
[ 34.1% | 8909/26162 | ✓8121 | ✗ 21] ✓ tests/gateway/test_resume_command.py (14✓, 4.0s)
|
|
[ 34.1% | 8923/26162 | ✓8135 | ✗ 21] ✓ tests/gateway/test_loop_exception_handler.py (14✓, 12.2s)
|
|
[ 34.1% | 8928/26162 | ✓8140 | ✗ 21] ✓ tests/gateway/test_running_agent_session_toggles.py (5✓, 1.6s)
|
|
[ 34.7% | 9087/26162 | ✓8299 | ✗ 21] ✓ tests/gateway/test_qqbot.py (159✓, 6.8s)
|
|
[ 34.7% | 9090/26162 | ✓8302 | ✗ 21] ✓ tests/gateway/test_notice_delivery.py (3✓, 11.6s)
|
|
[ 34.8% | 9115/26162 | ✓8327 | ✗ 21] ✓ tests/gateway/test_runtime_footer.py (25✓, 1.8s)
|
|
[ 35.4% | 9265/26162 | ✓8477 | ✗ 21] ✓ tests/gateway/test_api_server.py (150✓, 27.4s)
|
|
[ 36.0% | 9425/26162 | ✓8637 | ✗ 21] ✓ tests/gateway/test_google_chat.py (160✓, 16.4s)
|
|
[ 36.0% | 9427/26162 | ✓8639 | ✗ 21] ✓ tests/gateway/test_native_image_buffer_isolation.py (2✓, 13.2s)
|
|
[ 36.1% | 9450/26162 | ✓8662 | ✗ 21] ✓ tests/gateway/test_send_image_file.py (23✓, 2.6s)
|
|
[ 36.2% | 9469/26162 | ✓8681 | ✗ 21] ✓ tests/gateway/test_send_multiple_images.py (19✓, 2.7s)
|
|
[ 36.3% | 9504/26162 | ✓8716 | ✗ 21] ✓ tests/gateway/test_send_retry.py (35✓, 2.4s)
|
|
[ 36.4% | 9520/26162 | ✓8732 | ✗ 21] ✓ tests/gateway/test_replay_entry_fields.py (16✓, 9.1s)
|
|
[ 36.4% | 9531/26162 | ✓8743 | ✗ 21] ✓ tests/gateway/test_queue_consumption.py (11✓, 9.6s)
|
|
[ 36.4% | 9536/26162 | ✓8748 | ✗ 21] ✓ tests/gateway/test_session_boundary_security_state.py (5✓, 2.0s)
|
|
[ 36.5% | 9554/26162 | ✓8766 | ✗ 21] ✓ tests/gateway/test_reasoning_command.py (18✓, 10.5s)
|
|
[ 36.6% | 9583/26162 | ✓8795 | ✗ 21] ✓ tests/gateway/test_platform_reconnect.py (29✓, 12.3s)
|
|
[ 36.6% | 9587/26162 | ✓8799 | ✗ 21] ✓ tests/gateway/test_session_list_allowed_sources.py (4✓, 1.9s)
|
|
[ 36.7% | 9610/26162 | ✓8822 | ✗ 21] ✓ tests/gateway/test_session_hygiene.py (23✓, 2.5s)
|
|
[ 36.8% | 9627/26162 | ✓8839 | ✗ 21] ✓ tests/gateway/test_restart_drain.py (17✓, 9.9s)
|
|
[ 36.8% | 9630/26162 | ✓8842 | ✗ 21] ✓ tests/gateway/test_session_model_reset.py (3✓, 1.6s)
|
|
[ 36.8% | 9635/26162 | ✓8847 | ✗ 21] ✓ tests/gateway/test_reply_to_injection.py (5✓, 10.5s)
|
|
[ 36.9% | 9657/26162 | ✓8869 | ✗ 21] ✓ tests/gateway/test_proxy_mode.py (22✓, 11.6s)
|
|
[ 37.0% | 9682/26162 | ✓8894 | ✗ 21] ✓ tests/gateway/test_restart_notification.py (25✓, 10.1s)
|
|
[ 37.0% | 9684/26162 | ✓8896 | ✗ 21] ✓ tests/gateway/test_retry_replacement.py (2✓, 9.7s)
|
|
[ 37.1% | 9694/26162 | ✓8906 | ✗ 21] ✓ tests/gateway/test_session_state_cleanup.py (10✓, 1.3s)
|
|
[ 37.1% | 9710/26162 | ✓8922 | ✗ 21] ✓ tests/gateway/test_session_reset_notify.py (16✓, 1.9s)
|
|
[ 37.3% | 9760/26162 | ✓8972 | ✗ 21] ✓ tests/gateway/test_platform_registry.py (50✓, 13.9s)
|
|
[ 37.6% | 9834/26162 | ✓9046 | ✗ 21] ✓ tests/gateway/test_session.py (74✓, 5.3s)
|
|
[ 37.6% | 9836/26162 | ✓9048 | ✗ 21] ✓ tests/gateway/test_run_progress_interrupt.py (2✓, 9.9s)
|
|
[ 37.7% | 9854/26162 | ✓9066 | ✗ 21] ✓ tests/gateway/test_session_store_prune.py (18✓, 1.7s)
|
|
[ 37.7% | 9864/26162 | ✓9076 | ✗ 21] ✓ tests/gateway/test_session_dm_thread_seeding.py (10✓, 4.5s)
|
|
[ 37.7% | 9872/26162 | ✓9084 | ✗ 21] ✓ tests/gateway/test_gateway_inactivity_timeout.py (8✓, 22.0s)
|
|
[ 37.7% | 9874/26162 | ✓9086 | ✗ 21] ✓ tests/gateway/test_retry_response.py (2✓, 10.9s)
|
|
[ 37.8% | 9892/26162 | ✓9104 | ✗ 21] ✓ tests/gateway/test_signal_rate_limit.py (18✓, 1.3s)
|
|
[ 37.8% | 9901/26162 | ✓9113 | ✗ 21] ✓ tests/gateway/test_restart_redelivery_dedup.py (9✓, 11.7s)
|
|
[ 38.0% | 9951/26162 | ✓9163 | ✗ 21] ✓ tests/gateway/test_signal_format.py (50✓, 1.6s)
|
|
[ 38.1% | 9972/26162 | ✓9184 | ✗ 21] ✓ tests/gateway/test_slash_access.py (21✓, 1.3s)
|
|
[ 38.2% | 9999/26162 | ✓9211 | ✗ 21] ✓ tests/gateway/test_simplex_plugin.py (27✓, 1.7s)
|
|
[ 38.2% | 10006/26162 | ✓9218 | ✗ 21] ✓ tests/gateway/test_shutdown_memory_provider_messages.py (7✓, 2.6s)
|
|
[ 38.3% | 10009/26162 | ✓9221 | ✗ 21] ✓ tests/gateway/test_ssl_certs.py (3✓, 1.3s)
|
|
[ 38.3% | 10014/26162 | ✓9226 | ✗ 21] ✓ tests/gateway/test_run_cleanup_progress.py (5✓, 11.4s)
|
|
[ 38.3% | 10020/26162 | ✓9232 | ✗ 21] ✓ tests/gateway/test_sse_agent_cancel.py (6✓, 1.7s)
|
|
[ 38.3% | 10025/26162 | ✓9237 | ✗ 21] ✓ tests/gateway/test_steer_command.py (5✓, 1.1s)
|
|
[ 38.4% | 10055/26162 | ✓9267 | ✗ 21] ✓ tests/gateway/test_shutdown_forensics.py (30✓, 3.6s)
|
|
[ 38.6% | 10105/26162 | ✓9317 | ✗ 21] ✓ tests/gateway/test_status.py (50✓, 1.9s)
|
|
[ 38.6% | 10109/26162 | ✓9321 | ✗ 21] ✓ tests/gateway/test_step_callback_compat.py (4✓, 1.5s)
|
|
[ 38.7% | 10115/26162 | ✓9327 | ✗ 21] ✓ tests/gateway/test_session_boundary_hooks.py (6✓, 7.5s)
|
|
[ 38.7% | 10132/26162 | ✓9344 | ✗ 21] ✓ tests/gateway/test_sticker_cache.py (17✓, 1.5s)
|
|
[ 38.8% | 10139/26162 | ✓9351 | ✗ 21] ✓ tests/gateway/test_runtime_config_env_expansion.py (7✓, 10.3s)
|
|
[ 38.8% | 10141/26162 | ✓9353 | ✗ 21] ✓ tests/gateway/test_runtime_env_reload_config_authority.py (2✓, 10.0s)
|
|
[ 38.8% | 10155/26162 | ✓9367 | ✗ 21] ✓ tests/gateway/test_status_command.py (14✓, 2.4s)
|
|
[ 38.9% | 10167/26162 | ✓9379 | ✗ 21] ✓ tests/gateway/test_stream_consumer_draft.py (12✓, 1.8s)
|
|
[ 38.9% | 10182/26162 | ✓9393 | ✗ 21] ✓ tests/gateway/test_stream_consumer_fresh_final.py (14✓ 1s, 2.0s)
|
|
[ 39.0% | 10194/26162 | ✓9405 | ✗ 21] ✓ tests/gateway/test_session_env.py (12✓, 8.1s)
|
|
[ 39.0% | 10199/26162 | ✓9410 | ✗ 21] ✓ tests/gateway/test_unavailable_skill_hint.py (5✓, 1.1s)
|
|
[ 39.0% | 10203/26162 | ✓9414 | ✗ 21] ✓ tests/gateway/test_safe_adapter_disconnect.py (4✓, 10.9s)
|
|
[ 39.0% | 10205/26162 | ✓9416 | ✗ 21] ✓ tests/gateway/test_runner_fatal_adapter.py (2✓, 12.7s)
|
|
[ 39.2% | 10251/26162 | ✓9462 | ✗ 21] ✓ tests/gateway/test_teams.py (46✓, 2.6s)
|
|
[ 39.3% | 10281/26162 | ✓9492 | ✗ 21] ✓ tests/gateway/test_unauthorized_dm_behavior.py (30✓, 1.8s)
|
|
[ 39.3% | 10289/26162 | ✓9500 | ✗ 21] ✓ tests/gateway/test_usage_command.py (8✓, 1.5s)
|
|
[ 39.4% | 10317/26162 | ✓9528 | ✗ 21] ✓ tests/gateway/test_update_command.py (28✓, 3.0s)
|
|
[ 39.4% | 10320/26162 | ✓9531 | ✗ 21] ✓ tests/gateway/test_vision_memory_leak.py (3✓, 2.2s)
|
|
[ 39.5% | 10329/26162 | ✓9540 | ✗ 21] ✓ tests/gateway/test_gateway_shutdown.py (9✓, 28.1s)
|
|
[ 39.5% | 10343/26162 | ✓9554 | ✗ 21] ✓ tests/gateway/test_title_command.py (14✓, 4.3s)
|
|
[ 39.5% | 10345/26162 | ✓9556 | ✗ 21] ✓ tests/gateway/test_shared_group_sender_prefix.py (2✓, 8.2s)
|
|
[ 39.6% | 10354/26162 | ✓9565 | ✗ 21] ✓ tests/gateway/test_session_info.py (9✓, 10.7s)
|
|
[ 39.6% | 10365/26162 | ✓9576 | ✗ 21] ✓ tests/gateway/test_weak_credential_guard.py (11✓, 2.5s)
|
|
[ 39.6% | 10367/26162 | ✓9578 | ✗ 21] ✓ tests/gateway/test_send_voice_reply_notify.py (2✓, 13.6s)
|
|
[ 39.7% | 10380/26162 | ✓9591 | ✗ 21] ✓ tests/gateway/test_session_split_brain_11016.py (13✓, 9.5s)
|
|
[ 39.9% | 10445/26162 | ✓9656 | ✗ 21] ✓ tests/gateway/test_webhook_adapter.py (65✓, 2.5s)
|
|
[ 39.9% | 10449/26162 | ✓9660 | ✗ 21] ✓ tests/gateway/test_session_model_override_routing.py (4✓, 11.2s)
|
|
[ 40.0% | 10462/26162 | ✓9673 | ✗ 21] ✓ tests/gateway/test_webhook_dynamic_routes.py (13✓, 2.0s)
|
|
[ 40.0% | 10474/26162 | ✓9685 | ✗ 21] ✓ tests/gateway/test_wecom_callback.py (12✓, 1.5s)
|
|
[ 40.1% | 10488/26162 | ✓9699 | ✗ 21] ✓ tests/gateway/test_webhook_deliver_only.py (14✓, 2.2s)
|
|
[ 40.1% | 10492/26162 | ✓9703 | ✗ 21] ✓ tests/gateway/test_webhook_integration.py (4✓, 1.9s)
|
|
[ 40.1% | 10499/26162 | ✓9710 | ✗ 21] ✓ tests/gateway/test_stream_consumer_thread_routing.py (7✓, 7.0s)
|
|
[ 40.1% | 10502/26162 | ✓9713 | ✗ 21] ✓ tests/gateway/test_webhook_signature_rate_limit.py (3✓, 1.9s)
|
|
[ 40.5% | 10591/26162 | ✓9797 | ✗ 21] ✓ tests/gateway/test_stream_consumer.py (84✓ 5s, 7.4s)
|
|
[ 40.6% | 10609/26162 | ✓9815 | ✗ 21] ✓ tests/gateway/test_slash_access_dispatch.py (18✓, 9.1s)
|
|
[ 40.6% | 10617/26162 | ✓9823 | ✗ 21] ✓ tests/gateway/test_shutdown_cache_cleanup.py (8✓, 10.7s)
|
|
[ 40.7% | 10661/26162 | ✓9867 | ✗ 21] ✓ tests/gateway/test_wecom.py (44✓, 2.6s)
|
|
[ 40.8% | 10663/26162 | ✓9869 | ✗ 21] ✓ tests/hermes_cli/test_anthropic_oauth_flow.py (2✓, 1.1s)
|
|
[ 40.8% | 10666/26162 | ✓9872 | ✗ 21] ✓ tests/hermes_cli/test_anthropic_provider_persistence.py (3✓, 1.0s)
|
|
[ 40.8% | 10675/26162 | ✓9881 | ✗ 21] ✓ tests/hermes_cli/test_ai_gateway_models.py (9✓, 1.4s)
|
|
[ 40.8% | 10681/26162 | ✓9887 | ✗ 21] ✓ tests/gateway/test_ws_auth_retry.py (6✓, 1.6s)
|
|
[ 40.9% | 10690/26162 | ✓9896 | ✗ 21] ✓ tests/gateway/test_runner_startup_failures.py (9✓, 17.9s)
|
|
[ 40.9% | 10693/26162 | ✓9899 | ✗ 21] ✓ tests/hermes_cli/test_apply_model_switch_result_context.py (3✓, 1.5s)
|
|
[ 40.9% | 10697/26162 | ✓9903 | ✗ 21] ✓ tests/hermes_cli/test_apply_profile_override.py (4✓, 1.2s)
|
|
[ 40.9% | 10700/26162 | ✓9906 | ✗ 21] ✓ tests/hermes_cli/test_atomic_yaml_write.py (3✓, 0.8s)
|
|
[ 41.3% | 10809/26162 | ✓10015 | ✗ 21] ✓ tests/gateway/test_signal.py (109✓, 11.6s)
|
|
[ 41.4% | 10836/26162 | ✓10042 | ✗ 21] ✓ tests/gateway/test_whatsapp_connect.py (27✓, 3.2s)
|
|
[ 41.4% | 10844/26162 | ✓10050 | ✗ 21] ✓ tests/gateway/test_transcript_offset.py (8✓, 8.3s)
|
|
[ 41.5% | 10849/26162 | ✓10055 | ✗ 21] ✓ tests/hermes_cli/test_at_context_completion_filter.py (5✓, 1.3s)
|
|
[ 41.6% | 10888/26162 | ✓10094 | ✗ 21] ✓ tests/gateway/test_sms.py (39✓, 10.8s)
|
|
[ 41.7% | 10902/26162 | ✓10108 | ✗ 21] ✓ tests/hermes_cli/test_atomic_json_write.py (14✓, 1.4s)
|
|
[ 41.7% | 10918/26162 | ✓10124 | ✗ 21] ✓ tests/hermes_cli/test_auth_codex_provider.py (16✓, 1.2s)
|
|
[ 41.8% | 10925/26162 | ✓10131 | ✗ 21] ✓ tests/gateway/test_teams_pipeline_runtime_wiring.py (7✓, 9.1s)
|
|
[ 41.8% | 10939/26162 | ✓10145 | ✗ 21] ✓ tests/hermes_cli/test_auth_loopback_ssh_hint.py (14✓, 1.5s)
|
|
[ 41.9% | 10966/26162 | ✓10172 | ✗ 21] ✓ tests/hermes_cli/test_arcee_provider.py (27✓, 2.5s)
|
|
[ 42.0% | 10977/26162 | ✓10183 | ✗ 21] ✓ tests/hermes_cli/test_auth_profile_fallback.py (11✓, 1.2s)
|
|
[ 42.1% | 11003/26162 | ✓10209 | ✗ 21] ✓ tests/gateway/test_whatsapp_formatting.py (26✓, 4.3s)
|
|
[ 42.1% | 11005/26162 | ✓10211 | ✗ 21] ✓ tests/hermes_cli/test_auth_usable_secret.py (2✓, 1.0s)
|
|
[ 42.1% | 11009/26162 | ✓10215 | ✗ 21] ✓ tests/hermes_cli/test_auth_toctou_file_modes.py (4✓, 1.3s)
|
|
[ 42.2% | 11034/26162 | ✓10240 | ✗ 21] ✓ tests/hermes_cli/test_auth_manual_paste.py (25✓, 1.9s)
|
|
[ 42.2% | 11040/26162 | ✓10246 | ✗ 21] ✓ tests/hermes_cli/test_auth_provider_gate.py (6✓, 1.6s)
|
|
[ 42.2% | 11051/26162 | ✓10257 | ✗ 21] ✓ tests/gateway/test_unknown_command.py (11✓, 9.5s)
|
|
[ 42.3% | 11059/26162 | ✓10265 | ✗ 21] ✓ tests/gateway/test_verbose_command.py (8✓, 8.5s)
|
|
[ 42.4% | 11080/26162 | ✓10286 | ✗ 21] ✓ tests/gateway/test_update_streaming.py (21✓, 9.3s)
|
|
[ 42.4% | 11089/26162 | ✓10295 | ✗ 21] ✓ tests/gateway/test_stuck_loop.py (9✓, 11.0s)
|
|
[ 42.4% | 11098/26162 | ✓10303 | ✗ 21] ✓ tests/hermes_cli/test_auth_ssl_macos.py (8✓ 1s, 2.2s)
|
|
[ 43.1% | 11279/26162 | ✓10483 | ✗ 22] ✗ tests/gateway/test_voice_command.py (180✓ 1✗, 8.7s)
|
|
|
|
╔╍ Failed: tests/gateway/test_voice_command.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ # Create a fake audio file that TTS would produce
|
|
║ fake_audio = tmp_path / "hermes_voice"
|
|
║ fake_audio.mkdir()
|
|
║ audio_file = fake_audio / "test.mp3"
|
|
║ audio_file.write_bytes(b"fake audio")
|
|
║
|
|
║ tts_result = json.dumps({
|
|
║ "success": True,
|
|
║ "file_path": str(audio_file),
|
|
║ })
|
|
║
|
|
║ with patch("gateway.run.asyncio.to_thread", new_callable=AsyncMock, return_value=tts_result), \
|
|
║ patch("hermes_agent_tts.tts_tool._strip_markdown_for_tts", return_value="hello"), \
|
|
║ patch("os.path.isfile", return_value=True), \
|
|
║ patch("os.makedirs"):
|
|
║ await runner._send_voice_reply(event, "Hello world")
|
|
║
|
|
║ # File should be cleaned up despite exception
|
|
║ > assert not audio_file.exists(), \
|
|
║ "Temp audio file must be cleaned up even when send_voice raises"
|
|
║ E AssertionError: Temp audio file must be cleaned up even when send_voice raises
|
|
║ E assert not True
|
|
║ E + where True = exists()
|
|
║ E + where exists = PosixPath('/tmp/pytest-of-ethie/pytest-42460/test_files_cleaned_on_send_exc0/hermes_voice/test.mp3').exists
|
|
║
|
|
║ tests/gateway/test_voice_command.py:2121: AssertionError
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/gateway/test_voice_command.py::TestSendVoiceReplyCleanup::test_files_cleaned_on_send_exception
|
|
║ ======================== 1 failed, 180 passed in 7.92s =========================
|
|
║
|
|
║ Repro: python -m pytest tests/gateway/test_voice_command.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 43.2% | 11311/26162 | ✓10515 | ✗ 22] ✓ tests/hermes_cli/test_auth_qwen_provider.py (32✓, 2.5s)
|
|
[ 43.3% | 11330/26162 | ✓10534 | ✗ 22] ✓ tests/hermes_cli/test_azure_detect.py (19✓, 1.8s)
|
|
[ 43.3% | 11334/26162 | ✓10538 | ✗ 22] ✓ tests/hermes_cli/test_banner_pip_update.py (4✓, 1.4s)
|
|
[ 43.4% | 11342/26162 | ✓10546 | ✗ 22] ✓ tests/hermes_cli/test_bundles.py (8✓, 1.3s)
|
|
[ 43.4% | 11352/26162 | ✓10556 | ✗ 22] ✓ tests/gateway/test_voice_mode_platform_isolation.py (10✓, 9.0s)
|
|
[ 43.5% | 11369/26162 | ✓10573 | ✗ 22] ✓ tests/gateway/test_session_race_guard.py (17✓, 16.6s)
|
|
[ 43.5% | 11374/26162 | ✓10578 | ✗ 22] ✓ tests/hermes_cli/test_banner_skills.py (5✓, 1.4s)
|
|
[ 43.5% | 11378/26162 | ✓10582 | ✗ 22] ✓ tests/hermes_cli/test_banner_git_state.py (4✓, 1.7s)
|
|
[ 43.5% | 11385/26162 | ✓10589 | ✗ 22] ✓ tests/gateway/test_tts_media_routing.py (7✓, 11.3s)
|
|
[ 43.5% | 11391/26162 | ✓10594 | ✗ 23] ✗ tests/gateway/test_stt_config.py (5✓ 1✗, 12.3s)
|
|
|
|
╔╍ Failed: tests/gateway/test_stt_config.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ },
|
|
║ ):
|
|
║ result = await runner._prepare_inbound_message_text(
|
|
║ event=event,
|
|
║ source=source,
|
|
║ history=[],
|
|
║ )
|
|
║
|
|
║ assert result is not None
|
|
║ > assert "queued voice transcript" in result
|
|
║ E AssertionError: assert 'queued voice transcript' in '[The user sent a voice message but I had trouble transcribing it~ (Audio file not found: /tmp/queued-voice.ogg)]'
|
|
║
|
|
║ tests/gateway/test_stt_config.py:141: AssertionError
|
|
║ =============================== warnings summary ===============================
|
|
║ tests/gateway/test_stt_config.py::test_load_gateway_config_bridges_stt_enabled_from_config_yaml
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
║ _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
║
|
|
║ tests/gateway/test_stt_config.py::test_load_gateway_config_bridges_stt_enabled_from_config_yaml
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
║ def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
║
|
|
║ tests/gateway/test_stt_config.py::test_load_gateway_config_bridges_stt_enabled_from_config_yaml
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
║ warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/gateway/test_stt_config.py::test_prepare_inbound_message_text_transcribes_queued_voice_event
|
|
║ =================== 1 failed, 5 passed, 3 warnings in 7.56s ====================
|
|
║
|
|
║ Repro: python -m pytest tests/gateway/test_stt_config.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 43.6% | 11395/26162 | ✓10598 | ✗ 23] ✓ tests/hermes_cli/test_clear_stale_base_url.py (4✓, 1.3s)
|
|
[ 43.6% | 11397/26162 | ✓10600 | ✗ 23] ✓ tests/hermes_cli/test_cli_output.py (2✓, 1.3s)
|
|
[ 43.6% | 11414/26162 | ✓10617 | ✗ 23] ✓ tests/hermes_cli/test_coalesce_session_args.py (17✓, 1.3s)
|
|
[ 43.8% | 11458/26162 | ✓10661 | ✗ 23] ✓ tests/hermes_cli/test_auth_commands.py (44✓, 4.7s)
|
|
[ 44.0% | 11506/26162 | ✓10709 | ✗ 23] ✓ tests/hermes_cli/test_claw.py (48✓, 2.3s)
|
|
[ 44.1% | 11536/26162 | ✓10739 | ✗ 23] ✓ tests/hermes_cli/test_codex_runtime_switch.py (30✓, 1.7s)
|
|
[ 44.2% | 11557/26162 | ✓10760 | ✗ 23] ✓ tests/hermes_cli/test_config_validation.py (21✓, 1.2s)
|
|
[ 44.4% | 11624/26162 | ✓10827 | ✗ 23] ✓ tests/hermes_cli/test_codex_runtime_plugin_migration.py (67✓, 2.1s)
|
|
[ 44.5% | 11638/26162 | ✓10841 | ✗ 23] ✓ tests/hermes_cli/test_container_aware_cli.py (14✓, 1.6s)
|
|
[ 44.5% | 11644/26162 | ✓10847 | ✗ 23] ✓ tests/hermes_cli/test_config_env_refs.py (6✓, 1.7s)
|
|
[ 44.5% | 11653/26162 | ✓10856 | ✗ 23] ✓ tests/hermes_cli/test_copilot_catalog_oauth_fallback.py (9✓, 1.1s)
|
|
[ 44.7% | 11684/26162 | ✓10885 | ✗ 23] ✓ tests/hermes_cli/test_completion.py (29✓ 2s, 2.3s)
|
|
[ 44.7% | 11685/26162 | ✓10886 | ✗ 23] ✓ tests/hermes_cli/test_config_drift.py (1✓, 2.3s)
|
|
[ 44.9% | 11743/26162 | ✓10944 | ✗ 23] ✓ tests/hermes_cli/test_auth_nous_provider.py (58✓, 5.5s)
|
|
[ 45.0% | 11762/26162 | ✓10963 | ✗ 23] ✓ tests/hermes_cli/test_codex_models.py (19✓, 2.7s)
|
|
[ 45.0% | 11775/26162 | ✓10976 | ✗ 23] ✓ tests/hermes_cli/test_config_env_expansion.py (13✓, 2.4s)
|
|
[ 45.1% | 11801/26162 | ✓11002 | ✗ 23] ✓ tests/hermes_cli/test_container_boot.py (26✓, 2.3s)
|
|
[ 45.2% | 11813/26162 | ✓11014 | ✗ 23] ✓ tests/hermes_cli/test_copilot_token_exchange.py (12✓, 1.3s)
|
|
[ 45.2% | 11824/26162 | ✓11025 | ✗ 23] ✓ tests/hermes_cli/test_copilot_context.py (11✓, 1.8s)
|
|
[ 45.3% | 11841/26162 | ✓11042 | ✗ 23] ✓ tests/hermes_cli/test_argparse_flag_propagation.py (17✓, 7.4s)
|
|
[ 45.5% | 11906/26162 | ✓11107 | ✗ 23] ✓ tests/gateway/test_restart_resume_pending.py (65✓, 27.6s)
|
|
[ 45.5% | 11912/26162 | ✓11113 | ✗ 23] ✓ tests/hermes_cli/test_curses_color_compat.py (6✓, 0.9s)
|
|
[ 45.6% | 11922/26162 | ✓11123 | ✗ 23] ✓ tests/hermes_cli/test_dashboard_lifecycle_flags.py (10✓, 0.7s)
|
|
[ 45.6% | 11923/26162 | ✓11124 | ✗ 23] ✓ tests/gateway/test_yolo_command.py (1✓, 8.7s)
|
|
[ 45.6% | 11927/26162 | ✓11127 | ✗ 24] ✗ tests/hermes_cli/test_codex_cli_model_picker.py (3✓ 1✗, 4.0s)
|
|
|
|
╔╍ Failed: tests/hermes_cli/test_codex_cli_model_picker.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ collected 4 items
|
|
║
|
|
║ tests/hermes_cli/test_codex_cli_model_picker.py ..F. [100%]
|
|
║
|
|
║ =================================== FAILURES ===================================
|
|
║ ________________ test_claude_code_file_detected_by_model_picker ________________
|
|
║
|
|
║ claude_code_only_env = PosixPath('/tmp/pytest-of-ethie/pytest-42518/test_claude_code_file_detected0/.hermes')
|
|
║
|
|
║ def test_claude_code_file_detected_by_model_picker(claude_code_only_env):
|
|
║ """anthropic should appear when credentials only exist in ~/.claude/.credentials.json."""
|
|
║ from hermes_cli.model_switch import list_authenticated_providers
|
|
║
|
|
║ providers = list_authenticated_providers(
|
|
║ current_provider="anthropic",
|
|
║ max_models=10,
|
|
║ )
|
|
║ slugs = [p["slug"] for p in providers]
|
|
║ > assert "anthropic" in slugs, (
|
|
║ f"anthropic not found in /model picker providers: {slugs}"
|
|
║ )
|
|
║ E AssertionError: anthropic not found in /model picker providers: []
|
|
║ E assert 'anthropic' in []
|
|
║
|
|
║ tests/hermes_cli/test_codex_cli_model_picker.py:158: AssertionError
|
|
║ ------------------------------ Captured log call -------------------------------
|
|
║ INFO hermes_cli.model_catalog:model_catalog.py:129 model catalog fetch failed (https://hermes-agent.nousresearch.com/docs/api/model-catalog.json): HTTP Error 403: Forbidden
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/hermes_cli/test_codex_cli_model_picker.py::test_claude_code_file_detected_by_model_picker
|
|
║ ========================= 1 failed, 3 passed in 2.68s ==========================
|
|
║
|
|
║ Repro: python -m pytest tests/hermes_cli/test_codex_cli_model_picker.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 45.6% | 11930/26162 | ✓11130 | ✗ 24] ✓ tests/hermes_cli/test_cron.py (3✓, 1.6s)
|
|
[ 45.9% | 12012/26162 | ✓11212 | ✗ 24] ✓ tests/hermes_cli/test_auth_xai_oauth_provider.py (82✓, 6.0s)
|
|
[ 45.9% | 12016/26162 | ✓11216 | ✗ 24] ✓ tests/hermes_cli/test_curator_run.py (4✓, 1.3s)
|
|
[ 46.0% | 12022/26162 | ✓11222 | ✗ 24] ✓ tests/hermes_cli/test_curator_recent_run_notice.py (6✓, 1.6s)
|
|
[ 46.0% | 12024/26162 | ✓11224 | ✗ 24] ✓ tests/hermes_cli/test_copilot_in_model_list.py (2✓, 2.2s)
|
|
[ 46.0% | 12025/26162 | ✓11225 | ✗ 24] ✓ tests/hermes_cli/test_dashboard_browser_safe_imports.py (1✓, 1.2s)
|
|
[ 46.1% | 12050/26162 | ✓11250 | ✗ 24] ✓ tests/hermes_cli/test_copilot_auth.py (25✓, 3.0s)
|
|
[ 46.1% | 12063/26162 | ✓11263 | ✗ 24] ✓ tests/hermes_cli/test_curator_archive_prune.py (13✓, 1.8s)
|
|
[ 46.2% | 12086/26162 | ✓11286 | ✗ 24] ✓ tests/gateway/test_text_batching.py (23✓, 15.2s)
|
|
[ 46.2% | 12091/26162 | ✓11291 | ✗ 24] ✓ tests/hermes_cli/test_curator_status.py (5✓, 1.6s)
|
|
[ 46.2% | 12092/26162 | ✓11292 | ✗ 24] ✓ tests/hermes_cli/test_dashboard_profiles_nav_label.py (1✓, 1.1s)
|
|
[ 46.2% | 12097/26162 | ✓11297 | ✗ 24] ✓ tests/hermes_cli/test_destructive_slash_confirm_gate.py (5✓, 0.9s)
|
|
[ 46.3% | 12125/26162 | ✓11325 | ✗ 24] ✓ tests/gateway/test_run_progress_topics.py (28✓, 26.0s)
|
|
[ 46.4% | 12137/26162 | ✓11337 | ✗ 24] ✓ tests/hermes_cli/test_custom_provider_context_length.py (12✓, 1.7s)
|
|
[ 46.6% | 12191/26162 | ✓11391 | ✗ 24] ✓ tests/gateway/test_weixin.py (54✓, 10.7s)
|
|
[ 46.8% | 12247/26162 | ✓11447 | ✗ 24] ✓ tests/hermes_cli/test_config.py (56✓, 4.3s)
|
|
[ 46.8% | 12252/26162 | ✓11452 | ✗ 24] ✓ tests/hermes_cli/test_deprecated_cwd_warning.py (5✓, 1.3s)
|
|
[ 46.9% | 12260/26162 | ✓11460 | ✗ 24] ✓ tests/gateway/test_whatsapp_reply_prefix.py (8✓, 10.1s)
|
|
[ 46.9% | 12262/26162 | ✓11462 | ✗ 24] ✓ tests/hermes_cli/test_doctor_dedicated_provider_skip.py (2✓, 1.1s)
|
|
[ 47.0% | 12288/26162 | ✓11488 | ✗ 24] ✓ tests/gateway/test_whatsapp_group_gating.py (26✓, 10.3s)
|
|
[ 47.0% | 12302/26162 | ✓11502 | ✗ 24] ✓ tests/hermes_cli/test_dep_ensure.py (14✓, 1.8s)
|
|
[ 47.0% | 12308/26162 | ✓11508 | ✗ 24] ✓ tests/hermes_cli/test_env_load_cache.py (6✓, 1.2s)
|
|
[ 47.1% | 12314/26162 | ✓11514 | ✗ 24] ✓ tests/hermes_cli/test_env_loader.py (6✓, 1.2s)
|
|
[ 47.1% | 12317/26162 | ✓11517 | ✗ 24] ✓ tests/hermes_cli/test_env_sanitize_on_load.py (3✓, 1.3s)
|
|
[ 47.1% | 12332/26162 | ✓11532 | ✗ 24] ✓ tests/hermes_cli/test_dingtalk_auth.py (15✓, 1.7s)
|
|
[ 47.2% | 12336/26162 | ✓11536 | ✗ 24] ✓ tests/hermes_cli/test_discord_skill_clamp_warning.py (4✓, 1.7s)
|
|
[ 47.2% | 12342/26162 | ✓11542 | ✗ 24] ✓ tests/hermes_cli/test_gateway_linger.py (6✓, 1.3s)
|
|
[ 47.2% | 12346/26162 | ✓11546 | ✗ 24] ✓ tests/hermes_cli/test_gateway_proc_fallback.py (4✓, 1.3s)
|
|
[ 47.3% | 12362/26162 | ✓11562 | ✗ 24] ✓ tests/hermes_cli/test_detect_api_mode_for_url.py (16✓, 2.1s)
|
|
[ 47.3% | 12363/26162 | ✓11563 | ✗ 24] ✓ tests/hermes_cli/test_gateway_runtime_health.py (1✓, 1.4s)
|
|
[ 47.3% | 12366/26162 | ✓11566 | ✗ 24] ✓ tests/hermes_cli/test_gateway_service_paths.py (3✓, 1.3s)
|
|
[ 47.5% | 12434/26162 | ✓11634 | ✗ 24] ✓ tests/hermes_cli/test_debug.py (68✓, 2.8s)
|
|
[ 47.6% | 12441/26162 | ✓11641 | ✗ 24] ✓ tests/hermes_cli/test_determine_api_mode_hostname.py (7✓, 2.6s)
|
|
[ 47.7% | 12474/26162 | ✓11674 | ✗ 24] ✓ tests/hermes_cli/test_gateway.py (33✓, 2.2s)
|
|
[ 47.7% | 12489/26162 | ✓11689 | ✗ 24] ✓ tests/hermes_cli/test_gateway_s6_dispatch.py (15✓, 2.5s)
|
|
[ 47.8% | 12510/26162 | ✓11710 | ✗ 24] ✓ tests/hermes_cli/test_gateway_windows.py (21✓, 2.2s)
|
|
[ 47.9% | 12524/26162 | ✓11724 | ✗ 24] ✓ tests/hermes_cli/test_hooks_cli.py (14✓, 1.8s)
|
|
[ 47.9% | 12543/26162 | ✓11743 | ✗ 24] ✓ tests/hermes_cli/test_gateway_wsl.py (19✓, 2.2s)
|
|
[ 48.0% | 12555/26162 | ✓11755 | ✗ 24] ✓ tests/hermes_cli/test_install_cua_driver.py (12✓, 1.9s)
|
|
[ 48.0% | 12556/26162 | ✓11756 | ✗ 24] ✓ tests/hermes_cli/test_kanban_db_init.py (1✓, 1.2s)
|
|
[ 48.0% | 12567/26162 | ✓11767 | ✗ 24] ✓ tests/hermes_cli/test_ignore_user_config_flags.py (11✓, 2.5s)
|
|
[ 48.1% | 12571/26162 | ✓11771 | ✗ 24] ✓ tests/hermes_cli/test_gemini_free_tier_setup_block.py (4✓, 3.0s)
|
|
[ 48.1% | 12581/26162 | ✓11781 | ✗ 24] ✓ tests/hermes_cli/test_doctor_command_install.py (10✓, 4.2s)
|
|
[ 48.1% | 12587/26162 | ✓11787 | ✗ 24] ✓ tests/hermes_cli/test_kanban_blocked_sticky.py (6✓, 2.5s)
|
|
[ 48.2% | 12605/26162 | ✓11805 | ✗ 24] ✓ tests/hermes_cli/test_inventory.py (18✓, 2.9s)
|
|
[ 48.2% | 12606/26162 | ✓11806 | ✗ 24] ✓ tests/hermes_cli/test_launcher.py (1✓, 0.7s)
|
|
[ 48.4% | 12652/26162 | ✓11852 | ✗ 24] ✓ tests/hermes_cli/test_kanban_diagnostics.py (46✓, 1.9s)
|
|
[ 48.5% | 12684/26162 | ✓11884 | ✗ 24] ✓ tests/hermes_cli/test_fallback_cmd.py (32✓, 4.9s)
|
|
[ 48.5% | 12693/26162 | ✓11893 | ✗ 24] ✓ tests/hermes_cli/test_kanban_decompose.py (9✓, 2.7s)
|
|
[ 48.5% | 12696/26162 | ✓11896 | ✗ 24] ✓ tests/hermes_cli/test_kanban_swarm.py (3✓, 1.2s)
|
|
[ 49.2% | 12869/26162 | ✓12069 | ✗ 24] ✓ tests/hermes_cli/test_api_key_providers.py (173✓, 13.9s)
|
|
[ 49.3% | 12890/26162 | ✓12090 | ✗ 24] ✓ tests/hermes_cli/test_aux_config.py (21✓, 11.3s)
|
|
[ 49.3% | 12898/26162 | ✓12098 | ✗ 24] ✓ tests/hermes_cli/test_kanban_decompose_db.py (8✓, 2.5s)
|
|
[ 49.5% | 12948/26162 | ✓12148 | ✗ 24] ✓ tests/hermes_cli/test_goals.py (50✓, 4.5s)
|
|
[ 49.5% | 12951/26162 | ✓12151 | ✗ 24] ✓ tests/hermes_cli/test_mcp_add_command_dest.py (3✓, 1.0s)
|
|
[ 49.5% | 12961/26162 | ✓12161 | ✗ 24] ✓ tests/hermes_cli/test_list_picker_providers.py (10✓, 1.7s)
|
|
[ 49.7% | 12998/26162 | ✓12198 | ✗ 24] ✓ tests/hermes_cli/test_logs.py (37✓, 1.6s)
|
|
[ 49.7% | 13003/26162 | ✓12203 | ✗ 24] ✓ tests/hermes_cli/test_managed_installs.py (5✓, 1.5s)
|
|
[ 49.7% | 13013/26162 | ✓12213 | ✗ 24] ✓ tests/hermes_cli/test_kanban_specify_db.py (10✓, 2.7s)
|
|
[ 49.8% | 13018/26162 | ✓12218 | ✗ 24] ✓ tests/hermes_cli/test_mcp_reload_confirm_gate.py (5✓, 1.3s)
|
|
[ 49.8% | 13027/26162 | ✓12227 | ✗ 24] ✓ tests/hermes_cli/test_memory_reset.py (9✓, 1.4s)
|
|
[ 49.9% | 13044/26162 | ✓12244 | ✗ 24] ✓ tests/hermes_cli/test_migrate_xai.py (17✓, 1.5s)
|
|
[ 49.9% | 13050/26162 | ✓12250 | ✗ 24] ✓ tests/hermes_cli/test_banner.py (6✓, 12.2s)
|
|
[ 49.9% | 13066/26162 | ✓12266 | ✗ 24] ✓ tests/hermes_cli/test_kanban_promote.py (16✓, 3.7s)
|
|
[ 50.0% | 13079/26162 | ✓12279 | ✗ 24] ✓ tests/hermes_cli/test_custom_provider_model_switch.py (13✓, 8.2s)
|
|
[ 50.0% | 13083/26162 | ✓12283 | ✗ 24] ✓ tests/hermes_cli/test_chat_skills_flag.py (4✓, 12.2s)
|
|
[ 50.0% | 13090/26162 | ✓12290 | ✗ 24] ✓ tests/hermes_cli/test_model_switch_context_display.py (7✓, 1.5s)
|
|
[ 50.1% | 13110/26162 | ✓12310 | ✗ 24] ✓ tests/hermes_cli/test_kanban_specify.py (20✓, 4.0s)
|
|
[ 50.2% | 13122/26162 | ✓12322 | ✗ 24] ✓ tests/hermes_cli/test_kanban_notify.py (12✓, 4.5s)
|
|
[ 50.7% | 13253/26162 | ✓12453 | ✗ 24] ✓ tests/hermes_cli/test_gateway_service.py (131✓, 6.9s)
|
|
[ 50.7% | 13267/26162 | ✓12467 | ✗ 24] ✓ tests/hermes_cli/test_mcp_tools_config.py (14✓, 2.7s)
|
|
[ 50.8% | 13290/26162 | ✓12490 | ✗ 24] ✓ tests/hermes_cli/test_model_catalog.py (23✓, 2.6s)
|
|
[ 50.8% | 13302/26162 | ✓12502 | ✗ 24] ✓ tests/hermes_cli/test_non_ascii_credential.py (12✓, 1.6s)
|
|
[ 50.9% | 13310/26162 | ✓12510 | ✗ 24] ✓ tests/hermes_cli/test_model_picker_viewport.py (8✓, 2.7s)
|
|
[ 51.0% | 13341/26162 | ✓12541 | ✗ 24] ✓ tests/hermes_cli/test_nous_hermes_non_agentic.py (31✓, 1.5s)
|
|
[ 51.0% | 13345/26162 | ✓12545 | ✗ 24] ✓ tests/hermes_cli/test_nous_auth_status_cache.py (4✓, 1.9s)
|
|
[ 51.0% | 13353/26162 | ✓12553 | ✗ 24] ✓ tests/hermes_cli/test_nous_subscription.py (8✓, 1.5s)
|
|
[ 51.1% | 13371/26162 | ✓12571 | ✗ 24] ✓ tests/hermes_cli/test_nous_inference_url_validation.py (18✓, 1.7s)
|
|
[ 51.4% | 13448/26162 | ✓12648 | ✗ 24] ✓ tests/hermes_cli/test_model_normalize.py (77✓, 3.6s)
|
|
[ 51.4% | 13459/26162 | ✓12659 | ✗ 24] ✓ tests/hermes_cli/test_models_dev_preferred_merge.py (11✓, 2.3s)
|
|
[ 51.7% | 13532/26162 | ✓12732 | ✗ 24] ✓ tests/hermes_cli/test_models.py (73✓, 2.4s)
|
|
[ 51.8% | 13539/26162 | ✓12739 | ✗ 24] ✓ tests/hermes_cli/test_model_switch_variant_tags.py (7✓, 2.8s)
|
|
[ 51.8% | 13542/26162 | ✓12742 | ✗ 24] ✓ tests/hermes_cli/test_model_switch_copilot_api_mode.py (3✓, 3.6s)
|
|
[ 51.8% | 13545/26162 | ✓12745 | ✗ 24] ✓ tests/hermes_cli/test_pin_kanban_board_env.py (3✓, 0.9s)
|
|
[ 51.8% | 13553/26162 | ✓12753 | ✗ 24] ✓ tests/hermes_cli/test_plugin_cli_registration.py (8✓, 0.9s)
|
|
[ 51.9% | 13585/26162 | ✓12785 | ✗ 24] ✓ tests/hermes_cli/test_mcp_config.py (32✓, 5.0s)
|
|
[ 51.9% | 13587/26162 | ✓12787 | ✗ 24] ✓ tests/hermes_cli/test_openai_codex_model_validation_fallback.py (2✓, 2.3s)
|
|
[ 52.2% | 13668/26162 | ✓12868 | ✗ 24] ✓ tests/hermes_cli/test_model_validation.py (81✓, 3.6s)
|
|
[ 52.3% | 13675/26162 | ✓12875 | ✗ 24] ✓ tests/hermes_cli/test_pip_install_detection.py (7✓, 1.3s)
|
|
[ 52.3% | 13679/26162 | ✓12878 | ✗ 25] ✗ tests/hermes_cli/test_gateway_platform_gating.py (3✓ 1✗, 10.1s)
|
|
|
|
╔╍ Failed: tests/hermes_cli/test_gateway_platform_gating.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ INFO gateway.platform_registry:platform_registry.py:180 Platform 'line' re-registered (was plugin, now plugin)
|
|
║ INFO gateway.platform_registry:platform_registry.py:180 Platform 'matrix' re-registered (was plugin, now plugin)
|
|
║ INFO gateway.platform_registry:platform_registry.py:180 Platform 'mattermost' re-registered (was plugin, now plugin)
|
|
║ INFO gateway.platform_registry:platform_registry.py:180 Platform 'ntfy' re-registered (was plugin, now plugin)
|
|
║ INFO gateway.platform_registry:platform_registry.py:180 Platform 'simplex' re-registered (was plugin, now plugin)
|
|
║ INFO gateway.platform_registry:platform_registry.py:180 Platform 'slack' re-registered (was plugin, now plugin)
|
|
║ INFO gateway.platform_registry:platform_registry.py:180 Platform 'teams' re-registered (was plugin, now plugin)
|
|
║ INFO gateway.platform_registry:platform_registry.py:180 Platform 'telegram' re-registered (was plugin, now plugin)
|
|
║ INFO hermes_cli.plugins:plugins.py:1410 Plugin discovery complete: 84 found, 67 enabled
|
|
║ =============================== warnings summary ===============================
|
|
║ tests/hermes_cli/test_gateway_platform_gating.py::TestMatrixHiddenOnWindows::test_matrix_present_on_linux
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
║ import audioop
|
|
║
|
|
║ tests/hermes_cli/test_gateway_platform_gating.py::TestMatrixHiddenOnWindows::test_matrix_present_on_linux
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
║ _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
║
|
|
║ tests/hermes_cli/test_gateway_platform_gating.py::TestMatrixHiddenOnWindows::test_matrix_present_on_linux
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
║ def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
║
|
|
║ tests/hermes_cli/test_gateway_platform_gating.py::TestMatrixHiddenOnWindows::test_matrix_present_on_linux
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
║ warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/hermes_cli/test_gateway_platform_gating.py::TestMatrixHiddenOnWindows::test_matrix_hidden_on_windows
|
|
║ =================== 1 failed, 3 passed, 4 warnings in 7.06s ====================
|
|
║
|
|
║ Repro: python -m pytest tests/hermes_cli/test_gateway_platform_gating.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 52.3% | 13691/26162 | ✓12890 | ✗ 25] ✓ tests/hermes_cli/test_model_provider_persistence.py (12✓, 4.9s)
|
|
[ 52.5% | 13722/26162 | ✓12921 | ✗ 25] ✓ tests/hermes_cli/test_ollama_cloud_auth.py (31✓, 3.1s)
|
|
[ 52.5% | 13734/26162 | ✓12933 | ✗ 25] ✓ tests/hermes_cli/test_opencode_go_flat_namespace.py (12✓, 2.9s)
|
|
[ 52.5% | 13741/26162 | ✓12940 | ✗ 25] ✓ tests/hermes_cli/test_opencode_go_validation_fallback.py (7✓, 2.4s)
|
|
[ 52.5% | 13743/26162 | ✓12942 | ✗ 25] ✓ tests/hermes_cli/test_opencode_go_in_model_list.py (2✓, 2.6s)
|
|
[ 52.7% | 13789/26162 | ✓12988 | ✗ 25] ✓ tests/hermes_cli/test_kanban_cli.py (46✓, 9.4s)
|
|
[ 52.8% | 13804/26162 | ✓13003 | ✗ 25] ✓ tests/hermes_cli/test_plugin_auxiliary_tasks.py (15✓, 2.4s)
|
|
[ 52.8% | 13809/26162 | ✓13008 | ✗ 25] ✓ tests/hermes_cli/test_post_setup_gating.py (5✓, 1.3s)
|
|
[ 52.8% | 13819/26162 | ✓13018 | ✗ 25] ✓ tests/hermes_cli/test_profile_describer.py (10✓, 1.8s)
|
|
[ 52.8% | 13825/26162 | ✓13024 | ✗ 25] ✓ tests/hermes_cli/test_overlay_slug_resolution.py (6✓, 3.3s)
|
|
[ 52.9% | 13828/26162 | ✓13027 | ✗ 25] ✓ tests/hermes_cli/test_profile_export_credentials.py (3✓, 1.6s)
|
|
[ 52.9% | 13845/26162 | ✓13044 | ✗ 25] ✓ tests/hermes_cli/test_provider_config_validation.py (17✓, 1.2s)
|
|
[ 53.0% | 13854/26162 | ✓13053 | ✗ 25] ✓ tests/hermes_cli/test_profiles_s6_hooks.py (9✓, 1.8s)
|
|
[ 53.1% | 13879/26162 | ✓13078 | ✗ 25] ✓ tests/hermes_cli/test_gmi_provider.py (25✓, 11.5s)
|
|
[ 53.1% | 13890/26162 | ✓13089 | ✗ 25] ✓ tests/hermes_cli/test_prompt_api_key.py (11✓, 2.0s)
|
|
[ 53.2% | 13925/26162 | ✓13124 | ✗ 25] ✓ tests/hermes_cli/test_project_plugin_rce_bypass.py (35✓, 2.0s)
|
|
[ 53.2% | 13926/26162 | ✓13125 | ✗ 25] ✓ tests/hermes_cli/test_reasoning_effort_menu.py (1✓, 1.5s)
|
|
[ 53.3% | 13940/26162 | ✓13139 | ✗ 25] ✓ tests/hermes_cli/test_image_gen_picker.py (14✓, 11.7s)
|
|
[ 53.4% | 13966/26162 | ✓13165 | ✗ 25] ✓ tests/hermes_cli/test_relaunch.py (26✓, 1.2s)
|
|
[ 53.6% | 14030/26162 | ✓13229 | ✗ 25] ✓ tests/hermes_cli/test_profile_distribution.py (64✓, 3.4s)
|
|
[ 53.6% | 14034/26162 | ✓13233 | ✗ 25] ✓ tests/hermes_cli/test_secret_prompt.py (4✓, 1.2s)
|
|
[ 53.7% | 14046/26162 | ✓13245 | ✗ 25] ✓ tests/hermes_cli/test_pty_bridge.py (12✓, 2.8s)
|
|
[ 53.8% | 14066/26162 | ✓13265 | ✗ 25] ✓ tests/hermes_cli/test_security_advisories.py (20✓, 1.6s)
|
|
[ 53.8% | 14084/26162 | ✓13283 | ✗ 25] ✓ tests/hermes_cli/test_model_switch_custom_providers.py (18✓, 8.8s)
|
|
[ 53.9% | 14090/26162 | ✓13289 | ✗ 25] ✓ tests/hermes_cli/test_resolve_last_session.py (6✓, 2.6s)
|
|
[ 54.0% | 14126/26162 | ✓13325 | ✗ 25] ✓ tests/hermes_cli/test_proxy.py (36✓, 3.6s)
|
|
[ 54.1% | 14147/26162 | ✓13346 | ✗ 25] ✓ tests/hermes_cli/test_send_cmd.py (21✓, 1.8s)
|
|
[ 54.2% | 14173/26162 | ✓13372 | ✗ 25] ✓ tests/hermes_cli/test_security_audit.py (26✓, 2.1s)
|
|
[ 54.3% | 14206/26162 | ✓13405 | ✗ 25] ✓ tests/hermes_cli/test_session_browse.py (33✓, 1.8s)
|
|
[ 54.3% | 14219/26162 | ✓13418 | ✗ 25] ✓ tests/hermes_cli/test_session_recap.py (13✓, 1.5s)
|
|
[ 54.4% | 14223/26162 | ✓13422 | ✗ 25] ✓ tests/hermes_cli/test_redact_config_bridge.py (4✓, 3.6s)
|
|
[ 54.4% | 14225/26162 | ✓13424 | ✗ 25] ✓ tests/hermes_cli/test_setup_hermes_script.py (2✓, 1.0s)
|
|
[ 54.4% | 14229/26162 | ✓13428 | ✗ 25] ✓ tests/hermes_cli/test_sessions_delete.py (4✓, 1.9s)
|
|
[ 54.4% | 14230/26162 | ✓13429 | ✗ 25] ✓ tests/hermes_cli/test_setup_matrix_e2ee.py (1✓, 1.6s)
|
|
[ 54.6% | 14281/26162 | ✓13480 | ✗ 25] ✓ tests/hermes_cli/test_service_manager.py (51✓, 3.3s)
|
|
[ 54.6% | 14283/26162 | ✓13482 | ✗ 25] ✓ tests/hermes_cli/test_setup_agent_settings.py (2✓, 1.8s)
|
|
[ 54.8% | 14329/26162 | ✓13528 | ✗ 25] ✓ tests/hermes_cli/test_gemini_provider.py (46✓, 15.5s)
|
|
[ 55.2% | 14436/26162 | ✓13635 | ✗ 25] ✓ tests/hermes_cli/test_profiles.py (107✓, 6.4s)
|
|
[ 55.2% | 14437/26162 | ✓13636 | ✗ 25] ✓ tests/hermes_cli/test_setup_ollama_cloud_force_refresh.py (1✓, 1.5s)
|
|
[ 55.4% | 14493/26162 | ✓13692 | ✗ 25] ✓ tests/hermes_cli/test_kanban_boards.py (56✓, 15.3s)
|
|
[ 55.9% | 14637/26162 | ✓13836 | ✗ 25] ✓ tests/hermes_cli/test_commands.py (144✓, 20.9s)
|
|
[ 56.1% | 14670/26162 | ✓13869 | ✗ 25] ✓ tests/hermes_cli/test_set_config_value.py (33✓, 2.8s)
|
|
[ 56.1% | 14675/26162 | ✓13874 | ✗ 25] ✓ tests/hermes_cli/test_setup_prompt_menus.py (5✓, 1.4s)
|
|
[ 56.1% | 14676/26162 | ✓13875 | ✗ 25] ✓ tests/hermes_cli/test_skills_subparser.py (1✓, 0.9s)
|
|
[ 56.1% | 14683/26162 | ✓13882 | ✗ 25] ✓ tests/hermes_cli/test_setup_noninteractive.py (7✓, 2.4s)
|
|
[ 56.2% | 14692/26162 | ✓13891 | ✗ 25] ✓ tests/hermes_cli/test_setup_reconfigure.py (9✓, 1.6s)
|
|
[ 56.2% | 14702/26162 | ✓13901 | ✗ 25] ✓ tests/hermes_cli/test_cmd_update.py (10✓, 22.5s)
|
|
[ 56.3% | 14730/26162 | ✓13929 | ✗ 25] ✓ tests/hermes_cli/test_skills_config.py (28✓, 1.7s)
|
|
[ 56.3% | 14735/26162 | ✓13934 | ✗ 25] ✓ tests/hermes_cli/test_skills_install_flags.py (5✓, 1.6s)
|
|
[ 56.6% | 14796/26162 | ✓13995 | ✗ 25] ✓ tests/hermes_cli/test_doctor.py (61✓, 18.4s)
|
|
[ 56.6% | 14800/26162 | ✓13999 | ✗ 25] ✓ tests/hermes_cli/test_placeholder_usage.py (4✓, 9.3s)
|
|
[ 56.6% | 14800/26162 | ✓13999 | ✗ 25] ✓ tests/hermes_cli/test_subparser_routing_fallback.py (0.5s)
|
|
[ 56.6% | 14815/26162 | ✓14014 | ✗ 25] ✓ tests/hermes_cli/test_skills_skip_confirm.py (15✓, 1.7s)
|
|
[ 56.7% | 14821/26162 | ✓14020 | ✗ 25] ✓ tests/hermes_cli/test_spotify_auth.py (6✓, 1.5s)
|
|
[ 56.8% | 14847/26162 | ✓14046 | ✗ 25] ✓ tests/hermes_cli/test_path_completion.py (26✓, 10.4s)
|
|
[ 56.8% | 14851/26162 | ✓14050 | ✗ 25] ✓ tests/hermes_cli/test_subprocess_timeouts.py (4✓, 1.2s)
|
|
[ 56.8% | 14866/26162 | ✓14065 | ✗ 25] ✓ tests/hermes_cli/test_suppress_eio_on_interrupt.py (15✓, 1.4s)
|
|
[ 56.9% | 14879/26162 | ✓14078 | ✗ 25] ✓ tests/hermes_cli/test_session_handoff.py (13✓, 5.9s)
|
|
[ 57.0% | 14912/26162 | ✓14111 | ✗ 25] ✓ tests/hermes_cli/test_skin_engine.py (33✓, 2.6s)
|
|
[ 57.1% | 14936/26162 | ✓14135 | ✗ 25] ✓ tests/hermes_cli/test_skills_hub.py (24✓, 3.2s)
|
|
[ 57.6% | 15064/26162 | ✓14263 | ✗ 25] ✓ tests/hermes_cli/test_runtime_provider_resolution.py (128✓, 7.3s)
|
|
[ 57.6% | 15076/26162 | ✓14275 | ✗ 25] ✓ tests/hermes_cli/test_model_switch_opencode_anthropic.py (12✓, 13.7s)
|
|
[ 57.7% | 15087/26162 | ✓14286 | ✗ 25] ✓ tests/hermes_cli/test_tips.py (11✓, 1.3s)
|
|
[ 57.7% | 15095/26162 | ✓14294 | ✗ 25] ✓ tests/hermes_cli/test_teams_pipeline_plugin_cli.py (8✓, 1.8s)
|
|
[ 57.8% | 15132/26162 | ✓14331 | ✗ 25] ✓ tests/hermes_cli/test_startup_plugin_gating.py (37✓, 2.6s)
|
|
[ 57.9% | 15137/26162 | ✓14336 | ✗ 25] ✓ tests/hermes_cli/test_status_model_provider.py (5✓, 2.2s)
|
|
[ 57.9% | 15140/26162 | ✓14339 | ✗ 25] ✓ tests/hermes_cli/test_plugins_transcription_registration.py (3✓, 10.2s)
|
|
[ 57.9% | 15157/26162 | ✓14356 | ✗ 25] ✓ tests/hermes_cli/test_status.py (17✓, 2.6s)
|
|
[ 58.0% | 15161/26162 | ✓14360 | ✗ 25] ✓ tests/hermes_cli/test_terminal_menu_fallbacks.py (4✓, 2.1s)
|
|
[ 58.0% | 15164/26162 | ✓14363 | ✗ 25] ✓ tests/hermes_cli/test_plugins_tts_registration.py (3✓, 10.5s)
|
|
[ 58.0% | 15167/26162 | ✓14366 | ✗ 25] ✓ tests/hermes_cli/test_update_config_clears_custom_fields.py (3✓, 1.3s)
|
|
[ 58.0% | 15169/26162 | ✓14368 | ✗ 25] ✓ tests/hermes_cli/test_tui_bundled.py (2✓, 1.9s)
|
|
[ 58.0% | 15184/26162 | ✓14383 | ✗ 25] ✓ tests/hermes_cli/test_plugin_scanner_recursion.py (15✓, 12.9s)
|
|
[ 58.1% | 15202/26162 | ✓14401 | ✗ 25] ✓ tests/hermes_cli/test_update_concurrent_quarantine.py (18✓, 2.1s)
|
|
[ 58.1% | 15210/26162 | ✓14409 | ✗ 25] ✓ tests/hermes_cli/test_update_check.py (8✓, 2.2s)
|
|
[ 58.2% | 15226/26162 | ✓14425 | ✗ 25] ✓ tests/hermes_cli/test_update_hangup_protection.py (16✓, 2.0s)
|
|
[ 58.3% | 15241/26162 | ✓14440 | ✗ 25] ✓ tests/hermes_cli/test_tui_npm_install.py (15✓, 2.5s)
|
|
[ 58.3% | 15249/26162 | ✓14448 | ✗ 25] ✓ tests/hermes_cli/test_update_post_pull_syntax_guard.py (8✓, 2.2s)
|
|
[ 58.4% | 15268/26162 | ✓14467 | ✗ 25] ✓ tests/hermes_cli/test_update_stale_dashboard.py (19✓, 2.2s)
|
|
[ 58.4% | 15270/26162 | ✓14469 | ✗ 25] ✓ tests/hermes_cli/test_update_zip_symlink_reject.py (2✓, 2.3s)
|
|
[ 58.5% | 15315/26162 | ✓14514 | ✗ 25] ✓ tests/hermes_cli/test_ollama_cloud_provider.py (45✓, 15.6s)
|
|
[ 58.5% | 15317/26162 | ✓14516 | ✗ 25] ✓ tests/hermes_cli/test_whatsapp_setup_ordering.py (2✓, 1.1s)
|
|
[ 58.6% | 15333/26162 | ✓14532 | ✗ 25] ✓ tests/hermes_cli/test_web_ui_build.py (16✓, 1.8s)
|
|
[ 58.6% | 15335/26162 | ✓14534 | ✗ 25] ✓ tests/hermes_cli/test_web_server_oauth_write.py (2✓, 2.0s)
|
|
[ 58.8% | 15379/26162 | ✓14578 | ✗ 25] ✓ tests/hermes_cli/test_voice_wrapper.py (44✓, 3.0s)
|
|
[ 58.9% | 15399/26162 | ✓14598 | ✗ 25] ✓ tests/hermes_cli/test_webhook_cli.py (20✓, 2.2s)
|
|
[ 58.9% | 15413/26162 | ✓14612 | ✗ 25] ✓ tests/hermes_cli/test_xai_oauth_pkce_token_exchange.py (14✓, 1.5s)
|
|
[ 58.9% | 15420/26162 | ✓14619 | ✗ 25] ✓ tests/hermes_cli/test_web_oauth_dispatch.py (7✓, 2.6s)
|
|
[ 59.0% | 15423/26162 | ✓14622 | ✗ 25] ✓ tests/hermes_cli/test_regression_16767.py (3✓, 12.8s)
|
|
[ 59.0% | 15430/26162 | ✓14629 | ✗ 25] ✓ tests/hermes_cli/test_web_server_cron_profiles.py (7✓, 2.8s)
|
|
[ 59.0% | 15438/26162 | ✓14637 | ✗ 25] ✓ tests/hermes_cli/test_setup_irc.py (8✓, 10.3s)
|
|
[ 59.4% | 15537/26162 | ✓14736 | ✗ 25] ✓ tests/hermes_cli/test_backup.py (99✓, 30.7s)
|
|
[ 59.7% | 15608/26162 | ✓14807 | ✗ 25] ✓ tests/hermes_cli/test_plugins_cmd.py (71✓, 15.9s)
|
|
[ 59.7% | 15610/26162 | ✓14809 | ✗ 25] ✓ tests/hermes_cli/test_xai_provider_labels.py (2✓, 1.9s)
|
|
[ 59.8% | 15651/26162 | ✓14850 | ✗ 25] ✓ tests/hermes_cli/test_tui_resume_flow.py (41✓, 6.1s)
|
|
[ 59.9% | 15661/26162 | ✓14860 | ✗ 25] ✓ tests/honcho_plugin/test_cli.py (10✓, 1.2s)
|
|
[ 60.0% | 15694/26162 | ✓14893 | ✗ 25] ✓ tests/hermes_cli/test_xai_retirement.py (33✓, 2.1s)
|
|
[ 60.0% | 15701/26162 | ✓14900 | ✗ 25] ✓ tests/honcho_plugin/test_empty_profile_hint.py (7✓, 1.3s)
|
|
[ 60.0% | 15710/26162 | ✓14909 | ✗ 25] ✓ tests/openviking_plugin/test_openviking.py (9✓, 0.8s)
|
|
[ 60.2% | 15750/26162 | ✓14949 | ✗ 25] ✓ tests/honcho_plugin/test_async_memory.py (40✓, 2.0s)
|
|
[ 60.3% | 15779/26162 | ✓14978 | ✗ 25] ✓ tests/hermes_cli/test_user_providers_model_switch.py (29✓, 6.3s)
|
|
[ 60.4% | 15792/26162 | ✓14991 | ✗ 25] ✓ tests/honcho_plugin/test_pin_peer_name.py (13✓, 1.6s)
|
|
[ 60.4% | 15795/26162 | ✓14994 | ✗ 25] ✓ tests/hermes_cli/test_slack_cli.py (3✓, 9.9s)
|
|
[ 60.4% | 15809/26162 | ✓15008 | ✗ 25] ✓ tests/plugins/image_gen/test_fal_provider.py (14✓, 1.5s)
|
|
[ 60.7% | 15891/26162 | ✓15090 | ✗ 25] ✓ tests/honcho_plugin/test_client.py (82✓, 2.8s)
|
|
[ 61.4% | 16063/26162 | ✓15262 | ✗ 25] ✓ tests/hermes_cli/test_kanban_db.py (172✓, 25.9s)
|
|
[ 61.5% | 16078/26162 | ✓15277 | ✗ 25] ✓ tests/plugins/memory/test_mem0_v2.py (15✓, 1.6s)
|
|
[ 61.6% | 16107/26162 | ✓15306 | ✗ 25] ✓ tests/plugins/memory/test_supermemory_provider.py (29✓, 1.5s)
|
|
[ 61.6% | 16128/26162 | ✓15327 | ✗ 25] ✓ tests/plugins/memory/test_openviking_provider.py (21✓, 1.8s)
|
|
[ 61.7% | 16136/26162 | ✓15335 | ✗ 25] ✓ tests/hermes_state/test_resolve_resume_session_id.py (8✓, 4.3s)
|
|
[ 61.8% | 16157/26162 | ✓15356 | ✗ 25] ✓ tests/plugins/image_gen/test_xai_provider.py (21✓, 2.5s)
|
|
[ 61.8% | 16175/26162 | ✓15374 | ✗ 25] ✓ tests/plugins/image_gen/test_openai_codex_provider.py (18✓, 3.1s)
|
|
[ 61.9% | 16200/26162 | ✓15399 | ✗ 25] ✓ tests/plugins/image_gen/test_openai_provider.py (25✓, 3.0s)
|
|
[ 62.0% | 16233/26162 | ✓15432 | ✗ 25] ✓ tests/hermes_cli/test_setup_openclaw_migration.py (33✓, 14.1s)
|
|
[ 62.5% | 16348/26162 | ✓15547 | ✗ 25] ✓ tests/honcho_plugin/test_session.py (115✓, 4.3s)
|
|
[ 62.5% | 16360/26162 | ✓15553 | ✗ 25] ✓ tests/hermes_cli/test_tool_token_estimation.py (6✓ 6s, 11.3s)
|
|
[ 62.8% | 16432/26162 | ✓15625 | ✗ 25] ✓ tests/hermes_cli/test_plugins.py (72✓, 20.7s)
|
|
[ 63.0% | 16474/26162 | ✓15667 | ✗ 25] ✓ tests/plugins/test_google_meet_node.py (42✓, 1.6s)
|
|
[ 63.0% | 16485/26162 | ✓15678 | ✗ 25] ✓ tests/plugins/test_google_meet_audio.py (11✓, 2.0s)
|
|
[ 63.0% | 16494/26162 | ✓15687 | ✗ 25] ✓ tests/plugins/test_google_meet_realtime.py (9✓, 1.5s)
|
|
[ 63.1% | 16504/26162 | ✓15697 | ✗ 25] ✓ tests/hermes_cli/test_tts_picker.py (10✓, 11.0s)
|
|
[ 63.5% | 16600/26162 | ✓15793 | ✗ 25] ✓ tests/plugins/memory/test_hindsight_provider.py (96✓, 3.9s)
|
|
[ 63.5% | 16608/26162 | ✓15801 | ✗ 25] ✓ tests/hermes_cli/test_video_gen_picker.py (8✓, 9.6s)
|
|
[ 63.5% | 16620/26162 | ✓15813 | ✗ 25] ✓ tests/hermes_state/test_get_messages_around.py (12✓, 6.5s)
|
|
[ 63.5% | 16622/26162 | ✓15815 | ✗ 25] ✓ tests/hermes_cli/test_update_yes_flag.py (2✓, 10.8s)
|
|
[ 63.7% | 16673/26162 | ✓15866 | ✗ 25] ✓ tests/plugins/test_google_meet_plugin.py (51✓, 2.3s)
|
|
[ 63.8% | 16691/26162 | ✓15884 | ✗ 25] ✓ tests/plugins/video_gen/test_fal_plugin.py (18✓, 1.5s)
|
|
[ 63.8% | 16697/26162 | ✓15890 | ✗ 25] ✓ tests/providers/test_e2e_wiring.py (6✓, 1.0s)
|
|
[ 63.9% | 16708/26162 | ✓15901 | ✗ 25] ✓ tests/hermes_state/test_get_anchored_view.py (11✓, 7.2s)
|
|
[ 63.9% | 16715/26162 | ✓15908 | ✗ 25] ✓ tests/plugins/video_gen/test_xai_plugin.py (7✓, 1.5s)
|
|
[ 63.9% | 16726/26162 | ✓15919 | ✗ 25] ✓ tests/plugins/video_gen/test_xai_plugin_integration.py (11✓, 1.2s)
|
|
[ 64.0% | 16737/26162 | ✓15930 | ✗ 25] ✓ tests/plugins/test_teams_pipeline_plugin.py (11✓, 2.0s)
|
|
[ 64.1% | 16759/26162 | ✓15952 | ✗ 25] ✓ tests/providers/test_profile_wiring.py (22✓, 1.2s)
|
|
[ 64.1% | 16775/26162 | ✓15968 | ✗ 25] ✓ tests/run_agent/test_1630_context_overflow_loop.py (16✓, 1.2s)
|
|
[ 64.2% | 16794/26162 | ✓15987 | ✗ 25] ✓ tests/providers/test_transport_parity.py (19✓, 1.3s)
|
|
[ 64.4% | 16836/26162 | ✓16029 | ✗ 25] ✓ tests/providers/test_provider_profiles.py (42✓, 1.7s)
|
|
[ 64.4% | 16841/26162 | ✓16034 | ✗ 25] ✓ tests/run_agent/test_31273_402_not_retried.py (5✓, 1.5s)
|
|
[ 64.4% | 16848/26162 | ✓16041 | ✗ 25] ✓ tests/run_agent/test_anthropic_truncation_continuation.py (7✓, 1.1s)
|
|
[ 64.5% | 16865/26162 | ✓16058 | ✗ 25] ✓ tests/hermes_cli/test_tools_disable_enable.py (17✓, 13.9s)
|
|
[ 64.5% | 16880/26162 | ✓16073 | ✗ 25] ✓ tests/hermes_cli/test_setup_model_provider.py (15✓, 18.6s)
|
|
[ 64.6% | 16891/26162 | ✓16084 | ✗ 25] ✓ tests/plugins/test_kanban_worker_runs.py (11✓, 4.6s)
|
|
[ 64.8% | 16952/26162 | ✓16145 | ✗ 25] ✓ tests/hermes_cli/test_tencent_tokenhub_provider.py (61✓, 15.7s)
|
|
[ 64.8% | 16961/26162 | ✓16154 | ✗ 25] ✓ tests/plugins/test_achievements_plugin.py (9✓, 5.9s)
|
|
[ 65.5% | 17126/26162 | ✓16319 | ✗ 25] ✓ tests/hermes_cli/test_kanban_core_functionality.py (165✓, 32.5s)
|
|
[ 65.5% | 17145/26162 | ✓16338 | ✗ 25] ✓ tests/hermes_cli/test_setup.py (19✓, 19.8s)
|
|
[ 65.6% | 17156/26162 | ✓16349 | ✗ 25] ✓ tests/hermes_cli/test_web_server_host_header.py (11✓, 12.5s)
|
|
[ 65.6% | 17163/26162 | ✓16356 | ✗ 25] ✓ tests/run_agent/test_codex_multimodal_tool_result.py (7✓, 1.2s)
|
|
[ 65.6% | 17174/26162 | ✓16367 | ✗ 25] ✓ tests/hermes_cli/test_timeouts.py (11✓, 17.0s)
|
|
[ 65.7% | 17180/26162 | ✓16373 | ✗ 25] ✓ tests/run_agent/test_compression_boundary.py (6✓, 1.6s)
|
|
[ 65.9% | 17232/26162 | ✓16425 | ✗ 25] ✓ tests/hermes_cli/test_xiaomi_provider.py (52✓, 12.1s)
|
|
[ 66.1% | 17299/26162 | ✓16492 | ✗ 25] ✓ tests/plugins/test_retaindb_plugin.py (67✓, 6.5s)
|
|
[ 66.2% | 17308/26162 | ✓16501 | ✗ 25] ✓ tests/run_agent/test_async_httpx_del_neuter.py (9✓, 4.2s)
|
|
[ 66.2% | 17311/26162 | ✓16504 | ✗ 25] ✓ tests/run_agent/test_compression_trigger_excludes_reasoning.py (3✓, 1.2s)
|
|
[ 66.3% | 17349/26162 | ✓16542 | ✗ 25] ✓ tests/plugins/test_disk_cleanup_plugin.py (38✓, 11.1s)
|
|
[ 66.5% | 17386/26162 | ✓16579 | ✗ 25] ✓ tests/plugins/test_langfuse_plugin.py (37✓, 10.4s)
|
|
[ 66.5% | 17407/26162 | ✓16600 | ✗ 25] ✓ tests/plugins/model_providers/test_opencode_go_profile.py (21✓, 13.5s)
|
|
[ 66.8% | 17485/26162 | ✓16678 | ✗ 25] ✓ tests/hermes_cli/test_tools_config.py (78✓, 23.7s)
|
|
[ 66.9% | 17509/26162 | ✓16702 | ✗ 25] ✓ tests/run_agent/test_anthropic_prompt_cache_policy.py (24✓, 11.2s)
|
|
[ 67.1% | 17544/26162 | ✓16737 | ✗ 25] ✓ tests/run_agent/test_agent_guardrails.py (35✓, 11.4s)
|
|
[ 67.1% | 17548/26162 | ✓16741 | ✗ 25] ✓ tests/providers/test_plugin_discovery.py (4✓, 12.5s)
|
|
[ 67.1% | 17551/26162 | ✓16744 | ✗ 25] ✓ tests/run_agent/test_background_review_toolset_restriction.py (3✓, 10.5s)
|
|
[ 67.2% | 17582/26162 | ✓16775 | ✗ 25] ✓ tests/plugins/browser/test_browser_provider_plugins.py (31✓, 17.8s)
|
|
[ 67.2% | 17584/26162 | ✓16775 | ✗ 25] ✓ tests/run_agent/test_deepseek_v4_thinking_live.py (2s, 0.7s)
|
|
[ 67.2% | 17585/26162 | ✓16776 | ✗ 25] ✓ tests/run_agent/test_compress_focus_plugin_fallback.py (1✓, 9.6s)
|
|
[ 67.3% | 17614/26162 | ✓16805 | ✗ 25] ✓ tests/plugins/model_providers/test_deepseek_profile.py (29✓, 16.9s)
|
|
[ 67.4% | 17630/26162 | ✓16821 | ✗ 25] ✓ tests/run_agent/test_callable_api_key.py (16✓, 11.5s)
|
|
[ 67.4% | 17638/26162 | ✓16829 | ✗ 25] ✓ tests/run_agent/test_background_review_summary.py (8✓, 12.0s)
|
|
[ 67.4% | 17644/26162 | ✓16835 | ✗ 25] ✓ tests/run_agent/test_commit_memory_session_context_engine.py (6✓, 10.6s)
|
|
[ 67.5% | 17648/26162 | ✓16839 | ✗ 25] ✓ tests/run_agent/test_background_review.py (4✓, 12.8s)
|
|
[ 67.5% | 17651/26162 | ✓16842 | ✗ 25] ✓ tests/run_agent/test_background_review_cache_parity.py (3✓, 13.4s)
|
|
[ 67.5% | 17666/26162 | ✓16857 | ✗ 25] ✓ tests/run_agent/test_codex_app_server_integration.py (15✓, 13.8s)
|
|
[ 67.6% | 17691/26162 | ✓16882 | ✗ 25] ✓ tests/hermes_cli/test_update_autostash.py (25✓, 28.4s)
|
|
[ 67.6% | 17693/26162 | ✓16884 | ✗ 25] ✓ tests/run_agent/test_concurrent_interrupt.py (2✓, 12.4s)
|
|
[ 68.2% | 17838/26162 | ✓17028 | ✗ 26] ✗ tests/hermes_cli/test_web_server.py (144✓ 1✗, 27.4s)
|
|
|
|
╔╍ Failed: tests/hermes_cli/test_web_server.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ .venv/lib/python3.12/site-packages/starlette/testclient.py:187: KeyError
|
|
║ =============================== warnings summary ===============================
|
|
║ tests/hermes_cli/test_web_server.py::TestWebServerEndpoints::test_get_status
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
║ import audioop
|
|
║
|
|
║ tests/hermes_cli/test_web_server.py::TestWebServerEndpoints::test_get_status
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
║ _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
║
|
|
║ tests/hermes_cli/test_web_server.py::TestWebServerEndpoints::test_get_status
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
║ def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
║
|
|
║ tests/hermes_cli/test_web_server.py::TestWebServerEndpoints::test_get_status
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
║ warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
║
|
|
║ tests/hermes_cli/test_web_server.py::TestPtyWebSocket::test_streams_child_stdout_to_client
|
|
║ tests/hermes_cli/test_web_server.py::TestPtyWebSocket::test_resize_escape_is_forwarded
|
|
║ tests/hermes_cli/test_web_server.py::TestPtyWebSocket::test_resume_parameter_is_forwarded_to_argv
|
|
║ tests/hermes_cli/test_web_server.py::TestPtyWebSocket::test_channel_param_propagates_sidecar_url
|
|
║ /nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/pty.py:95: DeprecationWarning: This process (pid=1896384) is multi-threaded, use of forkpty() may lead to deadlocks in the child.
|
|
║ pid, fd = os.forkpty()
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/hermes_cli/test_web_server.py::TestPtyWebSocket::test_client_input_reaches_child_stdin
|
|
║ ================== 1 failed, 144 passed, 8 warnings in 22.66s ==================
|
|
║
|
|
║ Repro: python -m pytest tests/hermes_cli/test_web_server.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 68.2% | 17843/26162 | ✓17033 | ✗ 26] ✓ tests/run_agent/test_jsondecodeerror_retryable.py (5✓, 1.6s)
|
|
[ 68.2% | 17848/26162 | ✓17038 | ✗ 26] ✓ tests/run_agent/test_context_token_tracking.py (5✓, 12.6s)
|
|
[ 68.3% | 17856/26162 | ✓17046 | ✗ 26] ✓ tests/run_agent/test_860_dedup.py (8✓, 18.4s)
|
|
[ 68.3% | 17858/26162 | ✓17048 | ✗ 26] ✓ tests/run_agent/test_compressor_fallback_update.py (2✓, 13.6s)
|
|
[ 68.3% | 17874/26162 | ✓17064 | ✗ 26] ✓ tests/run_agent/test_compression_feasibility.py (16✓, 14.5s)
|
|
[ 68.4% | 17890/26162 | ✓17080 | ✗ 26] ✓ tests/run_agent/test_413_compression.py (16✓, 19.1s)
|
|
[ 68.4% | 17896/26162 | ✓17086 | ✗ 26] ✓ tests/run_agent/test_last_reasoning_per_turn.py (6✓, 1.9s)
|
|
[ 68.5% | 17911/26162 | ✓17101 | ✗ 26] ✓ tests/run_agent/test_long_context_tier_429.py (15✓, 2.0s)
|
|
[ 68.5% | 17918/26162 | ✓17108 | ✗ 26] ✓ tests/run_agent/test_memory_nudge_counter_hydration.py (7✓, 1.8s)
|
|
[ 68.5% | 17922/26162 | ✓17112 | ✗ 26] ✓ tests/run_agent/test_api_max_retries_config.py (4✓, 19.8s)
|
|
[ 68.5% | 17928/26162 | ✓17118 | ✗ 26] ✓ tests/run_agent/test_compression_persistence.py (6✓, 15.8s)
|
|
[ 68.5% | 17931/26162 | ✓17121 | ✗ 26] ✓ tests/run_agent/test_credential_pool_interrupt.py (3✓, 9.7s)
|
|
[ 68.6% | 17941/26162 | ✓17131 | ✗ 26] ✓ tests/run_agent/test_codex_silent_hang_hint.py (10✓, 18.7s)
|
|
[ 68.7% | 17978/26162 | ✓17168 | ✗ 26] ✓ tests/run_agent/test_codex_xai_oauth_recovery.py (37✓, 19.2s)
|
|
[ 68.7% | 17981/26162 | ✓17171 | ✗ 26] ✓ tests/run_agent/test_compression_boundary_hook.py (3✓, 18.2s)
|
|
[ 68.7% | 17984/26162 | ✓17174 | ✗ 26] ✓ tests/run_agent/test_empty_response_recovery_persistence.py (3✓, 10.5s)
|
|
[ 68.8% | 17995/26162 | ✓17185 | ✗ 26] ✓ tests/run_agent/test_percentage_clamp.py (11✓, 2.6s)
|
|
[ 69.0% | 18045/26162 | ✓17235 | ✗ 26] ✓ tests/plugins/web/test_web_search_provider_plugins.py (50✓, 24.3s)
|
|
[ 69.0% | 18060/26162 | ✓17250 | ✗ 26] ✓ tests/run_agent/test_image_rejection_fallback.py (15✓, 11.0s)
|
|
[ 69.0% | 18061/26162 | ✓17251 | ✗ 26] ✓ tests/run_agent/test_dict_tool_call_args.py (1✓, 12.5s)
|
|
[ 69.0% | 18062/26162 | ✓17252 | ✗ 26] ✓ tests/run_agent/test_redirect_stdout_issue.py (1✓, 2.1s)
|
|
[ 69.0% | 18063/26162 | ✓17253 | ✗ 26] ✓ tests/run_agent/test_create_openai_client_kwargs_isolation.py (1✓, 16.7s)
|
|
[ 69.2% | 18096/26162 | ✓17286 | ✗ 26] ✓ tests/run_agent/test_file_mutation_verifier.py (33✓, 13.4s)
|
|
[ 69.2% | 18098/26162 | ✓17288 | ✗ 26] ✓ tests/run_agent/test_exit_cleanup_interrupt.py (2✓, 13.7s)
|
|
[ 69.2% | 18101/26162 | ✓17291 | ✗ 26] ✓ tests/run_agent/test_create_openai_client_reuse.py (3✓, 15.0s)
|
|
[ 69.2% | 18114/26162 | ✓17304 | ✗ 26] ✓ tests/run_agent/test_image_shrink_recovery.py (13✓, 13.3s)
|
|
[ 69.2% | 18115/26162 | ✓17304 | ✗ 26] ✓ tests/run_agent/test_sequential_chats_live.py (1s, 0.7s)
|
|
[ 69.2% | 18115/26162 | ✓17304 | ✗ 26] ✓ tests/run_agent/test_interactive_interrupt.py (13.5s)
|
|
[ 69.3% | 18118/26162 | ✓17307 | ✗ 26] ✓ tests/run_agent/test_copilot_native_vision_headers.py (3✓, 19.3s)
|
|
[ 69.3% | 18123/26162 | ✓17312 | ✗ 26] ✓ tests/run_agent/test_iteration_budget_race.py (5✓, 11.5s)
|
|
[ 69.3% | 18128/26162 | ✓17317 | ✗ 26] ✓ tests/run_agent/test_invalid_context_length_warning.py (5✓, 13.5s)
|
|
[ 69.4% | 18164/26162 | ✓17353 | ✗ 26] ✓ tests/run_agent/test_deepseek_reasoning_content_echo.py (36✓, 16.8s)
|
|
[ 69.5% | 18173/26162 | ✓17362 | ✗ 26] ✓ tests/run_agent/test_create_openai_client_proxy_env.py (9✓, 19.1s)
|
|
[ 69.5% | 18175/26162 | ✓17364 | ✗ 26] ✓ tests/run_agent/test_init_fallback_on_exhausted_pool.py (2✓, 15.8s)
|
|
[ 69.5% | 18186/26162 | ✓17375 | ✗ 26] ✓ tests/run_agent/test_message_sequence_repair.py (11✓, 10.8s)
|
|
[ 69.5% | 18195/26162 | ✓17384 | ✗ 26] ✓ tests/run_agent/test_strip_reasoning_tags_cli.py (9✓, 1.8s)
|
|
[ 69.6% | 18197/26162 | ✓17386 | ✗ 26] ✓ tests/run_agent/test_materialize_data_url_cleanup.py (2✓, 12.6s)
|
|
[ 69.6% | 18204/26162 | ✓17393 | ✗ 26] ✓ tests/run_agent/test_interrupt_propagation.py (7✓, 17.2s)
|
|
[ 69.6% | 18205/26162 | ✓17394 | ✗ 26] ✓ tests/run_agent/test_memory_provider_init.py (1✓, 12.6s)
|
|
[ 69.6% | 18207/26162 | ✓17396 | ✗ 26] ✓ tests/run_agent/test_plugin_context_engine_init.py (2✓, 11.8s)
|
|
[ 69.7% | 18223/26162 | ✓17412 | ✗ 26] ✓ tests/run_agent/test_memory_sync_interrupted.py (16✓, 13.7s)
|
|
[ 69.7% | 18238/26162 | ✓17427 | ✗ 26] ✓ tests/run_agent/test_multimodal_tool_content_recovery.py (15✓, 13.2s)
|
|
[ 69.7% | 18243/26162 | ✓17432 | ✗ 26] ✓ tests/run_agent/test_openai_client_lifecycle.py (5✓, 14.8s)
|
|
[ 69.7% | 18244/26162 | ✓17433 | ✗ 26] ✓ tests/run_agent/test_real_interrupt_subagent.py (1✓, 12.9s)
|
|
[ 69.8% | 18263/26162 | ✓17452 | ✗ 26] ✓ tests/run_agent/test_review_prompt_class_first.py (19✓, 11.7s)
|
|
[ 69.8% | 18270/26162 | ✓17459 | ✗ 26] ✓ tests/run_agent/test_partial_stream_finish_reason.py (7✓, 15.8s)
|
|
[ 69.8% | 18273/26162 | ✓17462 | ✗ 26] ✓ tests/scripts/test_release_acp_registry.py (3✓, 1.0s)
|
|
[ 69.9% | 18294/26162 | ✓17483 | ✗ 26] ✓ tests/run_agent/test_repair_tool_call_arguments.py (21✓, 13.8s)
|
|
[ 70.0% | 18309/26162 | ✓17498 | ✗ 26] ✓ tests/run_agent/test_run_agent_multimodal_prologue.py (15✓, 11.8s)
|
|
[ 70.1% | 18327/26162 | ✓17516 | ✗ 26] ✓ tests/run_agent/test_repair_tool_call_name.py (18✓, 14.3s)
|
|
[ 70.1% | 18340/26162 | ✓17529 | ✗ 26] ✓ tests/skills/test_fetch_transcript.py (13✓, 1.3s)
|
|
[ 70.2% | 18354/26162 | ✓17543 | ✗ 26] ✓ tests/skills/test_darwinian_evolver_skill.py (14✓, 1.5s)
|
|
[ 70.3% | 18386/26162 | ✓17575 | ✗ 26] ✓ tests/run_agent/test_primary_runtime_restore.py (32✓, 18.2s)
|
|
[ 70.3% | 18398/26162 | ✓17587 | ✗ 26] ✓ tests/run_agent/test_streaming_tool_call_repair.py (12✓, 10.7s)
|
|
[ 70.3% | 18402/26162 | ✓17591 | ✗ 26] ✓ tests/run_agent/test_session_reset_fix.py (4✓, 12.3s)
|
|
[ 70.4% | 18417/26162 | ✓17606 | ✗ 26] ✓ tests/skills/test_google_oauth_setup.py (15✓, 1.8s)
|
|
[ 70.4% | 18422/26162 | ✓17611 | ✗ 26] ✓ tests/run_agent/test_session_meta_filtering.py (5✓, 12.8s)
|
|
[ 70.5% | 18435/26162 | ✓17624 | ✗ 26] ✓ tests/skills/test_hyperliquid_skill.py (13✓, 1.3s)
|
|
[ 70.5% | 18438/26162 | ✓17627 | ✗ 26] ✓ tests/skills/test_google_workspace_credential_files.py (3✓, 1.5s)
|
|
[ 70.5% | 18447/26162 | ✓17636 | ✗ 26] ✓ tests/skills/test_google_workspace_api.py (9✓, 2.0s)
|
|
[ 70.5% | 18457/26162 | ✓17646 | ✗ 26] ✓ tests/run_agent/test_provider_attribution_headers.py (10✓, 18.6s)
|
|
[ 70.6% | 18466/26162 | ✓17655 | ✗ 26] ✓ tests/skills/test_youtube_quiz.py (9✓, 1.0s)
|
|
[ 70.6% | 18466/26162 | ✓17655 | ✗ 26] ✓ tests/stress/test_concurrency.py (0.6s)
|
|
[ 70.6% | 18466/26162 | ✓17655 | ✗ 26] ✓ tests/stress/test_benchmarks.py (0.7s)
|
|
[ 70.7% | 18504/26162 | ✓17693 | ✗ 26] ✓ tests/skills/test_memento_cards.py (38✓, 1.7s)
|
|
[ 70.8% | 18526/26162 | ✓17715 | ✗ 26] ✓ tests/run_agent/test_provider_fallback.py (22✓, 19.2s)
|
|
[ 70.9% | 18552/26162 | ✓17741 | ✗ 26] ✓ tests/skills/test_openclaw_migration_hardening.py (26✓, 1.6s)
|
|
[ 70.9% | 18552/26162 | ✓17741 | ✗ 26] ✓ tests/stress/test_atypical_scenarios.py (1.0s)
|
|
[ 70.9% | 18559/26162 | ✓17748 | ✗ 26] ✓ tests/skills/test_telephony_skill.py (7✓, 1.5s)
|
|
[ 70.9% | 18559/26162 | ✓17748 | ✗ 26] ✓ tests/stress/test_concurrency_parent_gate.py (0.6s)
|
|
[ 71.3% | 18653/26162 | ✓17842 | ✗ 26] ✓ tests/plugins/test_kanban_dashboard_plugin.py (94✓, 43.0s)
|
|
[ 71.3% | 18653/26162 | ✓17842 | ✗ 26] ✓ tests/stress/test_concurrency_mixed.py (1.0s)
|
|
[ 71.3% | 18653/26162 | ✓17842 | ✗ 26] ✓ tests/stress/test_concurrency_reclaim_race.py (0.7s)
|
|
[ 71.3% | 18656/26162 | ✓17845 | ✗ 26] ✓ tests/run_agent/test_stream_interrupt_retry.py (3✓, 13.7s)
|
|
[ 71.3% | 18656/26162 | ✓17845 | ✗ 26] ✓ tests/stress/test_property_fuzzing.py (0.7s)
|
|
[ 71.3% | 18656/26162 | ✓17845 | ✗ 26] ✓ tests/stress/test_subprocess_e2e.py (0.6s)
|
|
[ 71.3% | 18664/26162 | ✓17853 | ✗ 26] ✓ tests/test_atomic_replace_symlinks.py (8✓, 1.2s)
|
|
[ 71.4% | 18674/26162 | ✓17863 | ✗ 26] ✓ tests/run_agent/test_tls_fd_recycle_corruption.py (10✓, 11.2s)
|
|
[ 71.4% | 18686/26162 | ✓17875 | ✗ 26] ✓ tests/test_empty_model_fallback.py (12✓, 1.4s)
|
|
[ 71.5% | 18707/26162 | ✓17896 | ✗ 26] ✓ tests/run_agent/test_steer.py (21✓, 15.7s)
|
|
[ 71.5% | 18714/26162 | ✓17903 | ✗ 26] ✓ tests/test_env_loader_secret_sources.py (7✓, 1.4s)
|
|
[ 71.6% | 18739/26162 | ✓17928 | ✗ 26] ✓ tests/test_base_url_hostname.py (25✓, 2.0s)
|
|
[ 71.7% | 18751/26162 | ✓17940 | ✗ 26] ✓ tests/test_evidence_store.py (12✓, 1.0s)
|
|
[ 71.7% | 18755/26162 | ✓17944 | ✗ 26] ✓ tests/test_account_usage.py (4✓, 2.3s)
|
|
[ 71.7% | 18768/26162 | ✓17957 | ✗ 26] ✓ tests/test_cli_skin_integration.py (13✓, 1.8s)
|
|
[ 71.9% | 18804/26162 | ✓17993 | ✗ 26] ✓ tests/test_bitwarden_secrets.py (36✓, 2.2s)
|
|
[ 71.9% | 18805/26162 | ✓17994 | ✗ 26] ✓ tests/test_cli_manual_compress.py (1✓, 2.1s)
|
|
[ 72.0% | 18846/26162 | ✓18035 | ✗ 26] ✓ tests/skills/test_openclaw_migration.py (41✓, 4.4s)
|
|
[ 72.0% | 18848/26162 | ✓18037 | ✗ 26] ✓ tests/run_agent/test_switch_model_context.py (2✓, 13.9s)
|
|
[ 72.1% | 18858/26162 | ✓18047 | ✗ 26] ✓ tests/run_agent/test_stream_drop_logging.py (10✓, 16.5s)
|
|
[ 72.1% | 18863/26162 | ✓18052 | ✗ 26] ✓ tests/test_install_sh_browser_install.py (5✓, 0.7s)
|
|
[ 72.1% | 18869/26162 | ✓18058 | ✗ 26] ✓ tests/test_hermes_home_profile_warning.py (6✓, 1.2s)
|
|
[ 72.1% | 18873/26162 | ✓18062 | ✗ 26] ✓ tests/run_agent/test_strict_api_validation.py (4✓, 15.3s)
|
|
[ 72.2% | 18876/26162 | ✓18065 | ✗ 26] ✓ tests/test_gateway_streaming_nested_config.py (3✓, 1.8s)
|
|
[ 72.3% | 18907/26162 | ✓18096 | ✗ 26] ✓ tests/test_cli_file_drop.py (31✓, 3.2s)
|
|
[ 72.3% | 18909/26162 | ✓18098 | ✗ 26] ✓ tests/test_install_sh_pythonpath_sanitization.py (2✓, 1.2s)
|
|
[ 72.3% | 18916/26162 | ✓18105 | ✗ 26] ✓ tests/test_ipv4_preference.py (7✓, 0.9s)
|
|
[ 72.3% | 18922/26162 | ✓18111 | ✗ 26] ✓ tests/test_install_sh_setup_wizard_tty_probe.py (6✓, 1.3s)
|
|
[ 72.4% | 18929/26162 | ✓18118 | ✗ 26] ✓ tests/test_honcho_client_config.py (7✓, 1.7s)
|
|
[ 72.4% | 18931/26162 | ✓18120 | ✗ 26] ✓ tests/test_install_sh_termux_network_prereqs.py (2✓, 1.0s)
|
|
[ 72.4% | 18933/26162 | ✓18122 | ✗ 26] ✓ tests/test_install_sh_symlink_stomp.py (2✓, 1.1s)
|
|
[ 72.4% | 18937/26162 | ✓18126 | ✗ 26] ✓ tests/run_agent/test_switch_model_fallback_prune.py (4✓, 15.2s)
|
|
[ 72.4% | 18940/26162 | ✓18129 | ✗ 26] ✓ tests/run_agent/test_session_id_env.py (3✓, 18.9s)
|
|
[ 72.4% | 18945/26162 | ✓18134 | ✗ 26] ✓ tests/test_lint_config.py (5✓, 1.2s)
|
|
[ 72.4% | 18945/26162 | ✓18134 | ✗ 26] ✓ tests/test_minisweagent_path.py (0.6s)
|
|
[ 72.5% | 18962/26162 | ✓18146 | ✗ 26] ✓ tests/test_hermes_bootstrap.py (12✓ 5s, 2.9s)
|
|
[ 72.6% | 18991/26162 | ✓18175 | ✗ 26] ✓ tests/run_agent/test_unicode_ascii_codec.py (29✓, 10.7s)
|
|
[ 72.7% | 19031/26162 | ✓18215 | ✗ 26] ✓ tests/test_hermes_constants.py (40✓, 3.1s)
|
|
[ 72.8% | 19046/26162 | ✓18230 | ✗ 26] ✓ tests/test_hermes_state_wal_fallback.py (15✓, 2.8s)
|
|
[ 73.0% | 19096/26162 | ✓18280 | ✗ 26] ✓ tests/test_hermes_logging.py (50✓, 3.2s)
|
|
[ 73.1% | 19121/26162 | ✓18305 | ✗ 26] ✓ tests/run_agent/test_thinking_only_sanitizer.py (25✓, 15.3s)
|
|
[ 73.3% | 19182/26162 | ✓18366 | ✗ 26] ✓ tests/run_agent/test_tool_arg_coercion.py (61✓, 14.8s)
|
|
[ 73.3% | 19184/26162 | ✓18368 | ✗ 26] ✓ tests/test_packaging_metadata.py (2✓, 0.8s)
|
|
[ 73.4% | 19199/26162 | ✓18383 | ✗ 26] ✓ tests/run_agent/test_vision_aware_preprocessing.py (15✓, 10.5s)
|
|
[ 73.5% | 19233/26162 | ✓18417 | ✗ 26] ✓ tests/test_live_system_guard_self_test.py (34✓, 2.3s)
|
|
[ 73.5% | 19234/26162 | ✓18418 | ✗ 26] ✓ tests/run_agent/test_tool_name_db_persistence.py (1✓, 12.1s)
|
|
[ 73.6% | 19245/26162 | ✓18429 | ✗ 26] ✓ tests/test_model_picker_scroll.py (11✓, 1.6s)
|
|
[ 73.6% | 19253/26162 | ✓18437 | ✗ 26] ✓ tests/test_ollama_num_ctx.py (8✓, 1.2s)
|
|
[ 73.6% | 19260/26162 | ✓18444 | ✗ 26] ✓ tests/test_minimax_model_validation.py (7✓, 1.7s)
|
|
[ 73.6% | 19265/26162 | ✓18449 | ✗ 26] ✓ tests/test_process_loop_event_loop_warning.py (5✓, 0.8s)
|
|
[ 73.7% | 19270/26162 | ✓18454 | ✗ 26] ✓ tests/run_agent/test_tool_executor_contextvar_propagation.py (5✓, 13.9s)
|
|
[ 73.7% | 19273/26162 | ✓18457 | ✗ 26] ✓ tests/test_package_json_lazy_deps.py (3✓, 1.1s)
|
|
[ 73.7% | 19278/26162 | ✓18462 | ✗ 26] ✓ tests/test_project_metadata.py (5✓, 0.9s)
|
|
[ 73.7% | 19280/26162 | ✓18464 | ✗ 26] ✓ tests/test_mini_swe_runner.py (2✓, 2.1s)
|
|
[ 73.7% | 19284/26162 | ✓18468 | ✗ 26] ✓ tests/test_sql_injection.py (4✓, 0.6s)
|
|
[ 73.7% | 19291/26162 | ✓18475 | ✗ 26] ✓ tests/run_agent/test_tool_call_args_sanitizer.py (7✓, 14.6s)
|
|
[ 73.8% | 19300/26162 | ✓18484 | ✗ 26] ✓ tests/test_retry_utils.py (9✓, 1.0s)
|
|
[ 73.9% | 19328/26162 | ✓18512 | ✗ 26] ✓ tests/test_minimax_oauth.py (28✓, 2.4s)
|
|
[ 73.9% | 19331/26162 | ✓18515 | ✗ 26] ✓ tests/run_agent/test_token_persistence_non_cli.py (3✓, 16.0s)
|
|
[ 73.9% | 19346/26162 | ✓18530 | ✗ 26] ✓ tests/test_toolset_distributions.py (15✓, 1.1s)
|
|
[ 74.0% | 19355/26162 | ✓18539 | ✗ 26] ✓ tests/run_agent/test_tool_call_guardrail_runtime.py (9✓, 15.3s)
|
|
[ 74.1% | 19382/26162 | ✓18566 | ✗ 26] ✓ tests/test_toolsets.py (27✓, 1.4s)
|
|
[ 74.1% | 19384/26162 | ✓18568 | ✗ 26] ✓ tests/test_termux_all_extra_compat.py (2✓, 1.5s)
|
|
[ 74.1% | 19388/26162 | ✓18572 | ✗ 26] ✓ tests/test_utils_truthy_values.py (4✓, 1.2s)
|
|
[ 74.2% | 19404/26162 | ✓18588 | ✗ 26] ✓ tests/test_subprocess_home_isolation.py (16✓, 1.9s)
|
|
[ 74.2% | 19404/26162 | ✓18588 | ✗ 26] ✓ tests/tools/test_approval_heartbeat.py (0.9s)
|
|
[ 74.3% | 19435/26162 | ✓18619 | ✗ 26] ✓ tests/test_trajectory_compressor.py (31✓, 2.7s)
|
|
[ 74.3% | 19438/26162 | ✓18622 | ✗ 26] ✓ tests/tools/test_approval_plugin_hooks.py (3✓, 1.3s)
|
|
[ 74.3% | 19439/26162 | ✓18623 | ✗ 26] ✓ tests/test_run_tests_parallel.py (1✓, 3.3s)
|
|
[ 74.5% | 19479/26162 | ✓18663 | ✗ 26] ✓ tests/test_yuanbao_proto.py (40✓, 2.2s)
|
|
[ 74.6% | 19511/26162 | ✓18695 | ✗ 26] ✓ tests/test_yuanbao_integration.py (32✓, 2.7s)
|
|
[ 74.8% | 19560/26162 | ✓18744 | ✗ 26] ✓ tests/test_yuanbao_markdown.py (49✓, 2.6s)
|
|
[ 74.9% | 19590/26162 | ✓18774 | ✗ 26] ✓ tests/tools/test_ansi_strip.py (30✓, 2.1s)
|
|
[ 74.9% | 19598/26162 | ✓18782 | ✗ 26] ✓ tests/test_trajectory_compressor_async.py (8✓, 3.1s)
|
|
[ 75.0% | 19616/26162 | ✓18800 | ✗ 26] ✓ tests/tools/test_base_environment.py (18✓, 1.9s)
|
|
[ 75.0% | 19622/26162 | ✓18806 | ✗ 26] ✓ tests/tools/test_browser_camofox_state.py (6✓, 0.9s)
|
|
[ 75.1% | 19639/26162 | ✓18823 | ✗ 26] ✓ tests/test_lazy_session_regressions.py (17✓, 6.4s)
|
|
[ 75.1% | 19648/26162 | ✓18832 | ✗ 26] ✓ tests/tools/test_accretion_caps.py (9✓, 3.4s)
|
|
[ 75.2% | 19671/26162 | ✓18855 | ✗ 26] ✓ tests/tools/test_browser_camofox.py (23✓, 2.4s)
|
|
[ 75.3% | 19711/26162 | ✓18895 | ✗ 26] ✓ tests/run_agent/test_streaming.py (40✓, 23.1s)
|
|
[ 75.4% | 19716/26162 | ✓18900 | ✗ 26] ✓ tests/tools/test_browser_cloud_provider_cache.py (5✓, 1.3s)
|
|
[ 75.5% | 19743/26162 | ✓18927 | ✗ 26] ✓ tests/tools/test_browser_camofox_persistence.py (27✓, 2.1s)
|
|
[ 75.8% | 19837/26162 | ✓19021 | ✗ 26] ✓ tests/test_yuanbao_pipeline.py (94✓, 4.2s)
|
|
[ 75.9% | 19844/26162 | ✓19028 | ✗ 26] ✓ tests/tools/test_browser_content_none_guard.py (7✓, 1.2s)
|
|
[ 75.9% | 19851/26162 | ✓19035 | ✗ 26] ✓ tests/tools/test_browser_cdp_override.py (7✓, 2.3s)
|
|
[ 75.9% | 19857/26162 | ✓19041 | ✗ 26] ✓ tests/tools/test_browser_cleanup.py (6✓, 2.0s)
|
|
[ 76.3% | 19950/26162 | ✓19134 | ✗ 26] ✓ tests/run_agent/test_provider_parity.py (93✓, 29.6s)
|
|
[ 76.3% | 19960/26162 | ✓19144 | ✗ 26] ✓ tests/tools/test_browser_chromium_check.py (10✓, 2.1s)
|
|
[ 76.3% | 19968/26162 | ✓19152 | ✗ 26] ✓ tests/tools/test_browser_cloud_fallback.py (8✓, 2.3s)
|
|
[ 76.3% | 19972/26162 | ✓19156 | ✗ 26] ✓ tests/tools/test_browser_supervisor_healthcheck.py (4✓, 0.8s)
|
|
[ 76.4% | 19992/26162 | ✓19176 | ✗ 26] ✓ tests/tools/test_budget_config.py (20✓, 1.0s)
|
|
[ 76.5% | 20006/26162 | ✓19190 | ✗ 26] ✓ tests/tools/test_browser_eval_supervisor_path.py (14✓, 2.4s)
|
|
[ 76.5% | 20026/26162 | ✓19210 | ✗ 26] ✓ tests/tools/test_browser_hybrid_routing.py (20✓, 2.2s)
|
|
[ 76.6% | 20046/26162 | ✓19230 | ✗ 26] ✓ tests/tools/test_clarify_tool.py (20✓, 1.2s)
|
|
[ 76.7% | 20064/26162 | ✓19248 | ✗ 26] ✓ tests/tools/test_browser_orphan_reaper.py (18✓, 2.2s)
|
|
[ 76.8% | 20080/26162 | ✓19264 | ✗ 26] ✓ tests/test_batch_runner_checkpoint.py (16✓, 12.5s)
|
|
[ 76.8% | 20099/26162 | ✓19283 | ✗ 26] ✓ tests/test_ctx_halving_fix.py (19✓, 12.8s)
|
|
[ 76.9% | 20114/26162 | ✓19298 | ✗ 26] ✓ tests/tools/test_clarify_gateway.py (15✓, 2.5s)
|
|
[ 77.0% | 20156/26162 | ✓19340 | ✗ 26] ✓ tests/tools/test_browser_lightpanda.py (42✓, 3.4s)
|
|
[ 77.2% | 20185/26162 | ✓19366 | ✗ 26] ✓ tests/tools/test_code_execution_windows_env.py (26✓ 3s, 1.5s)
|
|
[ 77.2% | 20204/26162 | ✓19385 | ✗ 26] ✓ tests/tools/test_command_guards.py (19✓, 1.8s)
|
|
[ 77.6% | 20289/26162 | ✓19470 | ✗ 26] ✓ tests/test_mcp_serve.py (85✓, 10.7s)
|
|
[ 77.7% | 20317/26162 | ✓19498 | ✗ 26] ✓ tests/tools/test_computer_use_vision_routing.py (28✓, 1.5s)
|
|
[ 77.7% | 20333/26162 | ✓19514 | ✗ 26] ✓ tests/test_sanitize_tool_error.py (16✓, 9.4s)
|
|
[ 77.8% | 20343/26162 | ✓19524 | ✗ 26] ✓ tests/tools/test_config_null_guard.py (10✓, 1.7s)
|
|
[ 78.2% | 20450/26162 | ✓19631 | ✗ 26] ✓ tests/tools/test_clipboard.py (107✓, 3.6s)
|
|
[ 78.2% | 20458/26162 | ✓19639 | ✗ 26] ✓ tests/tools/test_credential_pool_env_fallback.py (8✓, 1.6s)
|
|
[ 78.3% | 20487/26162 | ✓19668 | ✗ 26] ✓ tests/tools/test_credential_files.py (29✓, 2.0s)
|
|
[ 78.4% | 20511/26162 | ✓19692 | ✗ 26] ✓ tests/test_model_tools.py (24✓, 11.4s)
|
|
[ 78.4% | 20517/26162 | ✓19698 | ✗ 26] ✓ tests/test_transform_llm_output_hook.py (6✓, 10.0s)
|
|
[ 78.5% | 20526/26162 | ✓19707 | ✗ 26] ✓ tests/test_transform_tool_result_hook.py (9✓, 10.1s)
|
|
[ 78.5% | 20550/26162 | ✓19731 | ✗ 26] ✓ tests/tools/test_cron_approval_mode.py (24✓, 1.9s)
|
|
[ 78.6% | 20555/26162 | ✓19736 | ✗ 26] ✓ tests/test_get_tool_definitions_cache_isolation.py (5✓, 14.1s)
|
|
[ 78.6% | 20560/26162 | ✓19741 | ✗ 26] ✓ tests/tools/test_delegate_composite_toolsets.py (5✓, 1.3s)
|
|
[ 78.6% | 20568/26162 | ✓19749 | ✗ 26] ✓ tests/tools/test_cron_prompt_injection.py (8✓, 1.9s)
|
|
[ 78.7% | 20581/26162 | ✓19762 | ✗ 26] ✓ tests/tools/test_debug_helpers.py (13✓, 1.6s)
|
|
[ 78.8% | 20609/26162 | ✓19790 | ✗ 26] ✓ tests/test_plugin_skills.py (28✓, 11.9s)
|
|
[ 79.5% | 20797/26162 | ✓19978 | ✗ 26] ✓ tests/tools/test_approval.py (188✓, 9.7s)
|
|
[ 79.5% | 20798/26162 | ✓19979 | ✗ 26] ✓ tests/tools/test_dockerfile_node_modules_perms.py (1✓, 1.0s)
|
|
[ 79.7% | 20848/26162 | ✓20029 | ✗ 26] ✓ tests/tools/test_cronjob_tools.py (50✓, 2.3s)
|
|
[ 79.7% | 20857/26162 | ✓20038 | ✗ 26] ✓ tests/tools/test_docker_find.py (9✓, 1.2s)
|
|
[ 79.8% | 20877/26162 | ✓20058 | ✗ 26] ✓ tests/tools/test_browser_ssrf_local.py (20✓, 7.0s)
|
|
[ 79.8% | 20882/26162 | ✓20063 | ✗ 26] ✓ tests/tools/test_feishu_tools.py (5✓, 0.8s)
|
|
[ 79.8% | 20887/26162 | ✓20068 | ✗ 26] ✓ tests/tools/test_delegate_toolset_scope.py (5✓, 2.2s)
|
|
[ 79.9% | 20894/26162 | ✓20075 | ✗ 26] ✓ tests/tools/test_dockerfile_pid1_reaping.py (7✓, 1.3s)
|
|
[ 80.1% | 20959/26162 | ✓20140 | ✗ 26] ✓ tests/run_agent/test_run_agent_codex_responses.py (65✓, 33.7s)
|
|
[ 80.2% | 20971/26162 | ✓20152 | ✗ 26] ✓ tests/test_model_tools_async_bridge.py (12✓, 13.8s)
|
|
[ 80.3% | 21006/26162 | ✓20187 | ✗ 26] ✓ tests/tools/test_file_operations_edge_cases.py (35✓, 1.5s)
|
|
[ 80.3% | 21018/26162 | ✓20199 | ✗ 26] ✓ tests/tools/test_cross_profile_guard.py (12✓, 3.6s)
|
|
[ 80.4% | 21035/26162 | ✓20216 | ✗ 26] ✓ tests/tools/test_env_passthrough.py (17✓, 2.0s)
|
|
[ 80.4% | 21040/26162 | ✓20221 | ✗ 26] ✓ tests/tools/test_file_ops_cwd_tracking.py (5✓, 1.9s)
|
|
[ 80.5% | 21055/26162 | ✓20236 | ✗ 26] ✓ tests/tools/test_file_sync.py (15✓, 1.7s)
|
|
[ 80.5% | 21065/26162 | ✓20246 | ✗ 26] ✓ tests/tools/test_browser_secret_exfil.py (10✓, 9.1s)
|
|
[ 80.5% | 21069/26162 | ✓20250 | ✗ 26] ✓ tests/tools/test_file_tools_container_config.py (4✓, 1.2s)
|
|
[ 80.6% | 21080/26162 | ✓20261 | ✗ 26] ✓ tests/tools/test_file_staleness.py (11✓, 2.4s)
|
|
[ 80.7% | 21119/26162 | ✓20300 | ✗ 26] ✓ tests/tools/test_file_read_guards.py (39✓, 2.6s)
|
|
[ 80.8% | 21137/26162 | ✓20318 | ✗ 26] ✓ tests/tools/test_file_sync_back.py (18✓, 1.9s)
|
|
[ 81.1% | 21214/26162 | ✓20395 | ✗ 26] ✓ tests/tools/test_checkpoint_manager.py (77✓, 8.8s)
|
|
[ 81.2% | 21234/26162 | ✓20415 | ✗ 26] ✓ tests/tools/test_browser_hardening.py (20✓, 10.4s)
|
|
[ 81.2% | 21253/26162 | ✓20434 | ✗ 26] ✓ tests/tools/test_browser_cdp_tool.py (19✓, 11.3s)
|
|
[ 81.3% | 21275/26162 | ✓20456 | ✗ 26] ✓ tests/tools/test_browser_homebrew_paths.py (22✓, 10.0s)
|
|
[ 81.4% | 21291/26162 | ✓20472 | ✗ 26] ✓ tests/tools/test_file_write_safety.py (16✓, 1.8s)
|
|
[ 81.7% | 21368/26162 | ✓20549 | ✗ 26] ✓ tests/tools/test_file_operations.py (77✓, 3.6s)
|
|
[ 81.7% | 21372/26162 | ✓20550 | ✗ 26] ✓ tests/tools/test_file_sync_perf.py (1✓ 3s, 2.5s)
|
|
[ 81.7% | 21380/26162 | ✓20558 | ✗ 26] ✓ tests/tools/test_force_dangerous_override.py (8✓, 1.8s)
|
|
[ 81.8% | 21411/26162 | ✓20589 | ✗ 26] ✓ tests/tools/test_file_tools.py (31✓, 2.5s)
|
|
[ 81.9% | 21422/26162 | ✓20600 | ✗ 26] ✓ tests/tools/test_hidden_dir_filter.py (11✓, 1.0s)
|
|
[ 81.9% | 21427/26162 | ✓20605 | ✗ 26] ✓ tests/tools/test_heartbeat_stale_thresholds.py (5✓, 1.2s)
|
|
[ 82.0% | 21450/26162 | ✓20628 | ✗ 26] ✓ tests/tools/test_docker_environment.py (23✓, 5.0s)
|
|
[ 82.0% | 21453/26162 | ✓20631 | ✗ 26] ✓ tests/tools/test_image_generation_plugin_dispatch.py (3✓, 1.4s)
|
|
[ 82.1% | 21487/26162 | ✓20665 | ✗ 26] ✓ tests/tools/test_fuzzy_match.py (34✓, 2.2s)
|
|
[ 82.1% | 21490/26162 | ✓20668 | ✗ 26] ✓ tests/tools/test_kanban_codex_lane_skill.py (3✓, 1.2s)
|
|
[ 82.2% | 21496/26162 | ✓20674 | ✗ 26] ✓ tests/tools/test_image_generation_env.py (6✓, 1.7s)
|
|
[ 82.2% | 21500/26162 | ✓20678 | ✗ 26] ✓ tests/tools/test_init_session_cwd_respect.py (4✓, 1.4s)
|
|
[ 82.2% | 21510/26162 | ✓20688 | ✗ 26] ✓ tests/tools/test_local_env_windows_msys.py (10✓, 1.5s)
|
|
[ 82.3% | 21538/26162 | ✓20716 | ✗ 26] ✓ tests/tools/test_llm_content_none_guard.py (28✓, 1.9s)
|
|
[ 82.4% | 21554/26162 | ✓20732 | ✗ 26] ✓ tests/tools/test_file_state_registry.py (16✓, 4.8s)
|
|
[ 82.5% | 21581/26162 | ✓20759 | ✗ 26] ✓ tests/tools/test_browser_console.py (27✓, 13.3s)
|
|
[ 82.5% | 21590/26162 | ✓20768 | ✗ 26] ✓ tests/tools/test_local_env_cwd_recovery.py (9✓, 1.9s)
|
|
[ 82.5% | 21595/26162 | ✓20773 | ✗ 26] ✓ tests/tools/test_managed_tool_gateway.py (5✓, 1.0s)
|
|
[ 82.6% | 21597/26162 | ✓20775 | ✗ 26] ✓ tests/tools/test_local_interrupt_cleanup.py (2✓, 1.8s)
|
|
[ 82.6% | 21602/26162 | ✓20775 | ✗ 31] ✗ tests/tools/test_managed_media_gateways.py (5✗, 1.3s)
|
|
|
|
╔╍ Failed: tests/tools/test_managed_media_gateways.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║
|
|
║ > transcription_tools = _load_tool_module(
|
|
║ "tools.transcription_tools",
|
|
║ "transcription_tools.py",
|
|
║ )
|
|
║
|
|
║ tests/tools/test_managed_media_gateways.py:277:
|
|
║ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
║ tests/tools/test_managed_media_gateways.py:17: in _load_tool_module
|
|
║ spec.loader.exec_module(module)
|
|
║ <frozen importlib._bootstrap_external>:995: in exec_module
|
|
║ ???
|
|
║ <frozen importlib._bootstrap_external>:1132: in get_code
|
|
║ ???
|
|
║ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
║
|
|
║ self = <_frozen_importlib_external.SourceFileLoader object at 0x74bc83ef7170>
|
|
║ path = '/home/ari/src/hermes-agent/main/tools/transcription_tools.py'
|
|
║
|
|
║ > ???
|
|
║ E FileNotFoundError: [Errno 2] No such file or directory: '/home/ari/src/hermes-agent/main/tools/transcription_tools.py'
|
|
║
|
|
║ <frozen importlib._bootstrap_external>:1190: FileNotFoundError
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/tools/test_managed_media_gateways.py::test_managed_fal_submit_uses_gateway_origin_and_nous_token
|
|
║ FAILED tests/tools/test_managed_media_gateways.py::test_managed_fal_submit_reuses_cached_sync_client
|
|
║ FAILED tests/tools/test_managed_media_gateways.py::test_openai_tts_uses_managed_audio_gateway_when_direct_key_absent
|
|
║ FAILED tests/tools/test_managed_media_gateways.py::test_openai_tts_accepts_openai_api_key_as_direct_fallback
|
|
║ FAILED tests/tools/test_managed_media_gateways.py::test_transcription_uses_model_specific_response_formats
|
|
║ ============================== 5 failed in 0.76s ===============================
|
|
║
|
|
║ Repro: python -m pytest tests/tools/test_managed_media_gateways.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 82.6% | 21620/26162 | ✓20793 | ✗ 31] ✓ tests/tools/test_local_env_blocklist.py (18✓, 2.3s)
|
|
[ 82.7% | 21640/26162 | ✓20813 | ✗ 31] ✓ tests/test_timezone.py (20✓, 16.9s)
|
|
[ 83.1% | 21740/26162 | ✓20913 | ✗ 31] ✓ tests/tools/test_hardline_blocklist.py (100✓, 3.7s)
|
|
[ 83.1% | 21747/26162 | ✓20920 | ✗ 31] ✓ tests/tools/test_managed_modal_environment.py (7✓, 1.7s)
|
|
[ 83.2% | 21761/26162 | ✓20934 | ✗ 31] ✓ tests/tools/test_local_shell_init.py (14✓, 2.1s)
|
|
[ 83.2% | 21764/26162 | ✓20937 | ✗ 31] ✓ tests/tools/test_local_tempdir.py (3✓, 2.3s)
|
|
[ 83.4% | 21819/26162 | ✓20989 | ✗ 34] ✗ tests/tools/test_image_generation.py (52✓ 3✗, 3.9s)
|
|
|
|
╔╍ Failed: tests/tools/test_image_generation.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ # Trigger the lazy import on first call. Idempotent.
|
|
║ _load_fal_client()
|
|
║ _resolve_fal_provider()
|
|
║ request_headers = {"x-idempotency-key": str(uuid.uuid4())}
|
|
║ managed_gateway = _resolve_managed_fal_gateway()
|
|
║ if managed_gateway is None:
|
|
║ return fal_client.submit(model, arguments=arguments, headers=request_headers)
|
|
║
|
|
║ managed_client = _get_managed_fal_client(managed_gateway)
|
|
║ try:
|
|
║ return managed_client.submit(
|
|
║ model,
|
|
║ arguments=arguments,
|
|
║ headers=request_headers,
|
|
║ )
|
|
║ except Exception as exc:
|
|
║ # 4xx from the managed gateway typically means the portal doesn't
|
|
║ # currently proxy this model (allowlist miss, billing gate, etc.)
|
|
║ # — surface a clearer message with actionable remediation instead
|
|
║ # of a raw HTTP error from httpx.
|
|
║ > status = _extract_http_status(exc)
|
|
║ ^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
║ E TypeError: 'NoneType' object is not callable
|
|
║
|
|
║ tools/image_generation_tool.py:435: TypeError
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/tools/test_image_generation.py::TestManagedGatewayErrorTranslation::test_4xx_translates_to_value_error_with_remediation
|
|
║ FAILED tests/tools/test_image_generation.py::TestManagedGatewayErrorTranslation::test_5xx_is_not_translated
|
|
║ FAILED tests/tools/test_image_generation.py::TestManagedGatewayErrorTranslation::test_non_http_exception_from_managed_bubbles_up
|
|
║ ========================= 3 failed, 52 passed in 2.61s =========================
|
|
║
|
|
║ Repro: python -m pytest tests/tools/test_image_generation.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 83.4% | 21832/26162 | ✓21002 | ✗ 34] ✓ tests/tools/test_computer_use_capture_routing.py (13✓, 11.0s)
|
|
[ 83.5% | 21835/26162 | ✓21005 | ✗ 34] ✓ tests/tools/test_mcp_circuit_breaker.py (3✓, 2.1s)
|
|
[ 83.5% | 21841/26162 | ✓21011 | ✗ 34] ✓ tests/tools/test_mcp_empty_error_message.py (6✓, 2.1s)
|
|
[ 83.5% | 21843/26162 | ✓21013 | ✗ 34] ✓ tests/tools/test_mcp_cancelled_error_propagation.py (2✓, 2.4s)
|
|
[ 83.5% | 21852/26162 | ✓21022 | ✗ 34] ✓ tests/tools/test_mcp_image_content.py (9✓, 2.2s)
|
|
[ 83.6% | 21862/26162 | ✓21032 | ✗ 34] ✓ tests/tools/test_mcp_dynamic_discovery.py (10✓, 2.7s)
|
|
[ 83.6% | 21864/26162 | ✓21034 | ✗ 34] ✓ tests/tools/test_mcp_oauth_bidirectional.py (2✓, 2.5s)
|
|
[ 84.3% | 22046/26162 | ✓21216 | ✗ 34] ✓ tests/test_tui_gateway_server.py (182✓, 19.1s)
|
|
[ 84.3% | 22056/26162 | ✓21226 | ✗ 34] ✓ tests/tools/test_managed_browserbase_and_modal.py (10✓, 4.1s)
|
|
[ 84.4% | 22077/26162 | ✓21247 | ✗ 34] ✓ tests/tools/test_mcp_invalid_url.py (21✓, 2.9s)
|
|
[ 84.4% | 22084/26162 | ✓21254 | ✗ 34] ✓ tests/tools/test_mcp_oauth_manager.py (7✓, 2.6s)
|
|
[ 84.4% | 22093/26162 | ✓21263 | ✗ 34] ✓ tests/tools/test_mcp_oauth_cold_load_expiry.py (9✓, 2.9s)
|
|
[ 84.5% | 22102/26162 | ✓21272 | ✗ 34] ✓ tests/tools/test_mcp_oauth_metadata.py (9✓, 2.5s)
|
|
[ 84.8% | 22173/26162 | ✓21343 | ✗ 34] ✓ tests/tools/test_computer_use.py (71✓, 13.1s)
|
|
[ 84.8% | 22178/26162 | ✓21348 | ✗ 34] ✓ tests/tools/test_mcp_oauth_integration.py (5✓, 2.9s)
|
|
[ 84.8% | 22186/26162 | ✓21356 | ✗ 34] ✓ tests/tools/test_mcp_probe.py (8✓, 2.7s)
|
|
[ 84.8% | 22190/26162 | ✓21360 | ✗ 34] ✓ tests/tools/test_mcp_reconnect_signal.py (4✓, 2.4s)
|
|
[ 84.8% | 22194/26162 | ✓21364 | ✗ 34] ✓ tests/tools/test_mcp_sse_transport.py (4✓, 2.4s)
|
|
[ 84.9% | 22202/26162 | ✓21370 | ✗ 36] ✗ tests/tools/test_local_background_child_hang.py (6✓ 2✗, 5.9s)
|
|
|
|
╔╍ Failed: tests/tools/test_local_background_child_hang.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ > assert result["returncode"] == 0
|
|
║ E assert 127 == 0
|
|
║
|
|
║ tests/tools/test_local_background_child_hang.py:129: AssertionError
|
|
║ _ TestBackgroundChildDoesNotHang.test_invalid_utf8_uses_replacement_not_fallback _
|
|
║
|
|
║ self = <tests.tools.test_local_background_child_hang.TestBackgroundChildDoesNotHang object at 0x772fea8c9c70>
|
|
║ local_env = <tools.environments.local.LocalEnvironment object at 0x772fe946d070>
|
|
║
|
|
║ def test_invalid_utf8_uses_replacement_not_fallback(self, local_env):
|
|
║ """Truly invalid byte sequences must be substituted with U+FFFD (matching
|
|
║ the pre-fix ``errors='replace'`` behaviour of the old ``TextIOWrapper``
|
|
║ drain), not clobber the entire buffer with a fallback placeholder.
|
|
║ """
|
|
║ # Write a deliberate invalid UTF-8 lead byte sandwiched between valid ASCII
|
|
║ cmd = (
|
|
║ 'python3 -c \'import sys; '
|
|
║ 'sys.stdout.buffer.write(b"before "); '
|
|
║ 'sys.stdout.buffer.write(b"\\xff\\xfe"); '
|
|
║ 'sys.stdout.buffer.write(b" after\\n")\''
|
|
║ )
|
|
║ result = local_env.execute(cmd, timeout=5)
|
|
║ > assert result["returncode"] == 0
|
|
║ E assert 127 == 0
|
|
║
|
|
║ tests/tools/test_local_background_child_hang.py:151: AssertionError
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/tools/test_local_background_child_hang.py::TestBackgroundChildDoesNotHang::test_utf8_multibyte_across_read_boundary
|
|
║ FAILED tests/tools/test_local_background_child_hang.py::TestBackgroundChildDoesNotHang::test_invalid_utf8_uses_replacement_not_fallback
|
|
║ ========================= 2 failed, 6 passed in 4.71s ==========================
|
|
║
|
|
║ Repro: python -m pytest tests/tools/test_local_background_child_hang.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 84.9% | 22203/26162 | ✓21371 | ✗ 36] ✓ tests/tools/test_memory_tool_import_fallback.py (1✓, 1.5s)
|
|
[ 84.9% | 22206/26162 | ✓21374 | ✗ 36] ✓ tests/tools/test_memory_tool_schema.py (3✓, 1.7s)
|
|
[ 85.1% | 22273/26162 | ✓21441 | ✗ 36] ✓ tests/tools/test_mcp_oauth.py (67✓, 4.6s)
|
|
[ 85.2% | 22278/26162 | ✓21446 | ✗ 36] ✓ tests/tools/test_mcp_structured_content.py (5✓, 2.7s)
|
|
[ 85.2% | 22287/26162 | ✓21455 | ✗ 36] ✓ tests/tools/test_modal_bulk_upload.py (9✓, 1.6s)
|
|
[ 85.2% | 22291/26162 | ✓21459 | ✗ 36] ✓ tests/tools/test_modal_snapshot_isolation.py (4✓, 1.6s)
|
|
[ 85.2% | 22300/26162 | ✓21468 | ✗ 36] ✓ tests/tools/test_microsoft_graph_auth.py (9✓, 1.9s)
|
|
[ 85.3% | 22304/26162 | ✓21472 | ✗ 36] ✓ tests/tools/test_mcp_tool_issue_948.py (4✓, 2.8s)
|
|
[ 85.3% | 22322/26162 | ✓21490 | ✗ 36] ✓ tests/tools/test_mcp_tool_session_expired.py (18✓, 2.5s)
|
|
[ 85.4% | 22330/26162 | ✓21498 | ✗ 36] ✓ tests/tools/test_mcp_utility_capability_gating.py (8✓, 2.4s)
|
|
[ 85.4% | 22337/26162 | ✓21505 | ✗ 36] ✓ tests/tools/test_mcp_tool_401_handling.py (7✓, 3.1s)
|
|
[ 85.4% | 22346/26162 | ✓21514 | ✗ 36] ✓ tests/tools/test_microsoft_graph_client.py (9✓, 2.0s)
|
|
[ 85.5% | 22371/26162 | ✓21539 | ✗ 36] ✓ tests/tools/test_notify_on_complete.py (25✓, 1.9s)
|
|
[ 85.6% | 22383/26162 | ✓21551 | ✗ 36] ✓ tests/tools/test_parse_env_var.py (12✓, 1.9s)
|
|
[ 85.6% | 22407/26162 | ✓21575 | ✗ 36] ✓ tests/tools/test_osv_check.py (24✓, 2.1s)
|
|
[ 85.9% | 22471/26162 | ✓21639 | ✗ 36] ✓ tests/tools/test_memory_tool.py (64✓, 2.8s)
|
|
[ 85.9% | 22478/26162 | ✓21646 | ✗ 36] ✓ tests/tools/test_delegate_subagent_timeout_diagnostic.py (7✓, 12.8s)
|
|
[ 86.0% | 22488/26162 | ✓21656 | ✗ 36] ✓ tests/tools/test_pr_6656_regressions.py (10✓, 1.6s)
|
|
[ 86.1% | 22513/26162 | ✓21681 | ✗ 36] ✓ tests/tools/test_patch_parser.py (25✓, 2.1s)
|
|
[ 86.1% | 22515/26162 | ✓21683 | ✗ 36] ✓ tests/tools/test_send_message_telegram_proxy.py (2✓, 1.0s)
|
|
[ 86.3% | 22566/26162 | ✓21734 | ✗ 36] ✓ tests/tools/test_file_tools_live.py (51✓, 10.1s)
|
|
[ 86.3% | 22572/26162 | ✓21740 | ✗ 36] ✓ tests/tools/test_resolve_path.py (6✓, 1.4s)
|
|
[ 86.3% | 22580/26162 | ✓21745 | ✗ 36] ✓ tests/tools/test_signal_media.py (5✓ 3s, 1.0s)
|
|
[ 86.3% | 22589/26162 | ✓21754 | ✗ 36] ✓ tests/tools/test_search_hidden_dirs.py (9✓, 1.3s)
|
|
[ 86.4% | 22592/26162 | ✓21757 | ✗ 36] ✓ tests/tools/test_mixture_of_agents_tool.py (3✓, 3.3s)
|
|
[ 86.5% | 22632/26162 | ✓21797 | ✗ 36] ✓ tests/tools/test_schema_sanitizer.py (40✓, 1.8s)
|
|
[ 86.5% | 22639/26162 | ✓21804 | ✗ 36] ✓ tests/tools/test_singularity_preflight.py (7✓, 1.3s)
|
|
[ 86.6% | 22648/26162 | ✓21813 | ✗ 36] ✓ tests/tools/test_shared_container_task_id.py (9✓, 1.6s)
|
|
[ 86.6% | 22653/26162 | ✓21818 | ✗ 36] ✓ tests/tools/test_skill_provenance.py (5✓, 0.9s)
|
|
[ 86.6% | 22659/26162 | ✓21823 | ✗ 36] ✓ tests/tools/test_skill_view_path_check.py (5✓ 1s, 0.8s)
|
|
[ 86.6% | 22663/26162 | ✓21827 | ✗ 36] ✓ tests/tools/test_skill_env_passthrough.py (4✓, 1.4s)
|
|
[ 86.7% | 22688/26162 | ✓21852 | ✗ 36] ✓ tests/tools/test_read_loop_detection.py (25✓, 2.3s)
|
|
[ 86.8% | 22697/26162 | ✓21861 | ✗ 36] ✓ tests/tools/test_skill_improvements.py (9✓, 1.5s)
|
|
[ 86.8% | 22716/26162 | ✓21880 | ✗ 36] ✓ tests/tools/test_send_message_missing_platforms.py (19✓, 2.1s)
|
|
[ 86.9% | 22722/26162 | ✓21886 | ✗ 36] ✓ tests/tools/test_skill_view_traversal.py (6✓, 1.0s)
|
|
[ 86.9% | 22733/26162 | ✓21897 | ✗ 36] ✓ tests/tools/test_skills_ast_audit.py (11✓, 1.3s)
|
|
[ 87.2% | 22823/26162 | ✓21987 | ✗ 36] ✓ tests/tools/test_discord_tool.py (90✓, 14.1s)
|
|
[ 87.3% | 22837/26162 | ✓22001 | ✗ 36] ✓ tests/tools/test_skill_size_limits.py (14✓, 1.7s)
|
|
[ 87.3% | 22846/26162 | ✓22010 | ✗ 36] ✓ tests/tools/test_skills_hub_clawhub.py (9✓, 1.5s)
|
|
[ 87.4% | 22853/26162 | ✓22017 | ✗ 36] ✓ tests/tools/test_skills_hub_browse_sh.py (7✓, 1.5s)
|
|
[ 87.4% | 22874/26162 | ✓22038 | ✗ 36] ✓ tests/tools/test_ssh_bulk_upload.py (21✓, 1.2s)
|
|
[ 87.5% | 22890/26162 | ✓22054 | ✗ 36] ✓ tests/tools/test_slash_confirm.py (16✓, 1.3s)
|
|
[ 87.5% | 22898/26162 | ✓22062 | ✗ 36] ✓ tests/tools/test_symlink_prefix_confusion.py (8✓, 1.1s)
|
|
[ 87.6% | 22912/26162 | ✓22076 | ✗ 36] ✓ tests/tools/test_spotify_client.py (14✓, 1.3s)
|
|
[ 87.8% | 22976/26162 | ✓22139 | ✗ 37] ✗ tests/tools/test_process_registry.py (63✓ 1✗, 3.8s)
|
|
|
|
╔╍ Failed: tests/tools/test_process_registry.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ self = <tests.tools.test_process_registry.TestStdinHelpers object at 0x7272c3a67a70>
|
|
║ registry = <tools.process_registry.ProcessRegistry object at 0x7272c37f2030>
|
|
║ tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-43067/test_close_stdin_allows_eof_dr0')
|
|
║
|
|
║ def test_close_stdin_allows_eof_driven_process_to_finish(self, registry, tmp_path):
|
|
║ """PTY mode: writing data + sending EOF lets an EOF-driven child finish.
|
|
║
|
|
║ Background non-PTY mode used to expose subprocess stdin via a pipe,
|
|
║ but PR #214b95392 detached non-PTY stdin to DEVNULL to fix keyboard
|
|
║ lockout (#17959). For interactive stdin → PTY mode is now the only
|
|
║ supported path.
|
|
║ """
|
|
║ session = registry.spawn_local(
|
|
║ 'python3 -c "import sys; print(sys.stdin.read().strip())"',
|
|
║ cwd=str(tmp_path),
|
|
║ use_pty=True,
|
|
║ )
|
|
║
|
|
║ try:
|
|
║ time.sleep(0.5)
|
|
║ > assert registry.submit_stdin(session.id, "hello")["status"] == "ok"
|
|
║ E AssertionError: assert 'already_exited' == 'ok'
|
|
║ E
|
|
║ E - ok
|
|
║ E + already_exited
|
|
║
|
|
║ tests/tools/test_process_registry.py:314: AssertionError
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/tools/test_process_registry.py::TestStdinHelpers::test_close_stdin_allows_eof_driven_process_to_finish
|
|
║ ========================= 1 failed, 63 passed in 3.27s =========================
|
|
║
|
|
║ Repro: python -m pytest tests/tools/test_process_registry.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 87.9% | 22994/26162 | ✓22157 | ✗ 37] ✓ tests/tools/test_sync_back_backends.py (18✓, 1.2s)
|
|
[ 88.1% | 23057/26162 | ✓22220 | ✗ 37] ✓ tests/tools/test_skills_guard.py (63✓, 2.5s)
|
|
[ 88.2% | 23082/26162 | ✓22234 | ✗ 37] ✓ tests/tools/test_ssh_environment.py (14✓ 11s, 1.9s)
|
|
[ 88.6% | 23168/26162 | ✓22320 | ✗ 37] ✓ tests/tools/test_skill_manager_tool.py (86✓, 3.2s)
|
|
[ 88.6% | 23170/26162 | ✓22322 | ✗ 37] ✓ tests/tools/test_terminal_none_command_guard.py (2✓, 1.1s)
|
|
[ 88.7% | 23215/26162 | ✓22367 | ✗ 37] ✓ tests/tools/test_skills_sync.py (45✓, 2.6s)
|
|
[ 88.8% | 23226/26162 | ✓22378 | ✗ 37] ✓ tests/tools/test_terminal_foreground_timeout_cap.py (11✓, 1.8s)
|
|
[ 88.9% | 23260/26162 | ✓22412 | ✗ 37] ✓ tests/tools/test_terminal_compound_background.py (34✓, 2.4s)
|
|
[ 88.9% | 23265/26162 | ✓22417 | ✗ 37] ✓ tests/tools/test_terminal_config_env_sync.py (5✓, 2.5s)
|
|
[ 89.0% | 23296/26162 | ✓22448 | ✗ 37] ✓ tests/tools/test_terminal_exit_semantics.py (31✓, 2.4s)
|
|
[ 89.1% | 23310/26162 | ✓22462 | ✗ 37] ✓ tests/tools/test_terminal_tool.py (14✓, 1.7s)
|
|
[ 89.2% | 23330/26162 | ✓22482 | ✗ 37] ✓ tests/tools/test_terminal_requirements.py (20✓, 2.0s)
|
|
[ 89.2% | 23333/26162 | ✓22485 | ✗ 37] ✓ tests/tools/test_terminal_tool_pty_fallback.py (3✓, 1.7s)
|
|
[ 89.2% | 23345/26162 | ✓22497 | ✗ 37] ✓ tests/tools/test_threaded_process_handle.py (12✓, 1.3s)
|
|
[ 89.6% | 23432/26162 | ✓22584 | ✗ 37] ✓ tests/tools/test_skills_tool.py (87✓, 3.5s)
|
|
[ 89.6% | 23444/26162 | ✓22596 | ✗ 37] ✓ tests/tools/test_todo_tool.py (12✓, 1.3s)
|
|
[ 89.9% | 23512/26162 | ✓22664 | ✗ 37] ✓ tests/tools/test_homeassistant_tool.py (68✓, 13.2s)
|
|
[ 89.9% | 23514/26162 | ✓22666 | ✗ 37] ✓ tests/tools/test_terminal_task_cwd.py (2✓, 2.5s)
|
|
[ 89.9% | 23532/26162 | ✓22684 | ✗ 37] ✓ tests/tools/test_tool_output_limits.py (18✓, 1.1s)
|
|
[ 90.0% | 23538/26162 | ✓22690 | ✗ 37] ✓ tests/tools/test_interrupt.py (6✓, 13.5s)
|
|
[ 90.0% | 23540/26162 | ✓22692 | ✗ 37] ✓ tests/tools/test_tts_opus_routing.py (2✓, 1.2s)
|
|
[ 90.0% | 23550/26162 | ✓22702 | ✗ 37] ✓ tests/tools/test_transcription_dotenv_fallback.py (10✓, 1.3s)
|
|
[ 90.2% | 23591/26162 | ✓22743 | ✗ 37] ✓ tests/tools/test_skill_usage.py (41✓, 5.3s)
|
|
[ 90.4% | 23638/26162 | ✓22790 | ✗ 37] ✓ tests/tools/test_tool_backend_helpers.py (47✓, 2.1s)
|
|
[ 90.4% | 23646/26162 | ✓22798 | ✗ 37] ✓ tests/tools/test_tts_dotenv_fallback.py (8✓, 1.4s)
|
|
[ 90.9% | 23770/26162 | ✓22922 | ✗ 37] ✓ tests/tools/test_skills_hub.py (124✓, 5.2s)
|
|
[ 90.9% | 23786/26162 | ✓22922 | ✗ 37] ✗ tests/tools/test_vercel_sandbox_environment.py (16e, 1.4s)
|
|
|
|
╔╍ Failed: tests/tools/test_vercel_sandbox_environment.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ ???
|
|
║ <frozen importlib._bootstrap>:1360: in _find_and_load
|
|
║ ???
|
|
║ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
║
|
|
║ name = 'tools.environments.vercel_sandbox'
|
|
║ import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
║
|
|
║ > ???
|
|
║ E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
║
|
|
║ <frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
║ =========================== short test summary info ============================
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestStartup::test_default_cwd_tracks_remote_workspace_root
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestStartup::test_tilde_cwd_resolves_against_remote_home
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestStartup::test_pending_sandbox_timeout_raises_descriptive_error
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestFileSync::test_initial_sync_uploads_managed_files_under_remote_home
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestFileSync::test_execute_resyncs_changed_managed_files
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestFileSync::test_cleanup_syncs_back_snapshots_closes_and_is_idempotent
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestFileSync::test_cleanup_sync_back_failure_from_download_does_not_block_snapshot
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestExecute::test_execute_recreates_unhealthy_sandbox_before_running_command[terminal-state]
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestExecute::test_execute_recreates_unhealthy_sandbox_before_running_command[refresh-failure]
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestExecute::test_run_bash_handle_uses_captured_sandbox_for_exec_and_cancel
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestSnapshotPersistence::test_create_restores_from_saved_snapshot
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestSnapshotPersistence::test_restore_failure_prunes_snapshot_and_falls_back_to_fresh_sandbox
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestSnapshotPersistence::test_cleanup_stops_when_snapshot_fails_without_storing_metadata
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestSnapshotPersistence::test_non_persistent_cleanup_stops_without_snapshot
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestSnapshotPersistence::test_persistent_cleanup_without_task_id_stops_without_snapshot
|
|
║ ERROR tests/tools/test_vercel_sandbox_environment.py::TestCleanup::test_cleanup_continues_when_sync_back_raises
|
|
║ ============================== 16 errors in 0.81s ==============================
|
|
║
|
|
║ Repro: python -m pytest tests/tools/test_vercel_sandbox_environment.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 90.9% | 23793/26162 | ✓22929 | ✗ 37] ✓ tests/tools/test_video_generation_dispatch.py (7✓, 1.3s)
|
|
[ 91.1% | 23822/26162 | ✓22958 | ✗ 37] ✓ tests/tools/test_video_analyze.py (29✓, 1.7s)
|
|
[ 91.1% | 23827/26162 | ✓22963 | ✗ 37] ✓ tests/tools/test_video_generation_dynamic_schema.py (5✓, 1.5s)
|
|
[ 91.3% | 23876/26162 | ✓23012 | ✗ 37] ✓ tests/tools/test_tool_result_storage.py (49✓, 2.6s)
|
|
[ 91.6% | 23966/26162 | ✓23102 | ✗ 37] ✓ tests/tools/test_tirith_security.py (90✓, 3.9s)
|
|
[ 91.7% | 23984/26162 | ✓23120 | ✗ 37] ✓ tests/tools/test_vision_native_fast_path.py (18✓, 2.2s)
|
|
[ 91.8% | 24013/26162 | ✓23149 | ✗ 37] ✓ tests/tools/test_watch_patterns.py (29✓, 2.3s)
|
|
[ 91.8% | 24015/26162 | ✓23151 | ✗ 37] ✓ tests/tools/test_terminal_timeout_output.py (2✓, 5.6s)
|
|
[ 92.2% | 24127/26162 | ✓23263 | ✗ 37] ✓ tests/tools/test_url_safety.py (112✓, 3.8s)
|
|
[ 92.4% | 24166/26162 | ✓23302 | ✗ 37] ✓ tests/tools/test_web_providers_xai.py (39✓, 2.4s)
|
|
[ 92.6% | 24215/26162 | ✓23351 | ✗ 37] ✓ tests/tools/test_web_tools_config.py (49✓, 2.9s)
|
|
[ 92.6% | 24235/26162 | ✓23371 | ✗ 37] ✓ tests/tools/test_write_deny.py (20✓, 1.3s)
|
|
[ 92.7% | 24251/26162 | ✓23387 | ✗ 37] ✓ tests/tools/test_mcp_stability.py (16✓, 14.1s)
|
|
[ 93.0% | 24335/26162 | ✓23466 | ✗ 41] ✗ tests/tools/test_voice_cli_integration.py (79✓ 4✗ 1s, 4.3s)
|
|
|
|
╔╍ Failed: tests/tools/test_voice_cli_integration.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ def test_play_audio_called(self, _tts, mock_play, _mkd, _isf, _gsz, _unl, _cp):
|
|
║ cli = _make_voice_cli(_voice_tts=True)
|
|
║ cli._voice_speak_response("Hello world")
|
|
║ > mock_play.assert_called_once()
|
|
║
|
|
║ tests/tools/test_voice_cli_integration.py:1134:
|
|
║ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
║
|
|
║ self = <MagicMock name='play_audio_file' id='123353533938432'>
|
|
║
|
|
║ def assert_called_once(self):
|
|
║ """assert that the mock was called only once.
|
|
║ """
|
|
║ if not self.call_count == 1:
|
|
║ msg = ("Expected '%s' to have been called once. Called %s times.%s"
|
|
║ % (self._mock_name or 'mock',
|
|
║ self.call_count,
|
|
║ self._calls_repr()))
|
|
║ > raise AssertionError(msg)
|
|
║ E AssertionError: Expected 'play_audio_file' to have been called once. Called 0 times.
|
|
║
|
|
║ /nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:928: AssertionError
|
|
║ ------------------------------ Captured log call -------------------------------
|
|
║ WARNING cli:cli.py:10906 Voice TTS playback failed: tts tool provider not registered
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/tools/test_voice_cli_integration.py::TestVoiceSpeakResponseReal::test_markdown_stripped
|
|
║ FAILED tests/tools/test_voice_cli_integration.py::TestVoiceSpeakResponseReal::test_code_blocks_removed
|
|
║ FAILED tests/tools/test_voice_cli_integration.py::TestVoiceSpeakResponseReal::test_long_text_truncated
|
|
║ FAILED tests/tools/test_voice_cli_integration.py::TestVoiceSpeakResponseReal::test_play_audio_called
|
|
║ =================== 4 failed, 79 passed, 1 skipped in 3.44s ====================
|
|
║
|
|
║ Repro: python -m pytest tests/tools/test_voice_cli_integration.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 93.1% | 24360/26162 | ✓23491 | ✗ 41] ✓ tests/tools/test_x_search_tool.py (25✓, 2.1s)
|
|
[ 93.2% | 24372/26162 | ✓23503 | ✗ 41] ✓ tests/tools/test_windows_compat.py (12✓, 2.9s)
|
|
[ 93.2% | 24376/26162 | ✓23507 | ✗ 41] ✓ tests/tui_gateway/test_entry_sys_path.py (4✓, 1.1s)
|
|
[ 93.2% | 24395/26162 | ✓23526 | ✗ 41] ✓ tests/tools/test_yolo_mode.py (19✓, 2.1s)
|
|
[ 93.5% | 24457/26162 | ✓23566 | ✗ 48] ✗ tests/tools/test_voice_mode.py (40✓ 7✗ 15s, 5.2s)
|
|
|
|
╔╍ Failed: tests/tools/test_voice_mode.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ np = pytest.importorskip("numpy")
|
|
║
|
|
║ tests/tools/test_voice_mode.py::TestAudioLevelIndicator::test_peak_rms_tracks_maximum
|
|
║ /home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:1154: PytestDeprecationWarning:
|
|
║ Module 'numpy' was found, but when imported by pytest it raised:
|
|
║ ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
║ In pytest 9.1 this warning will become an error by default.
|
|
║ You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
║ See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
║ np = pytest.importorskip("numpy")
|
|
║
|
|
║ tests/tools/test_voice_mode.py::TestConfigurableSilenceParams::test_custom_threshold_and_duration
|
|
║ /home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:1190: PytestDeprecationWarning:
|
|
║ Module 'numpy' was found, but when imported by pytest it raised:
|
|
║ ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
║ In pytest 9.1 this warning will become an error by default.
|
|
║ You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
║ See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
║ np = pytest.importorskip("numpy")
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/tools/test_voice_mode.py::TestCheckVoiceRequirements::test_all_requirements_met
|
|
║ FAILED tests/tools/test_voice_mode.py::TestCheckVoiceRequirements::test_missing_stt_provider
|
|
║ FAILED tests/tools/test_voice_mode.py::TestTranscribeRecording::test_delegates_to_transcribe_audio
|
|
║ FAILED tests/tools/test_voice_mode.py::TestTranscribeRecording::test_filters_whisper_hallucination
|
|
║ FAILED tests/tools/test_voice_mode.py::TestTranscribeRecording::test_does_not_filter_real_speech
|
|
║ FAILED tests/tools/test_voice_mode.py::TestTranscribeRecording::test_oversized_wav_is_chunked_and_stitched
|
|
║ FAILED tests/tools/test_voice_mode.py::TestTranscribeRecording::test_oversized_wav_reports_failing_chunk
|
|
║ ============ 7 failed, 40 passed, 15 skipped, 15 warnings in 4.16s =============
|
|
║
|
|
║ Repro: python -m pytest tests/tools/test_voice_mode.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 94.0% | 24592/26162 | ✓23701 | ✗ 48] ✓ tests/tools/test_delegate.py (135✓, 23.9s)
|
|
[ 94.0% | 24599/26162 | ✓23708 | ✗ 48] ✓ tests/tui_gateway/test_render.py (7✓, 0.7s)
|
|
[ 94.1% | 24630/26162 | ✓23739 | ✗ 48] ✓ tests/tools/test_registry.py (31✓, 12.3s)
|
|
[ 94.2% | 24632/26162 | ✓23741 | ✗ 48] ✓ tests/tui_gateway/test_review_summary_callback.py (2✓, 0.9s)
|
|
[ 94.4% | 24690/26162 | ✓23799 | ✗ 48] ✓ tests/tools/test_windows_native_support.py (58✓, 3.7s)
|
|
[ 94.4% | 24697/26162 | ✓23806 | ✗ 48] ✓ tests/website/test_generate_skill_docs.py (7✓, 1.1s)
|
|
[ 94.4% | 24706/26162 | ✓23815 | ✗ 48] ✓ tests/tools/test_terminal_output_transform_hook.py (9✓, 10.0s)
|
|
[ 94.5% | 24712/26162 | ✓23821 | ✗ 48] ✓ tests/tools/test_terminal_tool_requirements.py (6✓, 10.8s)
|
|
[ 94.5% | 24726/26162 | ✓23835 | ✗ 48] ✓ tests/tools/test_web_providers.py (14✓, 8.5s)
|
|
[ 95.0% | 24847/26162 | ✓23955 | ✗ 49] ✗ tests/tools/test_send_message_tool.py (120✓ 1✗, 15.3s)
|
|
|
|
╔╍ Failed: tests/tools/test_send_message_tool.py ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
║ File "/home/ari/src/hermes-agent/main/plugins/platforms/matrix/hermes_agent_matrix/adapter.py", line 643, in connect
|
|
║ resp = await client.whoami()
|
|
║ ^^^^^^^^^^^^^^^^^^^^^
|
|
║ File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/mautrix/client/api/authentication.py", line 190, in whoami
|
|
║ resp = await self.api.request(Method.GET, Path.v3.account.whoami)
|
|
║ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
║ File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/mautrix/api.py", line 447, in request
|
|
║ raise MatrixConnectionError(str(e)) from e
|
|
║ mautrix.errors.base.MatrixConnectionError: Cannot connect to host matrix.example.com:443 ssl:default [Name or service not known]
|
|
║ =============================== warnings summary ===============================
|
|
║ .venv/lib/python3.12/site-packages/discord/player.py:30
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
║ import audioop
|
|
║
|
|
║ tests/tools/test_send_message_tool.py::TestSendMessageTool::test_cron_duplicate_target_is_skipped_and_explained
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
║ _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
║
|
|
║ tests/tools/test_send_message_tool.py::TestSendMessageTool::test_cron_duplicate_target_is_skipped_and_explained
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
║ def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
║
|
|
║ tests/tools/test_send_message_tool.py::TestSendMessageTool::test_cron_duplicate_target_is_skipped_and_explained
|
|
║ /home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
║ warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
║
|
|
║ -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
║ =========================== short test summary info ============================
|
|
║ FAILED tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_send_matrix_via_adapter_sends_document
|
|
║ ================== 1 failed, 120 passed, 4 warnings in 12.99s ==================
|
|
║
|
|
║ Repro: python -m pytest tests/tools/test_send_message_tool.py
|
|
╚╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍
|
|
|
|
[ 95.1% | 24872/26162 | ✓23980 | ✗ 49] ✓ tests/tools/test_web_providers_searxng.py (25✓, 8.8s)
|
|
[ 95.2% | 24907/26162 | ✓24015 | ✗ 49] ✓ tests/tools/test_tts_plugin_dispatch.py (35✓, 10.6s)
|
|
[ 95.3% | 24929/26162 | ✓24037 | ✗ 49] ✓ tests/tools/test_web_providers_brave_free.py (22✓, 9.2s)
|
|
[ 95.4% | 24947/26162 | ✓24055 | ✗ 49] ✓ tests/tools/test_web_providers_ddgs.py (18✓, 9.2s)
|
|
[ 95.5% | 24975/26162 | ✓24083 | ✗ 49] ✓ tests/tools/test_transcription_plugin_dispatch.py (28✓, 11.1s)
|
|
[ 95.6% | 25013/26162 | ✓24121 | ✗ 49] ✓ tests/tools/test_session_search.py (38✓, 16.4s)
|
|
[ 95.7% | 25035/26162 | ✓24143 | ✗ 49] ✓ tests/tools/test_website_policy.py (22✓, 8.8s)
|
|
[ 95.7% | 25050/26162 | ✓24158 | ✗ 49] ✓ tests/tools/test_web_tools_tavily.py (15✓, 9.5s)
|
|
[ 95.8% | 25066/26162 | ✓24174 | ✗ 49] ✓ tests/tools/test_video_generation_tool_surface_matrix.py (16✓, 11.1s)
|
|
[ 96.1% | 25136/26162 | ✓24238 | ✗ 49] ✓ tests/tools/test_vision_tools.py (64✓ 6s, 10.7s)
|
|
[ 96.1% | 25143/26162 | ✓24245 | ✗ 49] ✓ tests/tui_gateway/test_make_agent_provider.py (7✓, 6.8s)
|
|
[ 96.9% | 25339/26162 | ✓24441 | ✗ 49] ✓ tests/tools/test_mcp_tool.py (196✓, 20.9s)
|
|
[ 97.2% | 25420/26162 | ✓24522 | ✗ 49] ✓ tests/tools/test_kanban_tools.py (81✓, 25.4s)
|
|
[ 97.3% | 25456/26162 | ✓24558 | ✗ 49] ✓ tests/tools/test_code_execution_modes.py (36✓, 35.4s)
|
|
[ 97.3% | 25465/26162 | ✓24567 | ✗ 49] ✓ tests/tools/test_zombie_process_cleanup.py (9✓, 12.1s)
|
|
[ 97.4% | 25487/26162 | ✓24588 | ✗ 49] ✓ tests/tools/test_browser_supervisor.py (21✓ 1s, 42.9s)
|
|
[ 97.6% | 25540/26162 | ✓24641 | ✗ 49] ✓ tests/tui_gateway/test_protocol.py (53✓, 20.1s)
|
|
[ 98.4% | 25756/26162 | ✓24857 | ✗ 49] ✓ tests/test_hermes_state.py (216✓, 56.8s)
|
|
[ 99.7% | 26084/26162 | ✓25185 | ✗ 49] ✓ tests/run_agent/test_run_agent.py (328✓, 76.7s)
|
|
[ 99.7% | 26095/26162 | ✓25196 | ✗ 49] ✓ tests/tui_gateway/test_goal_command.py (11✓, 27.2s)
|
|
[100.0% | 26162/26162 | ✓25263 | ✗ 49] ✓ tests/tools/test_code_execution.py (67✓, 107.3s)
|
|
|
|
=== Summary: 1204 files, 25263 tests passed, 49 failed (100% complete) in 285.7s (32 workers) ===
|
|
Durations cached to test_durations.json (1204 files)
|
|
|
|
=== Per-file subprocess time distribution ===
|
|
Files: 1204
|
|
Total subprocess CPU-wall: 6859.3s (runner wall: 285.7s, parallelism: 32x)
|
|
P50: 2.37s P90: 13.81s P95: 17.90s P99: 30.19s Max: 107.30s
|
|
<1s: 57 files (5%) <2s: 481 files (40%)
|
|
Top 10 slowest:
|
|
107.30s tests/tools/test_code_execution.py
|
|
76.74s tests/run_agent/test_run_agent.py
|
|
56.85s tests/test_hermes_state.py
|
|
42.95s tests/plugins/test_kanban_dashboard_plugin.py
|
|
42.85s tests/tools/test_browser_supervisor.py
|
|
38.92s tests/agent/test_context_compressor.py
|
|
35.42s tests/tools/test_code_execution_modes.py
|
|
35.27s tests/acp/test_server.py
|
|
33.74s tests/run_agent/test_run_agent_codex_responses.py
|
|
32.50s tests/hermes_cli/test_kanban_core_functionality.py
|
|
|
|
=== Failure output ===
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_channel_posts.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 3 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_channel_posts.py EEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of test_build_message_event_uses_channel_identity_for_channel_posts _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7f89692f3d80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='140228153637248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='140228153637248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_text_handler_uses_effective_message_for_channel_post __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7f89692fefc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='140228153637248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='140228153637248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_command_handler_uses_effective_message_for_channel_post _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7f89692ff560>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='140228153637248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='140228153637248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_channel_posts.py::test_build_message_event_uses_channel_identity_for_channel_posts
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_channel_posts.py::test_text_handler_uses_effective_message_for_channel_post
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_channel_posts.py::test_command_handler_uses_effective_message_for_channel_post
|
|
============================== 3 errors in 0.82s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 5 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py EEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
____________ ERROR at setup of test_voice_message_still_transcribed ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x77b392560400>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______________ ERROR at setup of test_audio_attachment_skips_stt _______________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x77b392560540>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_audio_attachment_context_note_format __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x77b3925636a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_audio_attachment_skips_stt_when_stt_disabled ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x77b392562d40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_telegram_media_type_detection_audio_vs_voice ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x77b392507100>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='131613139596976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py::test_voice_message_still_transcribed
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py::test_audio_attachment_skips_stt
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py::test_audio_attachment_context_note_format
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py::test_audio_attachment_skips_stt_when_stt_disabled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py::test_telegram_media_type_detection_audio_vs_voice
|
|
============================== 5 errors in 1.71s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 5 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py E [ 20%]
|
|
EEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestCallbackAuthFailClosed.test_no_allowlist_no_allow_all_denies _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7fc01287d800>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestCallbackAuthFailClosed.test_no_allowlist_with_global_allow_all_permits _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7fc01287f2e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestCallbackAuthFailClosed.test_allowlist_with_matching_user_permits _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7fc01224d120>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestCallbackAuthFailClosed.test_allowlist_without_matching_user_denies _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7fc01224cc20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestCallbackAuthFailClosed.test_allowlist_wildcard_permits _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7fc013804f40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='140462921028560'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py::TestCallbackAuthFailClosed::test_no_allowlist_no_allow_all_denies
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py::TestCallbackAuthFailClosed::test_no_allowlist_with_global_allow_all_permits
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py::TestCallbackAuthFailClosed::test_allowlist_with_matching_user_permits
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py::TestCallbackAuthFailClosed::test_allowlist_without_matching_user_denies
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py::TestCallbackAuthFailClosed::test_allowlist_wildcard_permits
|
|
============================== 5 errors in 1.73s ===============================
|
|
|
|
--- plugins/platforms/dingtalk/tests/test_dingtalk.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 68 items
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py EEEEEEEEEEEEEEEEEEEEEE [ 32%]
|
|
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestDingTalkRequirements.test_returns_false_when_sdk_missing _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb639de510>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestDingTalkRequirements.test_returns_false_when_env_vars_missing _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63a2ff20>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestDingTalkRequirements.test_returns_true_when_all_available _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb637e2b70>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
____ ERROR at setup of TestDingTalkAdapterInit.test_reads_config_from_extra ____
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb637e3530>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
____ ERROR at setup of TestDingTalkAdapterInit.test_falls_back_to_env_vars _____
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb637e3710>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
__________ ERROR at setup of TestExtractText.test_text_as_dict_legacy __________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb637e32c0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
______ ERROR at setup of TestExtractText.test_text_as_textcontent_object _______
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb638e22a0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
__ ERROR at setup of TestExtractText.test_text_content_attr_with_empty_string __
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382f080>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
______ ERROR at setup of TestExtractText.test_rich_text_content_new_shape ______
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382cef0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
________ ERROR at setup of TestExtractText.test_rich_text_legacy_shape _________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382d010>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_____________ ERROR at setup of TestExtractText.test_empty_message _____________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382e900>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_____ ERROR at setup of TestDeduplication.test_first_message_not_duplicate _____
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382fd40>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
__ ERROR at setup of TestDeduplication.test_second_same_message_is_duplicate ___
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63610800>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
__ ERROR at setup of TestDeduplication.test_different_messages_not_duplicate ___
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63611490>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
______ ERROR at setup of TestDeduplication.test_cache_cleanup_on_overflow ______
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63611400>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
____________ ERROR at setup of TestSend.test_send_posts_to_webhook _____________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382f440>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
__________ ERROR at setup of TestSend.test_send_fails_without_webhook __________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382fe60>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
___________ ERROR at setup of TestSend.test_send_uses_cached_webhook ___________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382dcd0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
___________ ERROR at setup of TestSend.test_send_handles_http_error ____________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382e270>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
______ ERROR at setup of TestSend.test_send_image_renders_markdown_image _______
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382d100>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestSend.test_send_image_file_returns_explicit_unsupported_error _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382fcb0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestSend.test_send_document_returns_explicit_unsupported_error _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63a8e4e0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
____ ERROR at setup of TestConnect.test_disconnect_closes_session_websocket ____
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63a8eb40>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_________ ERROR at setup of TestConnect.test_connect_fails_without_sdk _________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb637e2450>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_____ ERROR at setup of TestConnect.test_connect_fails_without_credentials _____
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb637e2bd0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
___________ ERROR at setup of TestConnect.test_disconnect_cleans_up ____________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63611550>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestConnect.test_disconnect_finalizes_open_streaming_cards _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb636116d0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
____ ERROR at setup of TestWebhookDomainAllowlist.test_api_domain_accepted _____
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb636134a0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
____ ERROR at setup of TestWebhookDomainAllowlist.test_oapi_domain_accepted ____
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb636109e0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_______ ERROR at setup of TestWebhookDomainAllowlist.test_http_rejected ________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63612e70>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
___ ERROR at setup of TestWebhookDomainAllowlist.test_suffix_attack_rejected ___
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb636108c0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestWebhookDomainAllowlist.test_unsanctioned_subdomain_rejected _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb637e2810>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestHandlerProcessIsAsync.test_process_is_coroutine_function _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb637e3f20>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestExtractMedia.test_voice_rich_text_item_classified_as_voice _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63a8fb60>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
___ ERROR at setup of TestExtractMedia.test_audio_rich_text_item_stays_audio ___
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63a8f2c0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestAllowedUsersGate.test_empty_allowlist_allows_everyone __
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382d640>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestAllowedUsersGate.test_wildcard_allowlist_allows_everyone _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382cd40>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestAllowedUsersGate.test_matches_sender_id_case_insensitive _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382e510>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_________ ERROR at setup of TestAllowedUsersGate.test_matches_staff_id _________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63567d40>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_______ ERROR at setup of TestAllowedUsersGate.test_rejects_unknown_user _______
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63567860>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestAllowedUsersGate.test_env_var_csv_populates_allowlist __
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382c2f0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
________ ERROR at setup of TestMentionPatterns.test_empty_patterns_list ________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382e1b0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_______ ERROR at setup of TestMentionPatterns.test_pattern_matches_text ________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382dc10>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
____ ERROR at setup of TestMentionPatterns.test_pattern_is_case_insensitive ____
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382c770>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestMentionPatterns.test_invalid_regex_is_skipped_not_raised _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb637e3c20>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
__ ERROR at setup of TestMentionPatterns.test_env_var_json_populates_patterns __
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382c500>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestMentionPatterns.test_env_var_newline_fallback_when_not_json _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63613650>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
______ ERROR at setup of TestShouldProcessMessage.test_dm_always_accepted ______
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63613f80>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestShouldProcessMessage.test_group_rejected_when_require_mention_and_no_trigger _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63566f90>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestShouldProcessMessage.test_group_accepted_when_require_mention_disabled _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63566300>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestShouldProcessMessage.test_group_accepted_when_bot_is_mentioned _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63567440>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestShouldProcessMessage.test_group_accepted_when_text_matches_wake_word _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63630560>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestShouldProcessMessage.test_group_accepted_when_chat_in_free_response_list _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63567140>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestIncomingHandlerProcess.test_process_extracts_session_webhook _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63566db0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestIncomingHandlerProcess.test_process_fallback_session_webhook_when_from_dict_misses_it _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb635662d0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestIncomingHandlerProcess.test_process_returns_ack_immediately _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63613080>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestExtractTextMentions.test_preserves_at_mentions_in_text _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63611760>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
___ ERROR at setup of TestExtractTextMentions.test_dingtalk_in_platform_enum ___
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb636139b0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestMessageContextIsolation.test_contexts_keyed_by_chat_id _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63a8f470>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_____ ERROR at setup of TestCardLifecycle.test_final_reply_finalizes_card ______
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382e630>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
__ ERROR at setup of TestCardLifecycle.test_intermediate_send_stays_streaming __
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb6382c9e0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestCardLifecycle.test_done_fires_only_when_reply_to_is_set _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63633650>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
__ ERROR at setup of TestCardLifecycle.test_edit_message_finalize_fires_done ___
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63632c60>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestCardLifecycle.test_edit_message_finalize_false_tracks_sibling _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63632180>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestCardLifecycle.test_next_send_auto_closes_sibling_streaming_cards _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63633530>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
__ ERROR at setup of TestCardLifecycle.test_edit_message_requires_message_id ___
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63633980>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
__ ERROR at setup of TestCardLifecycle.test_fire_done_reaction_is_idempotent ___
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb63631c10>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
_ ERROR at setup of TestDingTalkAdapterAICards.test_send_uses_ai_card_if_configured _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x72bb636311f0>
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _fake_dingtalk_optional_sdks(monkeypatch):
|
|
"""Keep DingTalk adapter tests hermetic when optional SDKs are absent."""
|
|
> from gateway.platforms import dingtalk as dt
|
|
E ImportError: cannot import name 'dingtalk' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py:43: ImportError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDingTalkRequirements::test_returns_false_when_sdk_missing
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDingTalkRequirements::test_returns_false_when_env_vars_missing
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDingTalkRequirements::test_returns_true_when_all_available
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDingTalkAdapterInit::test_reads_config_from_extra
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDingTalkAdapterInit::test_falls_back_to_env_vars
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractText::test_text_as_dict_legacy
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractText::test_text_as_textcontent_object
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractText::test_text_content_attr_with_empty_string
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractText::test_rich_text_content_new_shape
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractText::test_rich_text_legacy_shape
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractText::test_empty_message
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDeduplication::test_first_message_not_duplicate
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDeduplication::test_second_same_message_is_duplicate
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDeduplication::test_different_messages_not_duplicate
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDeduplication::test_cache_cleanup_on_overflow
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestSend::test_send_posts_to_webhook
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestSend::test_send_fails_without_webhook
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestSend::test_send_uses_cached_webhook
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestSend::test_send_handles_http_error
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestSend::test_send_image_renders_markdown_image
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestSend::test_send_image_file_returns_explicit_unsupported_error
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestSend::test_send_document_returns_explicit_unsupported_error
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestConnect::test_disconnect_closes_session_websocket
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestConnect::test_connect_fails_without_sdk
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestConnect::test_connect_fails_without_credentials
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestConnect::test_disconnect_cleans_up
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestConnect::test_disconnect_finalizes_open_streaming_cards
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestWebhookDomainAllowlist::test_api_domain_accepted
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestWebhookDomainAllowlist::test_oapi_domain_accepted
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestWebhookDomainAllowlist::test_http_rejected
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestWebhookDomainAllowlist::test_suffix_attack_rejected
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestWebhookDomainAllowlist::test_unsanctioned_subdomain_rejected
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestHandlerProcessIsAsync::test_process_is_coroutine_function
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractMedia::test_voice_rich_text_item_classified_as_voice
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractMedia::test_audio_rich_text_item_stays_audio
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestAllowedUsersGate::test_empty_allowlist_allows_everyone
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestAllowedUsersGate::test_wildcard_allowlist_allows_everyone
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestAllowedUsersGate::test_matches_sender_id_case_insensitive
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestAllowedUsersGate::test_matches_staff_id
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestAllowedUsersGate::test_rejects_unknown_user
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestAllowedUsersGate::test_env_var_csv_populates_allowlist
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_empty_patterns_list
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_pattern_matches_text
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_pattern_is_case_insensitive
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_invalid_regex_is_skipped_not_raised
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_env_var_json_populates_patterns
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMentionPatterns::test_env_var_newline_fallback_when_not_json
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_dm_always_accepted
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_group_rejected_when_require_mention_and_no_trigger
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_group_accepted_when_require_mention_disabled
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_group_accepted_when_bot_is_mentioned
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_group_accepted_when_text_matches_wake_word
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestShouldProcessMessage::test_group_accepted_when_chat_in_free_response_list
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestIncomingHandlerProcess::test_process_extracts_session_webhook
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestIncomingHandlerProcess::test_process_fallback_session_webhook_when_from_dict_misses_it
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestIncomingHandlerProcess::test_process_returns_ack_immediately
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractTextMentions::test_preserves_at_mentions_in_text
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestExtractTextMentions::test_dingtalk_in_platform_enum
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestMessageContextIsolation::test_contexts_keyed_by_chat_id
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_final_reply_finalizes_card
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_intermediate_send_stays_streaming
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_done_fires_only_when_reply_to_is_set
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_edit_message_finalize_fires_done
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_edit_message_finalize_false_tracks_sibling
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_next_send_auto_closes_sibling_streaming_cards
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_edit_message_requires_message_id
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestCardLifecycle::test_fire_done_reaction_is_idempotent
|
|
ERROR plugins/platforms/dingtalk/tests/test_dingtalk.py::TestDingTalkAdapterAICards::test_send_uses_ai_card_if_configured
|
|
============================== 68 errors in 4.96s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 3 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py EEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
____ ERROR at setup of test_max_doc_bytes_defaults_to_20mb_without_base_url ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x78c207534360>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132774752073056'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132774752073056'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_max_doc_bytes_raised_to_2gb_when_base_url_set _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x78c207537240>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132774752073056'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132774752073056'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_max_doc_bytes_empty_base_url_keeps_default _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x78c2075379c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132774752073056'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132774752073056'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py::test_max_doc_bytes_defaults_to_20mb_without_base_url
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py::test_max_doc_bytes_raised_to_2gb_when_base_url_set
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py::test_max_doc_bytes_empty_base_url_keeps_default
|
|
============================== 3 errors in 0.98s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_forum_commands.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 5 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_forum_commands.py EEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_________ ERROR at setup of test_ensure_forum_commands_skips_non_forum _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7b3977d16660>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_ensure_forum_commands_skips_already_registered _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7b3977d16980>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_ensure_forum_commands_registers_once __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7b3977854e00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_ensure_forum_commands_handles_set_failure _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7b3977855120>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of test_ensure_forum_commands_race_safety ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7b3977cf7420>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='135486755551904'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_forum_commands.py::test_ensure_forum_commands_skips_non_forum
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_forum_commands.py::test_ensure_forum_commands_skips_already_registered
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_forum_commands.py::test_ensure_forum_commands_registers_once
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_forum_commands.py::test_ensure_forum_commands_handles_set_failure
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_forum_commands.py::test_ensure_forum_commands_race_safety
|
|
============================== 5 errors in 1.36s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_conflict.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 6 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_conflict.py EEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_________ ERROR at setup of test_connect_rejects_same_host_token_lock __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7897872f3ce0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_polling_conflict_retries_before_fatal _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x78978711a8e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_polling_conflict_becomes_fatal_after_retries ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x78978711ade0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_connect_marks_retryable_fatal_error_for_startup_network_failure _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x789787119ee0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_connect_clears_webhook_before_polling _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x789787119120>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_disconnect_skips_inactive_updater_and_app _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x78978711a3e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132592211320016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_connect_rejects_same_host_token_lock
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_polling_conflict_retries_before_fatal
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_polling_conflict_becomes_fatal_after_retries
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_connect_marks_retryable_fatal_error_for_startup_network_failure
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_connect_clears_webhook_before_polling
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_conflict.py::test_disconnect_skips_inactive_updater_and_app
|
|
============================== 6 errors in 2.26s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_caption_merge.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 13 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_caption_merge.py EEEEEEEE [ 61%]
|
|
EEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
________ ERROR at setup of TestMergeCaptionBasic.test_no_existing_text _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e9934199bc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestMergeCaptionBasic.test_empty_existing_text _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e99337e2e80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestMergeCaptionBasic.test_exact_duplicate_dropped _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e99337e3740>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestMergeCaptionBasic.test_different_captions_merged ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e99337e1b20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMergeCaptionSubstringBug.test_shorter_caption_not_dropped_when_substring _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e99337e39c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMergeCaptionSubstringBug.test_longer_caption_not_dropped_when_contains_existing _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e99337e3b00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMergeCaptionSubstringBug.test_prefix_caption_not_dropped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e99337e3e20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMergeCaptionWhitespace.test_trailing_space_treated_as_duplicate _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e99337e2b60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMergeCaptionWhitespace.test_leading_space_treated_as_duplicate _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e99337e3ce0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMergeCaptionWhitespace.test_whitespace_only_new_text_not_added _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e9933354cc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMergeCaptionMultipleItems.test_three_unique_captions_all_present _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e9933354fe0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMergeCaptionMultipleItems.test_duplicate_in_middle_dropped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e9933354400>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMergeCaptionMultipleItems.test_album_scenario_revenue_profit _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e9933355580>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='139196466499552'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionBasic::test_no_existing_text
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionBasic::test_empty_existing_text
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionBasic::test_exact_duplicate_dropped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionBasic::test_different_captions_merged
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionSubstringBug::test_shorter_caption_not_dropped_when_substring
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionSubstringBug::test_longer_caption_not_dropped_when_contains_existing
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionSubstringBug::test_prefix_caption_not_dropped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionWhitespace::test_trailing_space_treated_as_duplicate
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionWhitespace::test_leading_space_treated_as_duplicate
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionWhitespace::test_whitespace_only_new_text_not_added
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionMultipleItems::test_three_unique_captions_all_present
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionMultipleItems::test_duplicate_in_middle_dropped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_caption_merge.py::TestMergeCaptionMultipleItems::test_album_scenario_revenue_profit
|
|
============================== 13 errors in 4.49s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_model_picker.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 4 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_model_picker.py EEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestTelegramModelPicker.test_send_model_picker_escapes_dynamic_provider_label _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x704e3b8ff920>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123481316360464'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123481316360464'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramModelPicker.test_back_button_escapes_dynamic_provider_label _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x704e3b726b60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123481316360464'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123481316360464'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramModelPicker.test_model_selected_edits_message_on_success _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x704e3b727060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123481316360464'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123481316360464'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramModelPicker.test_retries_without_thread_when_thread_not_found _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x704e3b7262a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123481316360464'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123481316360464'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_model_picker.py::TestTelegramModelPicker::test_send_model_picker_escapes_dynamic_provider_label
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_model_picker.py::TestTelegramModelPicker::test_back_button_escapes_dynamic_provider_label
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_model_picker.py::TestTelegramModelPicker::test_model_selected_edits_message_on_success
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_model_picker.py::TestTelegramModelPicker::test_retries_without_thread_when_thread_not_found
|
|
============================== 4 errors in 2.08s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_reply_quote.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 4 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_reply_quote.py EEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
______ ERROR at setup of test_native_partial_quote_used_as_reply_to_text _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d08d782c4a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137476939102832'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137476939102832'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_full_reply_text_used_when_no_native_quote _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d08d782f240>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137476939102832'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137476939102832'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_caption_fallback_when_no_quote_and_no_text _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d08d782f9c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137476939102832'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137476939102832'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_empty_quote_text_falls_back_to_full_reply _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d08d782e980>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137476939102832'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137476939102832'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_quote.py::test_native_partial_quote_used_as_reply_to_text
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_quote.py::test_full_reply_text_used_when_no_native_quote
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_quote.py::test_caption_fallback_when_no_quote_and_no_text
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_quote.py::test_empty_quote_text_falls_back_to_full_reply
|
|
============================== 4 errors in 1.33s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_send_path_health.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 3 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_send_path_health.py EEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
____________ ERROR at setup of test_send_succeeds_when_path_healthy ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x76f1a25542c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130780192767872'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130780192767872'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of test_send_short_circuits_when_path_degraded _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x76f1a25544a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130780192767872'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130780192767872'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_reconnect_storm_sets_and_heartbeat_clears_flag _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x76f1a2557600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130780192767872'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130780192767872'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_send_path_health.py::test_send_succeeds_when_path_healthy
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_send_path_health.py::test_send_short_circuits_when_path_degraded
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_send_path_health.py::test_reconnect_storm_sets_and_heartbeat_clears_flag
|
|
============================== 3 errors in 1.36s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 12 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py EEEEEE [ 50%]
|
|
EEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestTelegramSendClarify.test_multi_choice_renders_buttons_and_other _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8ce8860>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestTelegramSendClarify.test_open_ended_no_keyboard _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8ceb560>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of TestTelegramSendClarify.test_not_connected _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8ce80e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramSendClarify.test_long_choice_rendered_in_body_not_truncated _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8ceb240>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestTelegramSendClarify.test_html_escapes_question _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8cebb00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramClarifyCallback.test_numeric_choice_resolves_with_choice_text _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8ceaca0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramClarifyCallback.test_other_button_flips_to_text_mode _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8cebe20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestTelegramClarifyCallback.test_already_resolved ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8b182c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramClarifyCallback.test_unauthorized_user_rejected _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8b180e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestTelegramClarifyCallback.test_invalid_choice_token ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8b19260>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestBaseAdapterClarifyFallback.test_numbered_text_fallback _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8b194e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestBaseAdapterClarifyFallback.test_open_ended_fallback_renders_question_only _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7399f8b18540>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='127105146314320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramSendClarify::test_multi_choice_renders_buttons_and_other
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramSendClarify::test_open_ended_no_keyboard
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramSendClarify::test_not_connected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramSendClarify::test_long_choice_rendered_in_body_not_truncated
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramSendClarify::test_html_escapes_question
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramClarifyCallback::test_numeric_choice_resolves_with_choice_text
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramClarifyCallback::test_other_button_flips_to_text_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramClarifyCallback::test_already_resolved
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramClarifyCallback::test_unauthorized_user_rejected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestTelegramClarifyCallback::test_invalid_choice_token
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestBaseAdapterClarifyFallback::test_numbered_text_fallback
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py::TestBaseAdapterClarifyFallback::test_open_ended_fallback_renders_question_only
|
|
============================== 12 errors in 4.49s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_approval_buttons.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 20 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_approval_buttons.py EEEEE [ 25%]
|
|
EEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
____ ERROR at setup of TestTelegramExecApproval.test_sends_inline_keyboard _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced1f7060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestTelegramExecApproval.test_stores_approval_state _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced232160>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestTelegramExecApproval.test_sends_in_thread ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced231ee0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramExecApproval.test_retries_without_thread_when_thread_not_found _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced231800>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of TestTelegramExecApproval.test_not_connected _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced232d40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramExecApproval.test_disable_link_previews_sets_preview_kwargs _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced232fc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramExecApproval.test_send_update_prompt_escapes_dynamic_prompt _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced233380>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestTelegramExecApproval.test_truncates_long_command ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced233920>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramApprovalCallback.test_resolves_approval_on_click _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced233b00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramApprovalCallback.test_resume_typing_after_inline_approval _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced2332e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramApprovalCallback.test_typing_stays_paused_when_resolve_returns_zero _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced233240>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramApprovalCallback.test_approval_callback_escapes_dynamic_user_name _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced232340>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestTelegramApprovalCallback.test_deny_button ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced1f6840>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramApprovalCallback.test_approval_callback_rejects_user_blocked_by_global_allowlist _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced1f6f20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestTelegramApprovalCallback.test_already_resolved _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced2b4180>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramApprovalCallback.test_model_picker_callback_not_affected _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced2b45e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramApprovalCallback.test_update_prompt_callback_not_affected _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced2b54e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramApprovalCallback.test_update_prompt_callback_rejects_unauthorized_user _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced2b5760>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramApprovalCallback.test_update_prompt_callback_rejects_user_blocked_by_global_allowlist _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced2b4040>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramApprovalCallback.test_update_prompt_callback_allows_authorized_user _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d5ced1f7420>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137838070059984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_sends_inline_keyboard
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_stores_approval_state
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_sends_in_thread
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_retries_without_thread_when_thread_not_found
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_not_connected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_disable_link_previews_sets_preview_kwargs
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_send_update_prompt_escapes_dynamic_prompt
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramExecApproval::test_truncates_long_command
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_resolves_approval_on_click
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_resume_typing_after_inline_approval
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_typing_stays_paused_when_resolve_returns_zero
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_approval_callback_escapes_dynamic_user_name
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_deny_button
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_approval_callback_rejects_user_blocked_by_global_allowlist
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_already_resolved
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_model_picker_callback_not_affected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_update_prompt_callback_not_affected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_update_prompt_callback_rejects_unauthorized_user
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_update_prompt_callback_rejects_user_blocked_by_global_allowlist
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_approval_buttons.py::TestTelegramApprovalCallback::test_update_prompt_callback_allows_authorized_user
|
|
============================== 20 errors in 5.93s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_slash_confirm.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 3 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_slash_confirm.py EEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestSendSlashConfirm.test_uses_markdown_v2_and_escapes_special_chars _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x71c1a65544a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125076534375872'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125076534375872'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestSendSlashConfirm.test_stores_slash_confirm_state ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x71c1a65574c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125076534375872'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125076534375872'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestSendSlashConfirm.test_not_connected_returns_failure ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x71c1a6557740>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125076534375872'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125076534375872'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_slash_confirm.py::TestSendSlashConfirm::test_uses_markdown_v2_and_escapes_special_chars
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_slash_confirm.py::TestSendSlashConfirm::test_stores_slash_confirm_state
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_slash_confirm.py::TestSendSlashConfirm::test_not_connected_returns_failure
|
|
============================== 3 errors in 1.18s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_status_update.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 5 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_status_update.py EEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
________ ERROR at setup of test_first_call_sends_and_caches_message_id _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7ca91b9553a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______________ ERROR at setup of test_second_call_edits_in_place _______________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7ca91b9556c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_edit_failure_falls_back_to_fresh_send _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7ca91b957560>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of test_distinct_status_keys_do_not_collide __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7ca91b957ba0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of test_distinct_chat_ids_do_not_collide ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7ca91b9554e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137065755801984'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_status_update.py::test_first_call_sends_and_caches_message_id
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_status_update.py::test_second_call_edits_in_place
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_status_update.py::test_edit_failure_falls_back_to_fresh_send
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_status_update.py::test_distinct_status_keys_do_not_collide
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_status_update.py::test_distinct_chat_ids_do_not_collide
|
|
============================== 5 errors in 1.52s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_network_reconnect.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 15 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_network_reconnect.py EEEE [ 26%]
|
|
EEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
___ ERROR at setup of test_reconnect_self_schedules_on_start_polling_failure ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b2c3e20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_reconnect_does_not_self_schedule_when_fatal_error_set _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0ee5c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_reconnect_success_resets_error_count __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0eed40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_reconnect_triggers_fatal_after_max_retries _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0ef100>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_reconnect_drains_polling_request_only _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0ee8e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of test_reconnect_continues_if_drain_fails ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0ef6a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_initialize_still_runs_when_shutdown_fails _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0ed940>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_conflict_retry_also_drains_polling_connections _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0efce0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____________ ERROR at setup of test_drain_helper_noop_without_app _____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0eec00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_heartbeat_probe_no_op_when_polling_healthy _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0ef6a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_heartbeat_probe_reenters_ladder_when_updater_not_running _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0ee480>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_heartbeat_probe_reenters_ladder_when_get_me_times_out _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b0ef7e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_heartbeat_probe_reenters_ladder_on_get_me_network_error _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b1a84a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_heartbeat_probe_skips_when_already_fatal ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b1a8ae0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_reconnect_schedules_heartbeat_probe_on_success _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x70095b1a9120>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='123185486257744'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_self_schedules_on_start_polling_failure
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_does_not_self_schedule_when_fatal_error_set
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_success_resets_error_count
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_triggers_fatal_after_max_retries
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_drains_polling_request_only
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_continues_if_drain_fails
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_initialize_still_runs_when_shutdown_fails
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_conflict_retry_also_drains_polling_connections
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_drain_helper_noop_without_app
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_heartbeat_probe_no_op_when_polling_healthy
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_heartbeat_probe_reenters_ladder_when_updater_not_running
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_heartbeat_probe_reenters_ladder_when_get_me_times_out
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_heartbeat_probe_reenters_ladder_on_get_me_network_error
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_heartbeat_probe_skips_when_already_fatal
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network_reconnect.py::test_reconnect_schedules_heartbeat_probe_on_success
|
|
============================== 15 errors in 4.70s ==============================
|
|
|
|
--- plugins/platforms/feishu/tests/test_feishu_approval_buttons.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 35 items
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py ......... [ 25%]
|
|
........EEEEEEEEEEEEEEE... [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_drops_action_when_loop_not_ready _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa94551a60>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_returns_card_for_approve_action _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa94551550>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_returns_card_for_deny_action _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa94553140>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_ignores_missing_approval_id _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa94551430>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_no_card_for_non_approval_action _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa945515b0>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_falls_back_to_open_id_when_name_not_cached _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa94553f20>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_ignores_expired_cached_name _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa9472cc20>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_rejects_approval_click_from_unauthorized_user _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa9472ee10>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_rejects_approval_click_when_callback_chat_mismatches _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa9472dbe0>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_returns_card_for_update_prompt_yes _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa9472c650>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_returns_card_for_update_prompt_no _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa9471d1c0>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_ignores_missing_update_prompt_id _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa9471e0f0>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_already_resolved_update_prompt_returns_no_card _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa9471e450>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_update_prompt_schedule_failure_returns_no_card _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa9472c3e0>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
_ ERROR at setup of TestCardActionCallbackResponse.test_update_prompt_unauthorized_operator_returns_no_card _
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x78fa9486a330>
|
|
|
|
@pytest.fixture(autouse=False)
|
|
def _patch_callback_card_types(monkeypatch):
|
|
"""Provide real-ish P2CardActionTriggerResponse / CallBackCard for tests."""
|
|
> monkeypatch.setattr(feishu_module, "P2CardActionTriggerResponse", _FakeP2Response)
|
|
E AttributeError: <module 'hermes_agent_feishu' from '/home/ari/src/hermes-agent/main/plugins/platforms/feishu/hermes_agent_feishu/__init__.py'> has no attribute 'P2CardActionTriggerResponse'
|
|
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py:459: AttributeError
|
|
=============================== warnings summary ===============================
|
|
.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26: DeprecationWarning: There is no current event loop
|
|
loop = asyncio.get_event_loop()
|
|
|
|
.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_drops_action_when_loop_not_ready
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_returns_card_for_approve_action
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_returns_card_for_deny_action
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_ignores_missing_approval_id
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_no_card_for_non_approval_action
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_falls_back_to_open_id_when_name_not_cached
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_ignores_expired_cached_name
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_rejects_approval_click_from_unauthorized_user
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_rejects_approval_click_when_callback_chat_mismatches
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_returns_card_for_update_prompt_yes
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_returns_card_for_update_prompt_no
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_ignores_missing_update_prompt_id
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_already_resolved_update_prompt_returns_no_card
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_update_prompt_schedule_failure_returns_no_card
|
|
ERROR plugins/platforms/feishu/tests/test_feishu_approval_buttons.py::TestCardActionCallbackResponse::test_update_prompt_unauthorized_operator_returns_no_card
|
|
================== 20 passed, 4 warnings, 15 errors in 7.91s ===================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_text_batching.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 5 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_text_batching.py EEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestTextBatching.test_single_message_dispatched_after_delay _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e40c32f9080>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestTextBatching.test_split_messages_aggregated _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e40c32fbb00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestTextBatching.test_three_way_split_aggregated ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e40c32fb4c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestTextBatching.test_different_chats_not_merged ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e40c32fae80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestTextBatching.test_batch_cleans_up_after_flush ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e40c349ef20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='138816619362016'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batching.py::TestTextBatching::test_single_message_dispatched_after_delay
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batching.py::TestTextBatching::test_split_messages_aggregated
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batching.py::TestTextBatching::test_three_way_split_aggregated
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batching.py::TestTextBatching::test_different_chats_not_merged
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batching.py::TestTextBatching::test_batch_cleans_up_after_flush
|
|
============================== 5 errors in 1.59s ===============================
|
|
|
|
--- plugins/stt/tests/test_transcription.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 26 items
|
|
|
|
plugins/stt/tests/test_transcription.py EEEEEEEEEEEEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_________ ERROR at setup of TestGetProvider.test_local_when_available __________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 37
|
|
def test_local_when_available(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:37
|
|
___ ERROR at setup of TestGetProvider.test_explicit_local_no_cloud_fallback ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 42
|
|
def test_explicit_local_no_cloud_fallback(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:42
|
|
________ ERROR at setup of TestGetProvider.test_local_nothing_available ________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 52
|
|
def test_local_nothing_available(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:52
|
|
__________ ERROR at setup of TestGetProvider.test_openai_when_key_set __________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 60
|
|
def test_openai_when_key_set(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:60
|
|
__ ERROR at setup of TestGetProvider.test_explicit_openai_no_key_returns_none __
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 66
|
|
def test_explicit_openai_no_key_returns_none(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:66
|
|
_______ ERROR at setup of TestGetProvider.test_default_provider_is_local _______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 74
|
|
def test_default_provider_is_local(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:74
|
|
_____ ERROR at setup of TestGetProvider.test_disabled_config_returns_none ______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 79
|
|
def test_disabled_config_returns_none(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:79
|
|
__________ ERROR at setup of TestValidateAudioFile.test_missing_file ___________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 91
|
|
def test_missing_file(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:91
|
|
_______ ERROR at setup of TestValidateAudioFile.test_unsupported_format ________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 97
|
|
def test_unsupported_format(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:97
|
|
_____ ERROR at setup of TestValidateAudioFile.test_valid_file_returns_none _____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 105
|
|
def test_valid_file_returns_none(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:105
|
|
____________ ERROR at setup of TestValidateAudioFile.test_too_large ____________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 111
|
|
def test_too_large(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:111
|
|
_____ ERROR at setup of TestTranscribeLocal.test_successful_transcription ______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 135
|
|
def test_successful_transcription(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:135
|
|
___________ ERROR at setup of TestTranscribeLocal.test_not_installed ___________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 158
|
|
def test_not_installed(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:158
|
|
______________ ERROR at setup of TestTranscribeOpenAI.test_no_key ______________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 173
|
|
def test_no_key(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:173
|
|
_____ ERROR at setup of TestTranscribeOpenAI.test_successful_transcription _____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 180
|
|
def test_successful_transcription(self, monkeypatch, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:180
|
|
________ ERROR at setup of TestTranscribeAudio.test_dispatches_to_local ________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 204
|
|
def test_dispatches_to_local(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:204
|
|
_______ ERROR at setup of TestTranscribeAudio.test_dispatches_to_openai ________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 217
|
|
def test_dispatches_to_openai(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:217
|
|
_____ ERROR at setup of TestTranscribeAudio.test_no_provider_returns_error _____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 230
|
|
def test_no_provider_returns_error(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:230
|
|
_ ERROR at setup of TestTranscribeAudio.test_disabled_config_returns_disabled_error _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 242
|
|
def test_disabled_config_returns_disabled_error(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:242
|
|
____ ERROR at setup of TestTranscribeAudio.test_invalid_file_returns_error _____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 254
|
|
def test_invalid_file_returns_error(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:254
|
|
_ ERROR at setup of TestNormalizeLocalModel.test_openai_model_name_maps_to_default _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 269
|
|
def test_openai_model_name_maps_to_default(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:269
|
|
_ ERROR at setup of TestNormalizeLocalModel.test_groq_model_name_maps_to_default _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 273
|
|
def test_groq_model_name_maps_to_default(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:273
|
|
__ ERROR at setup of TestNormalizeLocalModel.test_valid_local_model_preserved __
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 277
|
|
def test_valid_local_model_preserved(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:277
|
|
_____ ERROR at setup of TestNormalizeLocalModel.test_none_maps_to_default ______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 282
|
|
def test_none_maps_to_default(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:282
|
|
_ ERROR at setup of TestNormalizeLocalModel.test_warning_emitted_for_cloud_model _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 286
|
|
def test_warning_emitted_for_cloud_model(self, caplog):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:286
|
|
_ ERROR at setup of TestNormalizeLocalModel.test_local_transcribe_normalises_model _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py, line 293
|
|
def test_local_transcribe_normalises_model(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _clear_openai_env, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription.py:293
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_local_when_available
|
|
ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_explicit_local_no_cloud_fallback
|
|
ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_local_nothing_available
|
|
ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_openai_when_key_set
|
|
ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_explicit_openai_no_key_returns_none
|
|
ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_default_provider_is_local
|
|
ERROR plugins/stt/tests/test_transcription.py::TestGetProvider::test_disabled_config_returns_none
|
|
ERROR plugins/stt/tests/test_transcription.py::TestValidateAudioFile::test_missing_file
|
|
ERROR plugins/stt/tests/test_transcription.py::TestValidateAudioFile::test_unsupported_format
|
|
ERROR plugins/stt/tests/test_transcription.py::TestValidateAudioFile::test_valid_file_returns_none
|
|
ERROR plugins/stt/tests/test_transcription.py::TestValidateAudioFile::test_too_large
|
|
ERROR plugins/stt/tests/test_transcription.py::TestTranscribeLocal::test_successful_transcription
|
|
ERROR plugins/stt/tests/test_transcription.py::TestTranscribeLocal::test_not_installed
|
|
ERROR plugins/stt/tests/test_transcription.py::TestTranscribeOpenAI::test_no_key
|
|
ERROR plugins/stt/tests/test_transcription.py::TestTranscribeOpenAI::test_successful_transcription
|
|
ERROR plugins/stt/tests/test_transcription.py::TestTranscribeAudio::test_dispatches_to_local
|
|
ERROR plugins/stt/tests/test_transcription.py::TestTranscribeAudio::test_dispatches_to_openai
|
|
ERROR plugins/stt/tests/test_transcription.py::TestTranscribeAudio::test_no_provider_returns_error
|
|
ERROR plugins/stt/tests/test_transcription.py::TestTranscribeAudio::test_disabled_config_returns_disabled_error
|
|
ERROR plugins/stt/tests/test_transcription.py::TestTranscribeAudio::test_invalid_file_returns_error
|
|
ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_openai_model_name_maps_to_default
|
|
ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_groq_model_name_maps_to_default
|
|
ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_valid_local_model_preserved
|
|
ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_none_maps_to_default
|
|
ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_warning_emitted_for_cloud_model
|
|
ERROR plugins/stt/tests/test_transcription.py::TestNormalizeLocalModel::test_local_transcribe_normalises_model
|
|
============================== 26 errors in 0.62s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 19 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py EEE [ 15%]
|
|
EEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestRealMentionsAreDetected.test_mention_at_start_of_message _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691be0b80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestRealMentionsAreDetected.test_mention_mid_sentence ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691be3600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestRealMentionsAreDetected.test_mention_at_end_of_message _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691be3ba0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestRealMentionsAreDetected.test_mention_in_caption _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691be3f60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestRealMentionsAreDetected.test_text_mention_entity_targets_bot _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691be2fc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSubstringFalsePositivesAreRejected.test_email_like_substring _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691be3420>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSubstringFalsePositivesAreRejected.test_hostname_substring _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691be3f60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSubstringFalsePositivesAreRejected.test_superstring_username _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691be1f80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSubstringFalsePositivesAreRejected.test_underscore_suffix_substring _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691bb8cc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSubstringFalsePositivesAreRejected.test_substring_inside_url_without_entity _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691bb8860>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSubstringFalsePositivesAreRejected.test_substring_inside_code_block_without_entity _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691bb9300>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSubstringFalsePositivesAreRejected.test_plain_text_with_no_at_sign _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691bb8b80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSubstringFalsePositivesAreRejected.test_email_substring_in_caption _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x77169259a520>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestEntityEdgeCases.test_mention_entity_for_different_username _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691be0180>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestEntityEdgeCases.test_text_mention_entity_for_different_user _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691bb9620>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestEntityEdgeCases.test_malformed_entity_with_negative_offset _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691bba340>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestEntityEdgeCases.test_malformed_entity_with_zero_length _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691bb9f80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of TestCaseInsensitivity.test_uppercase_mention ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691bba8e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestCaseInsensitivity.test_mixed_case_mention ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x771691bbaac0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130938822476144'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestRealMentionsAreDetected::test_mention_at_start_of_message
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestRealMentionsAreDetected::test_mention_mid_sentence
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestRealMentionsAreDetected::test_mention_at_end_of_message
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestRealMentionsAreDetected::test_mention_in_caption
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestRealMentionsAreDetected::test_text_mention_entity_targets_bot
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_email_like_substring
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_hostname_substring
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_superstring_username
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_underscore_suffix_substring
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_substring_inside_url_without_entity
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_substring_inside_code_block_without_entity
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_plain_text_with_no_at_sign
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestSubstringFalsePositivesAreRejected::test_email_substring_in_caption
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestEntityEdgeCases::test_mention_entity_for_different_username
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestEntityEdgeCases::test_text_mention_entity_for_different_user
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestEntityEdgeCases::test_malformed_entity_with_negative_offset
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestEntityEdgeCases::test_malformed_entity_with_zero_length
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestCaseInsensitivity::test_uppercase_mention
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py::TestCaseInsensitivity::test_mixed_case_mention
|
|
============================== 19 errors in 5.98s ==============================
|
|
|
|
--- plugins/stt/tests/test_transcription_tools.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 96 items
|
|
|
|
plugins/stt/tests/test_transcription_tools.py EEEEEEEEEEEEEEEEEEEEEEEEEE [ 27%]
|
|
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_________ ERROR at setup of TestGetProviderGroq.test_groq_when_key_set _________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 78
|
|
def test_groq_when_key_set(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:78
|
|
_____ ERROR at setup of TestGetProviderGroq.test_groq_explicit_no_fallback _____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 85
|
|
def test_groq_explicit_no_fallback(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:85
|
|
______ ERROR at setup of TestGetProviderGroq.test_groq_nothing_available _______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 92
|
|
def test_groq_nothing_available(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:92
|
|
_ ERROR at setup of TestGetProviderFallbackPriority.test_auto_detect_prefers_local _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 104
|
|
def test_auto_detect_prefers_local(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:104
|
|
_ ERROR at setup of TestGetProviderFallbackPriority.test_auto_detect_prefers_groq_over_openai _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 110
|
|
def test_auto_detect_prefers_groq_over_openai(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:110
|
|
_ ERROR at setup of TestGetProviderFallbackPriority.test_explicit_openai_no_key_returns_none _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 120
|
|
def test_explicit_openai_no_key_returns_none(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:120
|
|
_ ERROR at setup of TestGetProviderFallbackPriority.test_unknown_provider_passed_through _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 129
|
|
def test_unknown_provider_passed_through(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:129
|
|
_ ERROR at setup of TestGetProviderFallbackPriority.test_empty_config_defaults_to_local _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 133
|
|
def test_empty_config_defaults_to_local(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:133
|
|
_ ERROR at setup of TestExplicitProviderRespected.test_explicit_local_no_fallback_to_openai _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 147
|
|
def test_explicit_local_no_fallback_to_openai(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:147
|
|
_ ERROR at setup of TestExplicitProviderRespected.test_explicit_local_no_fallback_to_groq _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 159
|
|
def test_explicit_local_no_fallback_to_groq(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:159
|
|
_ ERROR at setup of TestExplicitProviderRespected.test_explicit_local_uses_local_command_fallback _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 168
|
|
def test_explicit_local_uses_local_command_fallback(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:168
|
|
_ ERROR at setup of TestExplicitProviderRespected.test_explicit_groq_no_fallback_to_openai _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 179
|
|
def test_explicit_groq_no_fallback_to_openai(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:179
|
|
_ ERROR at setup of TestExplicitProviderRespected.test_explicit_openai_no_fallback_to_groq _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 188
|
|
def test_explicit_openai_no_fallback_to_groq(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:188
|
|
_ ERROR at setup of TestExplicitProviderRespected.test_auto_detect_still_falls_back_to_cloud _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 198
|
|
def test_auto_detect_still_falls_back_to_cloud(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:198
|
|
_ ERROR at setup of TestExplicitProviderRespected.test_auto_detect_prefers_groq_over_openai _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 210
|
|
def test_auto_detect_prefers_groq_over_openai(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:210
|
|
_______________ ERROR at setup of TestTranscribeGroq.test_no_key _______________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 226
|
|
def test_no_key(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:226
|
|
____ ERROR at setup of TestTranscribeGroq.test_openai_package_not_installed ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 233
|
|
def test_openai_package_not_installed(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:233
|
|
______ ERROR at setup of TestTranscribeGroq.test_successful_transcription ______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 241
|
|
def test_successful_transcription(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:241
|
|
________ ERROR at setup of TestTranscribeGroq.test_whitespace_stripped _________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 257
|
|
def test_whitespace_stripped(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:257
|
|
_________ ERROR at setup of TestTranscribeGroq.test_uses_groq_base_url _________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 270
|
|
def test_uses_groq_base_url(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:270
|
|
_____ ERROR at setup of TestTranscribeGroq.test_api_error_returns_failure ______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 284
|
|
def test_api_error_returns_failure(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:284
|
|
__________ ERROR at setup of TestTranscribeGroq.test_permission_error __________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 299
|
|
def test_permission_error(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:299
|
|
_ ERROR at setup of TestTranscribeOpenAIExtended.test_openai_package_not_installed _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 319
|
|
def test_openai_package_not_installed(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:319
|
|
___ ERROR at setup of TestTranscribeOpenAIExtended.test_uses_openai_base_url ___
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 327
|
|
def test_uses_openai_base_url(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:327
|
|
___ ERROR at setup of TestTranscribeOpenAIExtended.test_whitespace_stripped ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 341
|
|
def test_whitespace_stripped(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:341
|
|
_____ ERROR at setup of TestTranscribeOpenAIExtended.test_permission_error _____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 355
|
|
def test_permission_error(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:355
|
|
_ ERROR at setup of TestTranscribeLocalCommand.test_auto_detects_local_whisper_binary _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 372
|
|
def test_auto_detects_local_whisper_binary(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:372
|
|
_ ERROR at setup of TestTranscribeLocalCommand.test_command_fallback_with_template _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 385
|
|
def test_command_fallback_with_template(self, monkeypatch, sample_ogg, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:385
|
|
_ ERROR at setup of TestTranscribeLocalExtended.test_model_reuse_on_second_call _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 437
|
|
def test_model_reuse_on_second_call(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:437
|
|
_ ERROR at setup of TestTranscribeLocalExtended.test_model_reloaded_on_change __
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 463
|
|
def test_model_reloaded_on_change(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:463
|
|
_ ERROR at setup of TestTranscribeLocalExtended.test_exception_returns_failure _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 488
|
|
def test_exception_returns_failure(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:488
|
|
_ ERROR at setup of TestTranscribeLocalExtended.test_multiple_segments_joined __
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 503
|
|
def test_multiple_segments_joined(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:503
|
|
_ ERROR at setup of TestTranscribeLocalExtended.test_load_time_cuda_lib_failure_falls_back_to_cpu _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 527
|
|
def test_load_time_cuda_lib_failure_falls_back_to_cpu(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:527
|
|
_ ERROR at setup of TestTranscribeLocalExtended.test_runtime_cuda_lib_failure_evicts_cache_and_retries_on_cpu _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 560
|
|
def test_runtime_cuda_lib_failure_evicts_cache_and_retries_on_cpu(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:560
|
|
_ ERROR at setup of TestTranscribeLocalExtended.test_cuda_out_of_memory_does_not_trigger_cpu_fallback _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 603
|
|
def test_cuda_out_of_memory_does_not_trigger_cpu_fallback(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:603
|
|
__ ERROR at setup of TestModelAutoCorrection.test_groq_corrects_openai_model ___
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 628
|
|
def test_groq_corrects_openai_model(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:628
|
|
_ ERROR at setup of TestModelAutoCorrection.test_groq_corrects_gpt4o_transcribe _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 642
|
|
def test_groq_corrects_gpt4o_transcribe(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:642
|
|
__ ERROR at setup of TestModelAutoCorrection.test_openai_corrects_groq_model ___
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 656
|
|
def test_openai_corrects_groq_model(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:656
|
|
_ ERROR at setup of TestModelAutoCorrection.test_openai_corrects_distil_whisper _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 670
|
|
def test_openai_corrects_distil_whisper(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:670
|
|
_ ERROR at setup of TestModelAutoCorrection.test_compatible_groq_model_not_overridden _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 684
|
|
def test_compatible_groq_model_not_overridden(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:684
|
|
_ ERROR at setup of TestModelAutoCorrection.test_compatible_openai_model_not_overridden _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 698
|
|
def test_compatible_openai_model_not_overridden(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:698
|
|
_ ERROR at setup of TestModelAutoCorrection.test_unknown_model_passes_through_groq _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 712
|
|
def test_unknown_model_passes_through_groq(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:712
|
|
_ ERROR at setup of TestModelAutoCorrection.test_unknown_model_passes_through_openai _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 727
|
|
def test_unknown_model_passes_through_openai(self, monkeypatch, sample_wav):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:727
|
|
___ ERROR at setup of TestLoadSttConfig.test_returns_dict_when_import_fails ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 747
|
|
def test_returns_dict_when_import_fails(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:747
|
|
_______ ERROR at setup of TestLoadSttConfig.test_real_load_returns_dict ________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 753
|
|
def test_real_load_returns_dict(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:753
|
|
_ ERROR at setup of TestValidateAudioFileEdgeCases.test_directory_is_not_a_file _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 766
|
|
def test_directory_is_not_a_file(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:766
|
|
_ ERROR at setup of TestValidateAudioFileEdgeCases.test_symlink_with_supported_extension_is_rejected _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 776
|
|
def test_symlink_with_supported_extension_is_rejected(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:776
|
|
______ ERROR at setup of TestValidateAudioFileEdgeCases.test_stat_oserror ______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 793
|
|
def test_stat_oserror(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:793
|
|
_ ERROR at setup of TestValidateAudioFileEdgeCases.test_all_supported_formats_accepted _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 806
|
|
def test_all_supported_formats_accepted(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:806
|
|
_ ERROR at setup of TestValidateAudioFileEdgeCases.test_case_insensitive_extension _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 813
|
|
def test_case_insensitive_extension(self, tmp_path):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:813
|
|
____ ERROR at setup of TestTranscribeAudioDispatch.test_dispatches_to_groq _____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 825
|
|
def test_dispatches_to_groq(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:825
|
|
____ ERROR at setup of TestTranscribeAudioDispatch.test_dispatches_to_local ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 837
|
|
def test_dispatches_to_local(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:837
|
|
___ ERROR at setup of TestTranscribeAudioDispatch.test_dispatches_to_openai ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 848
|
|
def test_dispatches_to_openai(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:848
|
|
_ ERROR at setup of TestTranscribeAudioDispatch.test_no_provider_returns_error _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 859
|
|
def test_no_provider_returns_error(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:859
|
|
_ ERROR at setup of TestTranscribeAudioDispatch.test_explicit_openai_no_key_returns_error _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 870
|
|
def test_explicit_openai_no_key_returns_error(self, monkeypatch, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:870
|
|
_ ERROR at setup of TestTranscribeAudioDispatch.test_invalid_file_short_circuits _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 884
|
|
def test_invalid_file_short_circuits(self):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:884
|
|
_ ERROR at setup of TestTranscribeAudioDispatch.test_model_override_passed_to_groq _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 890
|
|
def test_model_override_passed_to_groq(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:890
|
|
_ ERROR at setup of TestTranscribeAudioDispatch.test_model_override_passed_to_local _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 901
|
|
def test_model_override_passed_to_local(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:901
|
|
_ ERROR at setup of TestTranscribeAudioDispatch.test_default_model_used_when_none _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 911
|
|
def test_default_model_used_when_none(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:911
|
|
__ ERROR at setup of TestTranscribeAudioDispatch.test_config_local_model_used __
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 921
|
|
def test_config_local_model_used(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:921
|
|
_ ERROR at setup of TestTranscribeAudioDispatch.test_config_openai_model_used __
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 932
|
|
def test_config_openai_model_used(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:932
|
|
_____________ ERROR at setup of TestTranscribeMistral.test_no_key ______________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 963
|
|
def test_no_key(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:963
|
|
____ ERROR at setup of TestTranscribeMistral.test_successful_transcription _____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 970
|
|
def test_successful_transcription(self, monkeypatch, sample_ogg, mock_mistral_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:970
|
|
____ ERROR at setup of TestTranscribeMistral.test_api_error_returns_failure ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 986
|
|
def test_api_error_returns_failure(self, monkeypatch, sample_ogg, mock_mistral_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:986
|
|
________ ERROR at setup of TestTranscribeMistral.test_permission_error _________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 997
|
|
def test_permission_error(self, monkeypatch, sample_ogg, mock_mistral_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:997
|
|
_ ERROR at setup of TestGetProviderMistral.test_mistral_when_key_and_sdk_available _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1021
|
|
def test_mistral_when_key_and_sdk_available(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1021
|
|
_ ERROR at setup of TestGetProviderMistral.test_mistral_explicit_no_key_returns_none _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1028
|
|
def test_mistral_explicit_no_key_returns_none(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1028
|
|
_ ERROR at setup of TestGetProviderMistral.test_mistral_explicit_no_sdk_returns_none _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1035
|
|
def test_mistral_explicit_no_sdk_returns_none(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1035
|
|
___ ERROR at setup of TestGetProviderMistral.test_auto_detect_skips_mistral ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1042
|
|
def test_auto_detect_skips_mistral(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1042
|
|
_ ERROR at setup of TestGetProviderMistral.test_auto_detect_openai_preferred_over_mistral _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1060
|
|
def test_auto_detect_openai_preferred_over_mistral(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1060
|
|
_ ERROR at setup of TestGetProviderMistral.test_auto_detect_groq_preferred_over_mistral _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1072
|
|
def test_auto_detect_groq_preferred_over_mistral(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1072
|
|
_ ERROR at setup of TestGetProviderMistral.test_auto_detect_skips_mistral_without_sdk _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1083
|
|
def test_auto_detect_skips_mistral_without_sdk(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1083
|
|
_ ERROR at setup of TestTranscribeAudioMistralDispatch.test_dispatches_to_mistral _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1102
|
|
def test_dispatches_to_mistral(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1102
|
|
_ ERROR at setup of TestTranscribeAudioMistralDispatch.test_config_mistral_model_used _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1114
|
|
def test_config_mistral_model_used(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1114
|
|
_ ERROR at setup of TestTranscribeAudioMistralDispatch.test_model_override_passed_to_mistral _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1125
|
|
def test_model_override_passed_to_mistral(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1125
|
|
_______________ ERROR at setup of TestTranscribeXAI.test_no_key ________________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1151
|
|
def test_no_key(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1151
|
|
______ ERROR at setup of TestTranscribeXAI.test_successful_transcription _______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1158
|
|
def test_successful_transcription(self, monkeypatch, sample_ogg, mock_xai_http_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1158
|
|
_________ ERROR at setup of TestTranscribeXAI.test_whitespace_stripped _________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1178
|
|
def test_whitespace_stripped(self, monkeypatch, sample_ogg, mock_xai_http_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1178
|
|
______ ERROR at setup of TestTranscribeXAI.test_api_error_returns_failure ______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1192
|
|
def test_api_error_returns_failure(self, monkeypatch, sample_ogg, mock_xai_http_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1192
|
|
__ ERROR at setup of TestTranscribeXAI.test_empty_transcript_returns_failure ___
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1209
|
|
def test_empty_transcript_returns_failure(self, monkeypatch, sample_ogg, mock_xai_http_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1209
|
|
__________ ERROR at setup of TestTranscribeXAI.test_permission_error ___________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1224
|
|
def test_permission_error(self, monkeypatch, sample_ogg, mock_xai_http_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1224
|
|
____ ERROR at setup of TestTranscribeXAI.test_network_error_returns_failure ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1235
|
|
def test_network_error_returns_failure(self, monkeypatch, sample_ogg, mock_xai_http_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1235
|
|
______ ERROR at setup of TestTranscribeXAI.test_sends_language_and_format ______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1246
|
|
def test_sends_language_and_format(self, monkeypatch, sample_ogg, mock_xai_http_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1246
|
|
___________ ERROR at setup of TestTranscribeXAI.test_custom_base_url ___________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1266
|
|
def test_custom_base_url(self, monkeypatch, sample_ogg, mock_xai_http_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1266
|
|
____ ERROR at setup of TestTranscribeXAI.test_diarize_sent_when_configured _____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1283
|
|
def test_diarize_sent_when_configured(self, monkeypatch, sample_ogg, mock_xai_http_module):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1283
|
|
__________ ERROR at setup of TestGetProviderXAI.test_xai_when_key_set __________
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1307
|
|
def test_xai_when_key_set(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1307
|
|
__ ERROR at setup of TestGetProviderXAI.test_xai_explicit_no_key_returns_none __
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1312
|
|
def test_xai_explicit_no_key_returns_none(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1312
|
|
___ ERROR at setup of TestGetProviderXAI.test_auto_detect_xai_after_mistral ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1318
|
|
def test_auto_detect_xai_after_mistral(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1318
|
|
_ ERROR at setup of TestGetProviderXAI.test_auto_detect_mistral_skipped_xai_wins _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1332
|
|
def test_auto_detect_mistral_skipped_xai_wins(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1332
|
|
__ ERROR at setup of TestGetProviderXAI.test_auto_detect_no_key_returns_none ___
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1351
|
|
def test_auto_detect_no_key_returns_none(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1351
|
|
___ ERROR at setup of TestTranscribeAudioXAIDispatch.test_dispatches_to_xai ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1367
|
|
def test_dispatches_to_xai(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1367
|
|
_ ERROR at setup of TestTranscribeAudioXAIDispatch.test_model_default_is_grok_stt _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1379
|
|
def test_model_default_is_grok_stt(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1379
|
|
_ ERROR at setup of TestTranscribeAudioXAIDispatch.test_model_override_passed_to_xai _
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1389
|
|
def test_model_override_passed_to_xai(self, sample_ogg):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1389
|
|
_ ERROR at setup of TestShellSafety.test_auto_detected_template_is_shlex_safe __
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1404
|
|
def test_auto_detected_template_is_shlex_safe(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1404
|
|
___ ERROR at setup of TestShellSafety.test_env_var_template_uses_shell_path ____
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1425
|
|
def test_env_var_template_uses_shell_path(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1425
|
|
_______ ERROR at setup of TestShellSafety.test_no_env_var_uses_list_mode _______
|
|
file /home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py, line 1433
|
|
def test_no_env_var_uses_list_mode(self, monkeypatch):
|
|
E fixture 'disable_lazy_stt_install' not found
|
|
> available fixtures: _class_scoped_runner, _ensure_current_event_loop, _function_scoped_runner, _hermetic_environment, _isolate_hermes_home, _live_system_guard, _module_scoped_runner, _package_scoped_runner, _seed_anthropic_registry, _session_scoped_runner, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_env, doctest_namespace, event_loop_policy, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, mock_config, mock_mistral_module, mock_xai_http_module, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, sample_ogg, sample_wav, subtests, tmp_dir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
|
|
> use 'pytest --fixtures [testpath]' for help on them.
|
|
|
|
/home/ari/src/hermes-agent/main/plugins/stt/tests/test_transcription_tools.py:1433
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderGroq::test_groq_when_key_set
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderGroq::test_groq_explicit_no_fallback
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderGroq::test_groq_nothing_available
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderFallbackPriority::test_auto_detect_prefers_local
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderFallbackPriority::test_auto_detect_prefers_groq_over_openai
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderFallbackPriority::test_explicit_openai_no_key_returns_none
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderFallbackPriority::test_unknown_provider_passed_through
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderFallbackPriority::test_empty_config_defaults_to_local
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestExplicitProviderRespected::test_explicit_local_no_fallback_to_openai
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestExplicitProviderRespected::test_explicit_local_no_fallback_to_groq
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestExplicitProviderRespected::test_explicit_local_uses_local_command_fallback
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestExplicitProviderRespected::test_explicit_groq_no_fallback_to_openai
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestExplicitProviderRespected::test_explicit_openai_no_fallback_to_groq
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestExplicitProviderRespected::test_auto_detect_still_falls_back_to_cloud
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestExplicitProviderRespected::test_auto_detect_prefers_groq_over_openai
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeGroq::test_no_key
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeGroq::test_openai_package_not_installed
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeGroq::test_successful_transcription
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeGroq::test_whitespace_stripped
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeGroq::test_uses_groq_base_url
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeGroq::test_api_error_returns_failure
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeGroq::test_permission_error
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeOpenAIExtended::test_openai_package_not_installed
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeOpenAIExtended::test_uses_openai_base_url
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeOpenAIExtended::test_whitespace_stripped
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeOpenAIExtended::test_permission_error
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeLocalCommand::test_auto_detects_local_whisper_binary
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeLocalCommand::test_command_fallback_with_template
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeLocalExtended::test_model_reuse_on_second_call
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeLocalExtended::test_model_reloaded_on_change
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeLocalExtended::test_exception_returns_failure
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeLocalExtended::test_multiple_segments_joined
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeLocalExtended::test_load_time_cuda_lib_failure_falls_back_to_cpu
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeLocalExtended::test_runtime_cuda_lib_failure_evicts_cache_and_retries_on_cpu
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeLocalExtended::test_cuda_out_of_memory_does_not_trigger_cpu_fallback
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestModelAutoCorrection::test_groq_corrects_openai_model
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestModelAutoCorrection::test_groq_corrects_gpt4o_transcribe
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestModelAutoCorrection::test_openai_corrects_groq_model
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestModelAutoCorrection::test_openai_corrects_distil_whisper
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestModelAutoCorrection::test_compatible_groq_model_not_overridden
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestModelAutoCorrection::test_compatible_openai_model_not_overridden
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestModelAutoCorrection::test_unknown_model_passes_through_groq
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestModelAutoCorrection::test_unknown_model_passes_through_openai
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestLoadSttConfig::test_returns_dict_when_import_fails
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestLoadSttConfig::test_real_load_returns_dict
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestValidateAudioFileEdgeCases::test_directory_is_not_a_file
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestValidateAudioFileEdgeCases::test_symlink_with_supported_extension_is_rejected
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestValidateAudioFileEdgeCases::test_stat_oserror
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestValidateAudioFileEdgeCases::test_all_supported_formats_accepted
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestValidateAudioFileEdgeCases::test_case_insensitive_extension
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_dispatches_to_groq
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_dispatches_to_local
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_dispatches_to_openai
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_no_provider_returns_error
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_explicit_openai_no_key_returns_error
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_invalid_file_short_circuits
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_model_override_passed_to_groq
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_model_override_passed_to_local
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_default_model_used_when_none
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_config_local_model_used
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioDispatch::test_config_openai_model_used
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeMistral::test_no_key
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeMistral::test_successful_transcription
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeMistral::test_api_error_returns_failure
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeMistral::test_permission_error
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_mistral_when_key_and_sdk_available
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_mistral_explicit_no_key_returns_none
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_mistral_explicit_no_sdk_returns_none
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_auto_detect_skips_mistral
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_auto_detect_openai_preferred_over_mistral
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_auto_detect_groq_preferred_over_mistral
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderMistral::test_auto_detect_skips_mistral_without_sdk
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioMistralDispatch::test_dispatches_to_mistral
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioMistralDispatch::test_config_mistral_model_used
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioMistralDispatch::test_model_override_passed_to_mistral
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_no_key
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_successful_transcription
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_whitespace_stripped
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_api_error_returns_failure
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_empty_transcript_returns_failure
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_permission_error
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_network_error_returns_failure
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_sends_language_and_format
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_custom_base_url
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeXAI::test_diarize_sent_when_configured
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderXAI::test_xai_when_key_set
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderXAI::test_xai_explicit_no_key_returns_none
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderXAI::test_auto_detect_xai_after_mistral
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderXAI::test_auto_detect_mistral_skipped_xai_wins
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestGetProviderXAI::test_auto_detect_no_key_returns_none
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioXAIDispatch::test_dispatches_to_xai
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioXAIDispatch::test_model_default_is_grok_stt
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestTranscribeAudioXAIDispatch::test_model_override_passed_to_xai
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestShellSafety::test_auto_detected_template_is_shlex_safe
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestShellSafety::test_env_var_template_uses_shell_path
|
|
ERROR plugins/stt/tests/test_transcription_tools.py::TestShellSafety::test_no_env_var_uses_list_mode
|
|
============================== 96 errors in 1.74s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_webhook_secret.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 5 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_webhook_secret.py EEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestTelegramWebhookSecretRequired.test_webhook_branch_checks_secret _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7151ed58ac00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramWebhookSecretRequired.test_guard_raises_runtime_error _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7151ed5ed620>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramWebhookSecretRequired.test_guard_message_includes_advisory_link _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7151ed5ede40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramWebhookSecretRequired.test_guard_message_explains_remediation _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7151ed5ee2a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramWebhookSecretRequired.test_polling_branch_has_no_secret_guard _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7151ed5ece00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='124596688239840'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_webhook_secret.py::TestTelegramWebhookSecretRequired::test_webhook_branch_checks_secret
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_webhook_secret.py::TestTelegramWebhookSecretRequired::test_guard_raises_runtime_error
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_webhook_secret.py::TestTelegramWebhookSecretRequired::test_guard_message_includes_advisory_link
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_webhook_secret.py::TestTelegramWebhookSecretRequired::test_guard_message_explains_remediation
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_webhook_secret.py::TestTelegramWebhookSecretRequired::test_polling_branch_has_no_secret_guard
|
|
============================== 5 errors in 2.17s ===============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 12 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py EEEEEE [ 50%]
|
|
EEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
________ ERROR at setup of TestEnvFloatClamped.test_default_when_unset _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702ca50720>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of TestEnvFloatClamped.test_parses_valid_value _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702ca536a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestEnvFloatClamped.test_falls_back_to_default_on_garbage __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702ca53560>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____________ ERROR at setup of TestEnvFloatClamped.test_rejects_nan ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702ca52ca0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____________ ERROR at setup of TestEnvFloatClamped.test_rejects_inf ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702ca52160>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of TestEnvFloatClamped.test_clamps_below_min __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702ca53920>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of TestEnvFloatClamped.test_clamps_above_max __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702ca52b60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestAdaptiveTextBatchTiers.test_class_constants_are_sensible _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702c5d0040>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestAdaptiveTextBatchTiers.test_fast_tier_uses_min_with_configured_cap _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702c5d09a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestAdaptiveTextBatchTiers.test_short_tier_uses_min_with_configured_cap _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702c5d04a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestAdaptiveTextBatchTiers.test_long_message_uses_full_cap _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702c5d16c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestAdaptiveTextBatchTiers.test_split_threshold_takes_priority_over_fast_tier _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72702c5d0fe0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125826121565680'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_default_when_unset
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_parses_valid_value
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_falls_back_to_default_on_garbage
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_rejects_nan
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_rejects_inf
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_clamps_below_min
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestEnvFloatClamped::test_clamps_above_max
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestAdaptiveTextBatchTiers::test_class_constants_are_sensible
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestAdaptiveTextBatchTiers::test_fast_tier_uses_min_with_configured_cap
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestAdaptiveTextBatchTiers::test_short_tier_uses_min_with_configured_cap
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestAdaptiveTextBatchTiers::test_long_message_uses_full_cap
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py::TestAdaptiveTextBatchTiers::test_split_threshold_takes_priority_over_fast_tier
|
|
============================== 12 errors in 4.07s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_reactions.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 21 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_reactions.py EEEEEEEEEEEE [ 57%]
|
|
EEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_____________ ERROR at setup of test_reactions_disabled_by_default _____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca49fa0c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____________ ERROR at setup of test_reactions_enabled_when_set_true ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca49fb9c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______________ ERROR at setup of test_reactions_enabled_with_1 ________________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca49fad40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____________ ERROR at setup of test_reactions_disabled_with_false _____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fc680>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______________ ERROR at setup of test_reactions_disabled_with_0 _______________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca49fb9c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______________ ERROR at setup of test_reactions_disabled_with_no _______________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca4b99bc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______________ ERROR at setup of test_set_reaction_calls_bot_api _______________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca4b9a160>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of test_set_reaction_returns_false_without_bot _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fd4e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_set_reaction_handles_api_error_gracefully _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fd800>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of test_on_processing_start_adds_eyes_reaction _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fdb20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_on_processing_start_skipped_when_disabled _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fd260>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of test_on_processing_start_handles_missing_ids ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fe0c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____________ ERROR at setup of test_on_processing_complete_success _____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fd8a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____________ ERROR at setup of test_on_processing_complete_failure _____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fe340>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_on_processing_complete_skipped_when_disabled ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fe700>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of test_on_processing_complete_cancelled_clears_reaction ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fed40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_on_processing_complete_cancelled_skipped_when_disabled _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48ff060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_clear_reactions_handles_api_error_gracefully ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48ff4c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_clear_reactions_returns_false_without_bot _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48ff7e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of test_config_bridges_telegram_reactions ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48fefc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_config_reactions_env_takes_precedence _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x786ca48ffd80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132408013748320'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_disabled_by_default
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_enabled_when_set_true
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_enabled_with_1
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_disabled_with_false
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_disabled_with_0
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_reactions_disabled_with_no
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_set_reaction_calls_bot_api
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_set_reaction_returns_false_without_bot
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_set_reaction_handles_api_error_gracefully
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_start_adds_eyes_reaction
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_start_skipped_when_disabled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_start_handles_missing_ids
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_complete_success
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_complete_failure
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_complete_skipped_when_disabled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_complete_cancelled_clears_reaction
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_on_processing_complete_cancelled_skipped_when_disabled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_clear_reactions_handles_api_error_gracefully
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_clear_reactions_returns_false_without_bot
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_config_bridges_telegram_reactions
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reactions.py::test_config_reactions_env_takes_precedence
|
|
============================== 21 errors in 7.81s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 22 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py E [ 4%]
|
|
EEEEEEEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of test_transient_errors_are_classified_as_transient[httpx.ConnectError: Connection refused] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18dce980>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_transient_errors_are_classified_as_transient[telegram.error.NetworkError: httpx.ConnectError] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df5b20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_transient_errors_are_classified_as_transient[NetworkError: remote end closed connection without response] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df6160>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_transient_errors_are_classified_as_transient[httpx.ReadTimeout: read timed out] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df4fe0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_transient_errors_are_classified_as_transient[ReadTimeout: timed out] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd19cecf40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_transient_errors_are_classified_as_transient[Server disconnected] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18f8ba60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_transient_errors_are_classified_as_transient[Temporarily unavailable] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df56c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_transient_errors_are_classified_as_transient[Temporary failure in name resolution] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df6b60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_transient_errors_are_classified_as_transient[Connection error: failed to connect] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df6de0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_permanent_errors_are_not_transient[Bad Request: message to edit not found] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df6980>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_permanent_errors_are_not_transient[Bad Request: message can't be edited] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df7380>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_permanent_errors_are_not_transient[Bad Request: not enough rights to edit the message] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df7560>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_permanent_errors_are_not_transient[Bad Request: MESSAGE_ID_INVALID] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18dce020>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_permanent_errors_are_not_transient[flood_control:30.0] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18dce0c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_permanent_errors_are_not_transient[Forbidden: bot was blocked by the user] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df7e20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of test_send_result_retryable_default_is_false _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df7ec0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_send_result_retryable_can_be_set_true _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df6a20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_send_result_retryable_false_for_permanent _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df5120>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_transient_failure_keeps_can_edit_true _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18df76a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_permanent_failure_sets_can_edit_false _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18cc0e00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of test_multiple_transient_then_success_keeps_can_edit_true __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18cc09a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of test_flood_control_sets_can_edit_false ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x75cd18cc02c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='129523745093248'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[httpx.ConnectError: Connection refused]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[telegram.error.NetworkError: httpx.ConnectError]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[NetworkError: remote end closed connection without response]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[httpx.ReadTimeout: read timed out]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[ReadTimeout: timed out]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[Server disconnected]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[Temporarily unavailable]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[Temporary failure in name resolution]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_errors_are_classified_as_transient[Connection error: failed to connect]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[Bad Request: message to edit not found]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[Bad Request: message can't be edited]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[Bad Request: not enough rights to edit the message]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[Bad Request: MESSAGE_ID_INVALID]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[flood_control:30.0]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_errors_are_not_transient[Forbidden: bot was blocked by the user]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_send_result_retryable_default_is_false
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_send_result_retryable_can_be_set_true
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_send_result_retryable_false_for_permanent
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_transient_failure_keeps_can_edit_true
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_permanent_failure_sets_can_edit_false
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_multiple_transient_then_success_keeps_can_edit_true
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py::test_flood_control_sets_can_edit_false
|
|
============================== 22 errors in 8.55s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_documents.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 41 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_documents.py EEEEEEEEEEEE [ 29%]
|
|
EEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestDocumentTypeDetection.test_document_detected_explicitly _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x79691181ee80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestDocumentTypeDetection.test_fallback_is_document _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796911865da0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestDocumentDownloadBlock.test_supported_pdf_is_cached ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796911866660>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDocumentDownloadBlock.test_supported_txt_injects_content _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118653a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDocumentDownloadBlock.test_supported_md_injects_content _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796911866ac0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDocumentDownloadBlock.test_caption_preserved_with_injection _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796911865a80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestDocumentDownloadBlock.test_zip_document_cached _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796911867100>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDocumentDownloadBlock.test_png_document_is_routed_as_image _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796911867600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDocumentDownloadBlock.test_spoofed_png_document_falls_back_with_error _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118660c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestDocumentDownloadBlock.test_oversized_file_rejected ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796911866fc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestDocumentDownloadBlock.test_none_file_size_rejected ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796911867e20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDocumentDownloadBlock.test_missing_filename_uses_mime_lookup _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796911867b00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDocumentDownloadBlock.test_missing_filename_and_mime_rejected _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x79691181e700>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDocumentDownloadBlock.test_unicode_decode_error_handled _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969121a1da0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestDocumentDownloadBlock.test_text_injection_capped ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118e8540>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDocumentDownloadBlock.test_download_exception_handled __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118e8d60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestVideoDownloadBlock.test_native_video_is_cached _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118e8ea0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestVideoDownloadBlock.test_mp4_document_is_treated_as_video _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118e93a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMediaGroups.test_non_album_photo_burst_is_buffered_and_combined _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x79691181e700>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMediaGroups.test_photo_album_is_buffered_and_combined __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796911867240>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestMediaGroups.test_disconnect_cancels_pending_media_group_flush _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x796913183e20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestSendVoice.test_flac_falls_back_to_document _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118e8180>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestSendVoice.test_wav_falls_back_to_document ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118e9800>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of TestSendVoice.test_mp3_routes_to_send_audio _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118e9620>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of TestSendDocument.test_send_document_success _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118e8540>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestSendDocument.test_send_document_custom_filename _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118ea2a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestSendDocument.test_send_document_file_not_found _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118e8860>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSendDocument.test_send_document_workspace_path_has_docker_hint _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118ea660>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSendDocument.test_send_document_outputs_path_has_docker_hint _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118eaac0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestSendDocument.test_send_document_not_connected ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118ead40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestSendDocument.test_send_document_caption_truncated ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118eb060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestSendDocument.test_send_document_api_error_falls_back __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118eb1a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of TestSendDocument.test_send_document_reply_to ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118eb2e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestSendDocument.test_send_document_thread_id ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118eafc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramPhotoBatching.test_flush_photo_batch_does_not_drop_newer_scheduled_task _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118ebc40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramPhotoBatching.test_disconnect_cancels_pending_photo_batch_tasks _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118ebec0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of TestSendVideo.test_send_video_success ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118ebd80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of TestSendVideo.test_send_video_file_not_found ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118ead40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSendVideo.test_send_video_workspace_path_has_docker_hint _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118eb2e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of TestSendVideo.test_send_video_not_connected _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118ebec0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of TestSendVideo.test_send_video_thread_id ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7969118ead40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='133492173787344'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentTypeDetection::test_document_detected_explicitly
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentTypeDetection::test_fallback_is_document
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_supported_pdf_is_cached
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_supported_txt_injects_content
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_supported_md_injects_content
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_caption_preserved_with_injection
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_zip_document_cached
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_png_document_is_routed_as_image
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_spoofed_png_document_falls_back_with_error
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_oversized_file_rejected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_none_file_size_rejected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_missing_filename_uses_mime_lookup
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_missing_filename_and_mime_rejected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_unicode_decode_error_handled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_text_injection_capped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestDocumentDownloadBlock::test_download_exception_handled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestVideoDownloadBlock::test_native_video_is_cached
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestVideoDownloadBlock::test_mp4_document_is_treated_as_video
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestMediaGroups::test_non_album_photo_burst_is_buffered_and_combined
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestMediaGroups::test_photo_album_is_buffered_and_combined
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestMediaGroups::test_disconnect_cancels_pending_media_group_flush
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVoice::test_flac_falls_back_to_document
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVoice::test_wav_falls_back_to_document
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVoice::test_mp3_routes_to_send_audio
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_success
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_custom_filename
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_file_not_found
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_workspace_path_has_docker_hint
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_outputs_path_has_docker_hint
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_not_connected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_caption_truncated
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_api_error_falls_back
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_reply_to
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendDocument::test_send_document_thread_id
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestTelegramPhotoBatching::test_flush_photo_batch_does_not_drop_newer_scheduled_task
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestTelegramPhotoBatching::test_disconnect_cancels_pending_photo_batch_tasks
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVideo::test_send_video_success
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVideo::test_send_video_file_not_found
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVideo::test_send_video_workspace_path_has_docker_hint
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVideo::test_send_video_not_connected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_documents.py::TestSendVideo::test_send_video_thread_id
|
|
============================= 41 errors in 11.83s ==============================
|
|
|
|
--- plugins/platforms/slack/tests/test_slack_mention.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 55 items
|
|
|
|
plugins/platforms/slack/tests/test_slack_mention.py .................... [ 36%]
|
|
................FF................. [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
_______ test_explicit_top_level_slack_enabled_false_wins_over_env_token ________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x76b5b9bf5ca0>
|
|
tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-42033/test_explicit_top_level_slack_0')
|
|
|
|
def test_explicit_top_level_slack_enabled_false_wins_over_env_token(monkeypatch, tmp_path):
|
|
from gateway.config import load_gateway_config
|
|
|
|
hermes_home = tmp_path / ".hermes"
|
|
hermes_home.mkdir()
|
|
(hermes_home / "config.yaml").write_text(
|
|
"slack:\n"
|
|
" enabled: false\n"
|
|
" require_mention: false\n",
|
|
encoding="utf-8",
|
|
)
|
|
|
|
monkeypatch.setenv("HERMES_HOME", str(hermes_home))
|
|
monkeypatch.setenv("SLACK_BOT_TOKEN", "xoxb-test")
|
|
monkeypatch.delenv("SLACK_REQUIRE_MENTION", raising=False)
|
|
|
|
config = load_gateway_config()
|
|
|
|
slack_config = config.platforms[Platform.SLACK]
|
|
> assert slack_config.enabled is False
|
|
E AssertionError: assert True is False
|
|
E + where True = PlatformConfig(enabled=True, token='xoxb-test', api_key=None, home_channel=None, reply_to_mode='first', gateway_restart_notification=True, extra={'require_mention': False}).enabled
|
|
|
|
plugins/platforms/slack/tests/test_slack_mention.py:426: AssertionError
|
|
_______ test_explicit_platforms_slack_enabled_false_wins_over_env_token ________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x76b5b38e8e30>
|
|
tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-42033/test_explicit_platforms_slack_0')
|
|
|
|
def test_explicit_platforms_slack_enabled_false_wins_over_env_token(monkeypatch, tmp_path):
|
|
from gateway.config import load_gateway_config
|
|
|
|
hermes_home = tmp_path / ".hermes"
|
|
hermes_home.mkdir()
|
|
(hermes_home / "config.yaml").write_text(
|
|
"platforms:\n"
|
|
" slack:\n"
|
|
" enabled: false\n"
|
|
" extra:\n"
|
|
" reply_in_thread: false\n",
|
|
encoding="utf-8",
|
|
)
|
|
|
|
monkeypatch.setenv("HERMES_HOME", str(hermes_home))
|
|
monkeypatch.setenv("SLACK_BOT_TOKEN", "xoxb-test")
|
|
|
|
config = load_gateway_config()
|
|
|
|
slack_config = config.platforms[Platform.SLACK]
|
|
> assert slack_config.enabled is False
|
|
E AssertionError: assert True is False
|
|
E + where True = PlatformConfig(enabled=True, token='xoxb-test', api_key=None, home_channel=None, reply_to_mode='first', gateway_restart_notification=True, extra={'reply_in_thread': False}).enabled
|
|
|
|
plugins/platforms/slack/tests/test_slack_mention.py:452: AssertionError
|
|
=============================== warnings summary ===============================
|
|
plugins/platforms/slack/tests/test_slack_mention.py::test_config_bridges_slack_free_response_channels
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
plugins/platforms/slack/tests/test_slack_mention.py::test_config_bridges_slack_free_response_channels
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
plugins/platforms/slack/tests/test_slack_mention.py::test_config_bridges_slack_free_response_channels
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
FAILED plugins/platforms/slack/tests/test_slack_mention.py::test_explicit_top_level_slack_enabled_false_wins_over_env_token
|
|
FAILED plugins/platforms/slack/tests/test_slack_mention.py::test_explicit_platforms_slack_enabled_false_wins_over_env_token
|
|
================== 2 failed, 53 passed, 3 warnings in 10.76s ===================
|
|
|
|
--- plugins/model-providers/bedrock/tests/test_bedrock_integration.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 55 items
|
|
|
|
plugins/model-providers/bedrock/tests/test_bedrock_integration.py ...... [ 10%]
|
|
...............................................F. [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
_________ TestAuxiliaryClientBedrockResolution.test_bedrock_async_mode _________
|
|
|
|
self = <test_bedrock_integration.TestAuxiliaryClientBedrockResolution object at 0x74ef29d1dd00>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x74ef1ffbb590>
|
|
|
|
def test_bedrock_async_mode(self, monkeypatch):
|
|
"""Async mode should return an AsyncAnthropicAuxiliaryClient."""
|
|
monkeypatch.setenv("AWS_ACCESS_KEY_ID", "AKIAIO...MPLE")
|
|
monkeypatch.setenv("AWS_SECRET_ACCESS_KEY", "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY")
|
|
|
|
self._patch_bedrock_build(monkeypatch, MagicMock(return_value=MagicMock()))
|
|
from agent.auxiliary_client import resolve_provider_client
|
|
from agent.anthropic_aux import AsyncAnthropicAuxiliaryClient
|
|
client, model = resolve_provider_client("bedrock", None, async_mode=True)
|
|
|
|
assert client is not None
|
|
> assert isinstance(client, AsyncAnthropicAuxiliaryClient)
|
|
E AssertionError: assert False
|
|
E + where False = isinstance(<openai.AsyncOpenAI object at 0x74ef1f2f7fe0>, <class 'agent.anthropic_aux.AsyncAnthropicAuxiliaryClient'>)
|
|
|
|
plugins/model-providers/bedrock/tests/test_bedrock_integration.py:595: AssertionError
|
|
=============================== warnings summary ===============================
|
|
plugins/model-providers/bedrock/tests/test_bedrock_integration.py::TestBedrockPreserveDotsFlag::test_bedrock_provider_preserves_dots
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
import audioop
|
|
|
|
plugins/model-providers/bedrock/tests/test_bedrock_integration.py::TestBedrockPreserveDotsFlag::test_bedrock_provider_preserves_dots
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
plugins/model-providers/bedrock/tests/test_bedrock_integration.py::TestBedrockPreserveDotsFlag::test_bedrock_provider_preserves_dots
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
plugins/model-providers/bedrock/tests/test_bedrock_integration.py::TestBedrockPreserveDotsFlag::test_bedrock_provider_preserves_dots
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
FAILED plugins/model-providers/bedrock/tests/test_bedrock_integration.py::TestAuxiliaryClientBedrockResolution::test_bedrock_async_mode
|
|
================== 1 failed, 54 passed, 4 warnings in 12.68s ===================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_group_gating.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 40 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_group_gating.py EEEEEEEEE [ 22%]
|
|
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
________ ERROR at setup of test_group_messages_can_be_opened_via_config ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b00680>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_unmentioned_group_messages_can_be_observed_without_dispatching _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b00860>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_observed_group_context_uses_shared_source_and_prompt_for_later_mentions _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b03100>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_observed_group_context_replays_as_current_message_context_not_user_turns _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b022a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_observed_group_context_does_not_hide_current_user_turn_behind_history_offset _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887c82e80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_observed_group_context_wraps_multimodal_current_message_without_mutating_parts _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b02de0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_observed_group_context_replays_normally_without_telegram_prompt _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b02020>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_observed_group_context_preserves_slash_command_text_for_dispatch _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b03a60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_unmentioned_group_observe_requires_chat_allowlist_for_shared_context _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b03d80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_shared_group_observe_source_is_authorized_by_group_allowed_chats _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b03420>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of test_unmentioned_group_observe_respects_chat_allowlist ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b004a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_group_messages_can_require_direct_trigger_via_config __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b03060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_explicit_multi_bot_mentions_route_only_to_named_bots __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887adb380>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_entityless_multi_bot_mentions_still_route_exclusively _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887adb060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_intern_bots_ignore_messages_addressed_to_other_intern_bot _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887500360>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_bot_command_addressed_to_other_bot_is_exclusive_even_when_mentions_not_required _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887500720>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_raw_bot_mention_fallback_does_not_match_email_or_substring _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7698875016c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_exclusive_bot_mentions_can_be_disabled_for_legacy_groups _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887501260>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_free_response_chats_bypass_mention_requirement _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887501300>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_guest_mode_allows_only_direct_mentions_outside_allowed_chats _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887501ee0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_guest_mode_defaults_to_false_for_allowed_chat_bypass __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7698875022a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_guest_mode_mention_dropped_in_ignored_thread ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887502520>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_ignored_threads_drop_group_messages_before_other_gates _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887502700>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_allowed_topics_drop_other_forum_topics_before_other_gates _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887b036a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of test_allowed_topics_do_not_filter_dms ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887502c00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_allowed_topics_treat_missing_thread_as_general_topic __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887502980>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_regex_mention_patterns_allow_custom_wake_words _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887502b60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of test_invalid_regex_patterns_are_ignored ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887502ca0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of test_config_bridges_telegram_group_settings _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887502fc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of test_config_bridges_telegram_user_allowlists ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887500cc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_config_env_overrides_telegram_user_allowlists _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7698875036a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_dm_allow_from_is_enforced_by_gateway_authorization_not_trigger_gate _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887502de0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_group_allow_from_is_enforced_by_gateway_authorization_not_trigger_gate _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887503c40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_top_level_require_mention_bridges_to_telegram _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887503ec0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_top_level_require_mention_does_not_override_telegram_section _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7698875032e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of test_config_bridges_telegram_ignored_threads ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887502de0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_unmentioned_location_message_observed_in_group _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887503420>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_triggered_location_message_uses_shared_session_in_observe_mode _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887503740>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_unmentioned_voice_message_observed_in_group ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887478860>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_triggered_voice_message_uses_shared_session_in_observe_mode _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x769887478680>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130397485264976'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_group_messages_can_be_opened_via_config
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_unmentioned_group_messages_can_be_observed_without_dispatching
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_observed_group_context_uses_shared_source_and_prompt_for_later_mentions
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_observed_group_context_replays_as_current_message_context_not_user_turns
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_observed_group_context_does_not_hide_current_user_turn_behind_history_offset
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_observed_group_context_wraps_multimodal_current_message_without_mutating_parts
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_observed_group_context_replays_normally_without_telegram_prompt
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_observed_group_context_preserves_slash_command_text_for_dispatch
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_unmentioned_group_observe_requires_chat_allowlist_for_shared_context
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_shared_group_observe_source_is_authorized_by_group_allowed_chats
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_unmentioned_group_observe_respects_chat_allowlist
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_group_messages_can_require_direct_trigger_via_config
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_explicit_multi_bot_mentions_route_only_to_named_bots
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_entityless_multi_bot_mentions_still_route_exclusively
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_intern_bots_ignore_messages_addressed_to_other_intern_bot
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_bot_command_addressed_to_other_bot_is_exclusive_even_when_mentions_not_required
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_raw_bot_mention_fallback_does_not_match_email_or_substring
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_exclusive_bot_mentions_can_be_disabled_for_legacy_groups
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_free_response_chats_bypass_mention_requirement
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_guest_mode_allows_only_direct_mentions_outside_allowed_chats
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_guest_mode_defaults_to_false_for_allowed_chat_bypass
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_guest_mode_mention_dropped_in_ignored_thread
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_ignored_threads_drop_group_messages_before_other_gates
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_allowed_topics_drop_other_forum_topics_before_other_gates
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_allowed_topics_do_not_filter_dms
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_allowed_topics_treat_missing_thread_as_general_topic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_regex_mention_patterns_allow_custom_wake_words
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_invalid_regex_patterns_are_ignored
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_config_bridges_telegram_group_settings
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_config_bridges_telegram_user_allowlists
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_config_env_overrides_telegram_user_allowlists
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_dm_allow_from_is_enforced_by_gateway_authorization_not_trigger_gate
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_group_allow_from_is_enforced_by_gateway_authorization_not_trigger_gate
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_top_level_require_mention_bridges_to_telegram
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_top_level_require_mention_does_not_override_telegram_section
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_config_bridges_telegram_ignored_threads
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_unmentioned_location_message_observed_in_group
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_triggered_location_message_uses_shared_session_in_observe_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_unmentioned_voice_message_observed_in_group
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_group_gating.py::test_triggered_voice_message_uses_shared_session_in_observe_mode
|
|
============================= 40 errors in 13.23s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_photo_interrupts.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 1 item
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_photo_interrupts.py E [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of test_handle_message_does_not_priority_interrupt_photo_followup _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7e2235e60400>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='138685403012736'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='138685403012736'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=============================== warnings summary ===============================
|
|
.venv/lib/python3.12/site-packages/discord/player.py:30
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
import audioop
|
|
|
|
.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26: DeprecationWarning: There is no current event loop
|
|
loop = asyncio.get_event_loop()
|
|
|
|
.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_photo_interrupts.py::test_handle_message_does_not_priority_interrupt_photo_followup
|
|
========================= 5 warnings, 1 error in 8.30s =========================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_reply_mode.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 40 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_reply_mode.py EEEEEEEEEEE [ 27%]
|
|
EEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
______ ERROR at setup of TestReplyToModeConfig.test_default_mode_is_first ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3e6e520>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____________ ERROR at setup of TestReplyToModeConfig.test_off_mode _____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3e6f6a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of TestReplyToModeConfig.test_first_mode ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea62a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____________ ERROR at setup of TestReplyToModeConfig.test_all_mode _____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea5f80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestReplyToModeConfig.test_invalid_mode_stored_as_is ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea6840>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestReplyToModeConfig.test_none_mode_defaults_to_first ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea6a20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestReplyToModeConfig.test_empty_string_mode_defaults_to_first _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea6160>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestShouldThreadReply.test_no_reply_to_returns_false ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea7240>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestShouldThreadReply.test_off_mode_never_threads ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea74c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestShouldThreadReply.test_first_mode_only_first_chunk ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea76a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestShouldThreadReply.test_all_mode_all_chunks _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea77e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestShouldThreadReply.test_invalid_mode_falls_back_to_first _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea7d80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestSendWithReplyToMode.test_off_mode_no_reply_threading __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea6de0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSendWithReplyToMode.test_first_mode_only_first_chunk_threads _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea7880>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestSendWithReplyToMode.test_all_mode_all_chunks_thread ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea5da0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestSendWithReplyToMode.test_no_reply_to_param_no_threading _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb39682c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestSendWithReplyToMode.test_single_chunk_respects_mode ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3968fe0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestConfigSerialization.test_to_dict_includes_reply_to_mode _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3969080>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestConfigSerialization.test_from_dict_loads_reply_to_mode _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3ea77e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestConfigSerialization.test_from_dict_defaults_to_first __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb47fe660>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestEnvVarOverride.test_env_var_sets_off_mode ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb47ff920>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestEnvVarOverride.test_env_var_sets_all_mode ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3968360>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestEnvVarOverride.test_env_var_case_insensitive ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3969800>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestEnvVarOverride.test_env_var_invalid_value_ignored ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3969940>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestEnvVarOverride.test_env_var_empty_value_ignored _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3969b20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramYamlConfigLoading.test_top_level_reply_to_mode_off _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3968fe0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramYamlConfigLoading.test_top_level_reply_to_mode_all _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb396a2a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramYamlConfigLoading.test_extra_reply_to_mode_off _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb396a520>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramYamlConfigLoading.test_env_var_takes_precedence_over_yaml _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3968c20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramYamlConfigLoading.test_top_level_takes_precedence_over_extra _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb396aac0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDMTopicFallbackReplyToMode.test_reply_to_id_suppressed_when_off _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3969440>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDMTopicFallbackReplyToMode.test_reply_to_id_returned_when_first _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb396a520>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDMTopicFallbackReplyToMode.test_reply_to_id_returned_when_all _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb396b380>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDMTopicFallbackReplyToMode.test_reply_to_id_returned_when_no_mode _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb396ac00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDMTopicFallbackReplyToMode.test_explicit_reply_to_overrides_mode _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb396b920>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDMTopicFallbackReplyToMode.test_thread_kwargs_suppressed_reply_anchor_when_off _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb396a7a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDMTopicFallbackReplyToMode.test_thread_kwargs_returns_full_when_first _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb396bec0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDMTopicFallbackReplyToMode.test_thread_kwargs_no_mode_backward_compat _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb396be20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDMTopicFallbackReplyToMode.test_send_dm_topic_off_no_quote _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3969080>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDMTopicFallbackReplyToMode.test_send_dm_topic_first_still_quotes _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x72ebb3969440>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='126356663708672'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestReplyToModeConfig::test_default_mode_is_first
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestReplyToModeConfig::test_off_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestReplyToModeConfig::test_first_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestReplyToModeConfig::test_all_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestReplyToModeConfig::test_invalid_mode_stored_as_is
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestReplyToModeConfig::test_none_mode_defaults_to_first
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestReplyToModeConfig::test_empty_string_mode_defaults_to_first
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestShouldThreadReply::test_no_reply_to_returns_false
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestShouldThreadReply::test_off_mode_never_threads
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestShouldThreadReply::test_first_mode_only_first_chunk
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestShouldThreadReply::test_all_mode_all_chunks
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestShouldThreadReply::test_invalid_mode_falls_back_to_first
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestSendWithReplyToMode::test_off_mode_no_reply_threading
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestSendWithReplyToMode::test_first_mode_only_first_chunk_threads
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestSendWithReplyToMode::test_all_mode_all_chunks_thread
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestSendWithReplyToMode::test_no_reply_to_param_no_threading
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestSendWithReplyToMode::test_single_chunk_respects_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestConfigSerialization::test_to_dict_includes_reply_to_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestConfigSerialization::test_from_dict_loads_reply_to_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestConfigSerialization::test_from_dict_defaults_to_first
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestEnvVarOverride::test_env_var_sets_off_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestEnvVarOverride::test_env_var_sets_all_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestEnvVarOverride::test_env_var_case_insensitive
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestEnvVarOverride::test_env_var_invalid_value_ignored
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestEnvVarOverride::test_env_var_empty_value_ignored
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestTelegramYamlConfigLoading::test_top_level_reply_to_mode_off
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestTelegramYamlConfigLoading::test_top_level_reply_to_mode_all
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestTelegramYamlConfigLoading::test_extra_reply_to_mode_off
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestTelegramYamlConfigLoading::test_env_var_takes_precedence_over_yaml
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestTelegramYamlConfigLoading::test_top_level_takes_precedence_over_extra
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_reply_to_id_suppressed_when_off
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_reply_to_id_returned_when_first
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_reply_to_id_returned_when_all
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_reply_to_id_returned_when_no_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_explicit_reply_to_overrides_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_thread_kwargs_suppressed_reply_anchor_when_off
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_thread_kwargs_returns_full_when_first
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_thread_kwargs_no_mode_backward_compat
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_send_dm_topic_off_no_quote
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_reply_mode.py::TestDMTopicFallbackReplyToMode::test_send_dm_topic_first_still_quotes
|
|
============================= 40 errors in 13.52s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_network.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 46 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_network.py EEEEEEEEEEEEEE [ 30%]
|
|
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
____ ERROR at setup of TestParseFallbackIpEnv.test_filters_invalid_and_ipv6 ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f175684a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestParseFallbackIpEnv.test_none_returns_empty _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f1756bc40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestParseFallbackIpEnv.test_empty_string_returns_empty ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f1756ba60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestParseFallbackIpEnv.test_whitespace_only_returns_empty __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f1756be20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of TestParseFallbackIpEnv.test_single_valid_ip _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f1756b380>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestParseFallbackIpEnv.test_multiple_valid_ips _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f174444a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestParseFallbackIpEnv.test_rejects_leading_zeros ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17444860>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestNormalizeFallbackIps.test_deduplication_happens_at_transport_level _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f174451c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestNormalizeFallbackIps.test_empty_strings_skipped _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f174440e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestRewriteRequestForIp.test_preserves_host_and_sni _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f174459e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestRewriteRequestForIp.test_preserves_method_and_path ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17445c60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransport.test_falls_back_on_connect_timeout_and_becomes_sticky _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17445260>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestFallbackTransport.test_falls_back_on_connect_error ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17446160>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransport.test_does_not_fallback_on_non_connect_error _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f174463e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransport.test_all_ips_fail_raises_last_error __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f174460c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransport.test_multiple_fallback_ips_tried_in_order _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17444540>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransport.test_sticky_ip_tried_first_but_falls_through_if_stale _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17447100>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransportPassthrough.test_non_telegram_host_bypasses_fallback _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17447380>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransportPassthrough.test_empty_fallback_list_uses_primary_only _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17447060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransportPassthrough.test_primary_succeeds_no_fallback_needed _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17da2020>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestFallbackTransportInit.test_deduplicates_fallback_ips __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17445260>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransportInit.test_filters_invalid_ips_at_init _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17446840>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransportInit.test_uses_proxy_env_for_primary_and_fallback_transports _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17446480>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransportInit.test_no_proxy_bypasses_fallback_ip_cidr _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17447a60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFallbackTransportClose.test_aclose_closes_all_transports _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17447ce0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestConfigFallbackIps.test_env_var_populates_config_extra __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17446b60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestConfigFallbackIps.test_env_var_creates_platform_if_missing _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17444400>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestConfigFallbackIps.test_env_var_strips_whitespace ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17445bc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestConfigFallbackIps.test_empty_env_var_does_not_populate _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17447420>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of TestAdapterFallbackIps.test_list_in_extra __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17446e80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestAdapterFallbackIps.test_csv_string_in_extra _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f04ea0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of TestAdapterFallbackIps.test_empty_extra ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f040e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of TestAdapterFallbackIps.test_no_extra_attr __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f05440>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestAdapterFallbackIps.test_invalid_ips_filtered ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f056c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDiscoverFallbackIps.test_google_and_cloudflare_ips_collected _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f04fe0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDiscoverFallbackIps.test_system_dns_ip_kept_when_doh_confirms _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f05d00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestDiscoverFallbackIps.test_doh_results_deduplicated ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17568540>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDiscoverFallbackIps.test_doh_timeout_falls_back_to_seed _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17568f40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDiscoverFallbackIps.test_doh_connect_error_falls_back_to_seed _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f17444400>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDiscoverFallbackIps.test_doh_malformed_json_falls_back_to_seed _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f04ea0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDiscoverFallbackIps.test_one_provider_fails_other_succeeds _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f06160>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDiscoverFallbackIps.test_system_dns_failure_keeps_all_doh_ips _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f06200>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDiscoverFallbackIps.test_all_doh_ips_same_as_system_dns_kept _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f062a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDiscoverFallbackIps.test_cloudflare_gets_accept_header _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f06b60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestDiscoverFallbackIps.test_non_a_records_ignored _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f06a20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestDiscoverFallbackIps.test_invalid_ip_in_doh_response_skipped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x721f16f07100>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='125477870176928'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestParseFallbackIpEnv::test_filters_invalid_and_ipv6
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestParseFallbackIpEnv::test_none_returns_empty
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestParseFallbackIpEnv::test_empty_string_returns_empty
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestParseFallbackIpEnv::test_whitespace_only_returns_empty
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestParseFallbackIpEnv::test_single_valid_ip
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestParseFallbackIpEnv::test_multiple_valid_ips
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestParseFallbackIpEnv::test_rejects_leading_zeros
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestNormalizeFallbackIps::test_deduplication_happens_at_transport_level
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestNormalizeFallbackIps::test_empty_strings_skipped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestRewriteRequestForIp::test_preserves_host_and_sni
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestRewriteRequestForIp::test_preserves_method_and_path
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransport::test_falls_back_on_connect_timeout_and_becomes_sticky
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransport::test_falls_back_on_connect_error
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransport::test_does_not_fallback_on_non_connect_error
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransport::test_all_ips_fail_raises_last_error
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransport::test_multiple_fallback_ips_tried_in_order
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransport::test_sticky_ip_tried_first_but_falls_through_if_stale
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportPassthrough::test_non_telegram_host_bypasses_fallback
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportPassthrough::test_empty_fallback_list_uses_primary_only
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportPassthrough::test_primary_succeeds_no_fallback_needed
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportInit::test_deduplicates_fallback_ips
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportInit::test_filters_invalid_ips_at_init
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportInit::test_uses_proxy_env_for_primary_and_fallback_transports
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportInit::test_no_proxy_bypasses_fallback_ip_cidr
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestFallbackTransportClose::test_aclose_closes_all_transports
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestConfigFallbackIps::test_env_var_populates_config_extra
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestConfigFallbackIps::test_env_var_creates_platform_if_missing
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestConfigFallbackIps::test_env_var_strips_whitespace
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestConfigFallbackIps::test_empty_env_var_does_not_populate
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestAdapterFallbackIps::test_list_in_extra
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestAdapterFallbackIps::test_csv_string_in_extra
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestAdapterFallbackIps::test_empty_extra
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestAdapterFallbackIps::test_no_extra_attr
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestAdapterFallbackIps::test_invalid_ips_filtered
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_google_and_cloudflare_ips_collected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_system_dns_ip_kept_when_doh_confirms
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_doh_results_deduplicated
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_doh_timeout_falls_back_to_seed
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_doh_connect_error_falls_back_to_seed
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_doh_malformed_json_falls_back_to_seed
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_one_provider_fails_other_succeeds
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_system_dns_failure_keeps_all_doh_ips
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_all_doh_ips_same_as_system_dns_kept
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_cloudflare_gets_accept_header
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_non_a_records_ignored
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_network.py::TestDiscoverFallbackIps::test_invalid_ip_in_doh_response_skipped
|
|
============================= 46 errors in 15.09s ==============================
|
|
|
|
--- plugins/platforms/slack/tests/test_slack.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 186 items
|
|
|
|
plugins/platforms/slack/tests/test_slack.py ..F.F.FFFF.................. [ 15%]
|
|
........................................................................ [ 53%]
|
|
........................................................................ [ 92%]
|
|
.............. [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
_________ TestAppMentionHandler.test_app_mention_registered_on_connect _________
|
|
|
|
self = <test_slack.TestAppMentionHandler object at 0x75e547740b90>
|
|
|
|
def test_app_mention_registered_on_connect(self):
|
|
"""connect() should register message + assistant lifecycle handlers."""
|
|
config = PlatformConfig(enabled=True, token="xoxb-fake")
|
|
adapter = SlackAdapter(config)
|
|
|
|
# Track which events get registered
|
|
registered_events = []
|
|
registered_commands = []
|
|
|
|
mock_app = MagicMock()
|
|
|
|
def mock_event(event_type):
|
|
def decorator(fn):
|
|
registered_events.append(event_type)
|
|
return fn
|
|
return decorator
|
|
|
|
def mock_command(cmd):
|
|
def decorator(fn):
|
|
registered_commands.append(cmd)
|
|
return fn
|
|
return decorator
|
|
|
|
mock_app.event = mock_event
|
|
mock_app.command = mock_command
|
|
mock_app.client = AsyncMock()
|
|
mock_app.client.auth_test = AsyncMock(return_value={
|
|
"user_id": "U_BOT",
|
|
"user": "testbot",
|
|
})
|
|
|
|
# Mock AsyncWebClient so multi-workspace auth_test is awaitable
|
|
mock_web_client = AsyncMock()
|
|
mock_web_client.auth_test = AsyncMock(return_value={
|
|
"user_id": "U_BOT",
|
|
"user": "testbot",
|
|
"team_id": "T_FAKE",
|
|
"team": "FakeTeam",
|
|
})
|
|
|
|
with patch.object(_slack_mod, "AsyncApp", return_value=mock_app), \
|
|
patch.object(_slack_mod, "AsyncWebClient", return_value=mock_web_client), \
|
|
patch.object(_slack_mod, "AsyncSocketModeHandler", return_value=MagicMock()), \
|
|
patch.dict(os.environ, {"SLACK_APP_TOKEN": "xapp-fake"}), \
|
|
patch("gateway.status.acquire_scoped_lock", return_value=(True, None)), \
|
|
patch("asyncio.create_task"):
|
|
asyncio.run(adapter.connect())
|
|
|
|
> assert "message" in registered_events
|
|
E AssertionError: assert 'message' in []
|
|
|
|
plugins/platforms/slack/tests/test_slack.py:190: AssertionError
|
|
------------------------------ Captured log call -------------------------------
|
|
ERROR hermes_agent_slack.adapter:adapter.py:694 [Slack] Connection failed: object MagicMock can't be used in 'await' expression
|
|
Traceback (most recent call last):
|
|
File "/home/ari/src/hermes-agent/main/plugins/platforms/slack/hermes_agent_slack/adapter.py", line 573, in connect
|
|
auth_response = await client.auth_test()
|
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
|
TypeError: object MagicMock can't be used in 'await' expression
|
|
_ TestSlackConnectCleanup.test_reconnect_closes_previous_handler_to_prevent_zombie_socket _
|
|
|
|
self = <test_slack.TestSlackConnectCleanup object at 0x75e547741220>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_reconnect_closes_previous_handler_to_prevent_zombie_socket(self):
|
|
"""Regression for #18980: calling connect() on an adapter that already has
|
|
a live handler (e.g. during a gateway restart) must close the old
|
|
AsyncSocketModeHandler before creating a new one. Without this guard,
|
|
the old Socket Mode websocket stays alive and both connections dispatch
|
|
every Slack event, producing double responses — the same bug that
|
|
affected DiscordAdapter (#18187).
|
|
"""
|
|
config = PlatformConfig(enabled=True, token="xoxb-fake")
|
|
adapter = SlackAdapter(config)
|
|
|
|
# Simulate state left over from a prior connect() call.
|
|
first_handler = AsyncMock()
|
|
first_handler.close_async = AsyncMock()
|
|
adapter._handler = first_handler
|
|
|
|
mock_app = MagicMock()
|
|
def _noop_decorator(event_type):
|
|
def decorator(fn): return fn
|
|
return decorator
|
|
mock_app.event = _noop_decorator
|
|
mock_app.command = _noop_decorator
|
|
mock_app.action = _noop_decorator
|
|
mock_app.client = AsyncMock()
|
|
|
|
mock_web_client = AsyncMock()
|
|
mock_web_client.auth_test = AsyncMock(return_value={
|
|
"user_id": "U_BOT",
|
|
"user": "testbot",
|
|
"team_id": "T_FAKE",
|
|
"team": "FakeTeam",
|
|
})
|
|
|
|
second_handler = MagicMock()
|
|
|
|
with patch.object(_slack_mod, "AsyncApp", return_value=mock_app), \
|
|
patch.object(_slack_mod, "AsyncWebClient", return_value=mock_web_client), \
|
|
patch.object(_slack_mod, "AsyncSocketModeHandler", return_value=second_handler), \
|
|
patch.dict(os.environ, {"SLACK_APP_TOKEN": "xapp-fake"}), \
|
|
patch("gateway.status.acquire_scoped_lock", return_value=(True, None)), \
|
|
patch("gateway.status.release_scoped_lock"), \
|
|
patch("asyncio.create_task"):
|
|
result = await adapter.connect()
|
|
|
|
> assert result is True
|
|
E assert False is True
|
|
|
|
plugins/platforms/slack/tests/test_slack.py:279: AssertionError
|
|
------------------------------ Captured log call -------------------------------
|
|
ERROR hermes_agent_slack.adapter:adapter.py:694 [Slack] Connection failed: object MagicMock can't be used in 'await' expression
|
|
Traceback (most recent call last):
|
|
File "/home/ari/src/hermes-agent/main/plugins/platforms/slack/hermes_agent_slack/adapter.py", line 573, in connect
|
|
auth_response = await client.auth_test()
|
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
|
TypeError: object MagicMock can't be used in 'await' expression
|
|
_ TestSlackProxyBehavior.test_resolve_slack_proxy_url_ignores_unsupported_proxy_schemes _
|
|
|
|
self = <test_slack.TestSlackProxyBehavior object at 0x75e547741b50>
|
|
|
|
def test_resolve_slack_proxy_url_ignores_unsupported_proxy_schemes(self):
|
|
> with patch.object(_slack_mod, "resolve_proxy_url", return_value="socks5://proxy.example.com:1080"):
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
plugins/platforms/slack/tests/test_slack.py:296:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1467: in __enter__
|
|
original, local = self.get_original()
|
|
^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <unittest.mock._patch object at 0x75e54007cec0>
|
|
|
|
def get_original(self):
|
|
target = self.getter()
|
|
name = self.attribute
|
|
|
|
original = DEFAULT
|
|
local = False
|
|
|
|
try:
|
|
original = target.__dict__[name]
|
|
except (AttributeError, KeyError):
|
|
original = getattr(target, name, DEFAULT)
|
|
else:
|
|
local = True
|
|
|
|
if name in _builtins and isinstance(target, ModuleType):
|
|
self.create = True
|
|
|
|
if not self.create and original is DEFAULT:
|
|
> raise AttributeError(
|
|
"%s does not have the attribute %r" % (target, name)
|
|
)
|
|
E AttributeError: <module 'hermes_agent_slack' from '/home/ari/src/hermes-agent/main/plugins/platforms/slack/hermes_agent_slack/__init__.py'> does not have the attribute 'resolve_proxy_url'
|
|
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1437: AttributeError
|
|
__ TestSlackProxyBehavior.test_resolve_slack_proxy_url_checks_all_slack_hosts __
|
|
|
|
self = <test_slack.TestSlackProxyBehavior object at 0x75e547741fa0>
|
|
|
|
def test_resolve_slack_proxy_url_checks_all_slack_hosts(self):
|
|
> with patch.object(_slack_mod, "resolve_proxy_url", return_value="http://proxy.example.com:3128"), \
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
patch.object(_slack_mod, "is_host_excluded_by_no_proxy", side_effect=lambda host: host == "wss-primary.slack.com") as excluded:
|
|
|
|
plugins/platforms/slack/tests/test_slack.py:300:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1467: in __enter__
|
|
original, local = self.get_original()
|
|
^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <unittest.mock._patch object at 0x75e53fe0ede0>
|
|
|
|
def get_original(self):
|
|
target = self.getter()
|
|
name = self.attribute
|
|
|
|
original = DEFAULT
|
|
local = False
|
|
|
|
try:
|
|
original = target.__dict__[name]
|
|
except (AttributeError, KeyError):
|
|
original = getattr(target, name, DEFAULT)
|
|
else:
|
|
local = True
|
|
|
|
if name in _builtins and isinstance(target, ModuleType):
|
|
self.create = True
|
|
|
|
if not self.create and original is DEFAULT:
|
|
> raise AttributeError(
|
|
"%s does not have the attribute %r" % (target, name)
|
|
)
|
|
E AttributeError: <module 'hermes_agent_slack' from '/home/ari/src/hermes-agent/main/plugins/platforms/slack/hermes_agent_slack/__init__.py'> does not have the attribute 'resolve_proxy_url'
|
|
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1437: AttributeError
|
|
_______ TestSlackProxyBehavior.test_connect_uses_proxy_when_not_bypassed _______
|
|
|
|
self = <test_slack.TestSlackProxyBehavior object at 0x75e5477423f0>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_connect_uses_proxy_when_not_bypassed(self):
|
|
created_apps = []
|
|
created_clients = []
|
|
|
|
class FakeWebClient:
|
|
def __init__(self, token):
|
|
self.token = token
|
|
self.proxy = "constructor-default"
|
|
suffix = token.split("-")[-1]
|
|
self.auth_test = AsyncMock(return_value={
|
|
"team_id": f"T_{suffix}",
|
|
"user_id": f"U_{suffix}",
|
|
"user": f"bot-{suffix}",
|
|
"team": f"Team {suffix}",
|
|
})
|
|
created_clients.append(self)
|
|
|
|
class FakeApp:
|
|
def __init__(self, token):
|
|
self.token = token
|
|
self.client = FakeWebClient(token)
|
|
self.registered_events = []
|
|
self.registered_commands = []
|
|
self.registered_actions = []
|
|
created_apps.append(self)
|
|
|
|
def event(self, event_type):
|
|
self.registered_events.append(event_type)
|
|
|
|
def decorator(fn):
|
|
return fn
|
|
|
|
return decorator
|
|
|
|
def command(self, command_name):
|
|
self.registered_commands.append(command_name)
|
|
|
|
def decorator(fn):
|
|
return fn
|
|
|
|
return decorator
|
|
|
|
def action(self, action_id):
|
|
self.registered_actions.append(action_id)
|
|
|
|
def decorator(fn):
|
|
return fn
|
|
|
|
return decorator
|
|
|
|
class FakeSocketModeHandler:
|
|
def __init__(self, app, app_token, proxy=None):
|
|
self.app = app
|
|
self.app_token = app_token
|
|
self.proxy = proxy
|
|
self.client = MagicMock(proxy="constructor-default")
|
|
|
|
def start_async(self):
|
|
return None
|
|
|
|
async def close_async(self):
|
|
return None
|
|
|
|
config = PlatformConfig(enabled=True, token="xoxb-primary,xoxb-secondary")
|
|
adapter = SlackAdapter(config)
|
|
|
|
with patch.object(_slack_mod, "AsyncApp", side_effect=FakeApp), \
|
|
patch.object(_slack_mod, "AsyncWebClient", side_effect=FakeWebClient), \
|
|
patch.object(_slack_mod, "AsyncSocketModeHandler", FakeSocketModeHandler), \
|
|
> patch.object(_slack_mod, "_resolve_slack_proxy_url", return_value="http://proxy.example.com:3128"), \
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
patch.dict(os.environ, {"SLACK_APP_TOKEN": "xapp-fake"}, clear=False), \
|
|
patch("gateway.status.acquire_scoped_lock", return_value=(True, None)), \
|
|
patch("asyncio.create_task", return_value=MagicMock(name="socket-mode-task")):
|
|
|
|
plugins/platforms/slack/tests/test_slack.py:379:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1467: in __enter__
|
|
original, local = self.get_original()
|
|
^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <unittest.mock._patch object at 0x75e53fd90800>
|
|
|
|
def get_original(self):
|
|
target = self.getter()
|
|
name = self.attribute
|
|
|
|
original = DEFAULT
|
|
local = False
|
|
|
|
try:
|
|
original = target.__dict__[name]
|
|
except (AttributeError, KeyError):
|
|
original = getattr(target, name, DEFAULT)
|
|
else:
|
|
local = True
|
|
|
|
if name in _builtins and isinstance(target, ModuleType):
|
|
self.create = True
|
|
|
|
if not self.create and original is DEFAULT:
|
|
> raise AttributeError(
|
|
"%s does not have the attribute %r" % (target, name)
|
|
)
|
|
E AttributeError: <module 'hermes_agent_slack' from '/home/ari/src/hermes-agent/main/plugins/platforms/slack/hermes_agent_slack/__init__.py'> does not have the attribute '_resolve_slack_proxy_url'
|
|
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1437: AttributeError
|
|
_ TestSlackProxyBehavior.test_connect_clears_proxy_when_no_proxy_matches_slack _
|
|
|
|
self = <test_slack.TestSlackProxyBehavior object at 0x75e5477428a0>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_connect_clears_proxy_when_no_proxy_matches_slack(self):
|
|
created_apps = []
|
|
created_clients = []
|
|
|
|
class FakeWebClient:
|
|
def __init__(self, token):
|
|
self.token = token
|
|
self.proxy = "constructor-default"
|
|
suffix = token.split("-")[-1]
|
|
self.auth_test = AsyncMock(return_value={
|
|
"team_id": f"T_{suffix}",
|
|
"user_id": f"U_{suffix}",
|
|
"user": f"bot-{suffix}",
|
|
"team": f"Team {suffix}",
|
|
})
|
|
created_clients.append(self)
|
|
|
|
class FakeApp:
|
|
def __init__(self, token):
|
|
self.token = token
|
|
self.client = FakeWebClient(token)
|
|
self.registered_events = []
|
|
self.registered_commands = []
|
|
self.registered_actions = []
|
|
created_apps.append(self)
|
|
|
|
def event(self, event_type):
|
|
self.registered_events.append(event_type)
|
|
|
|
def decorator(fn):
|
|
return fn
|
|
|
|
return decorator
|
|
|
|
def command(self, command_name):
|
|
self.registered_commands.append(command_name)
|
|
|
|
def decorator(fn):
|
|
return fn
|
|
|
|
return decorator
|
|
|
|
def action(self, action_id):
|
|
self.registered_actions.append(action_id)
|
|
|
|
def decorator(fn):
|
|
return fn
|
|
|
|
return decorator
|
|
|
|
class FakeSocketModeHandler:
|
|
def __init__(self, app, app_token, proxy=None):
|
|
self.app = app
|
|
self.app_token = app_token
|
|
self.proxy = proxy
|
|
self.client = MagicMock(proxy="constructor-default")
|
|
|
|
def start_async(self):
|
|
return None
|
|
|
|
async def close_async(self):
|
|
return None
|
|
|
|
config = PlatformConfig(enabled=True, token="xoxb-primary")
|
|
adapter = SlackAdapter(config)
|
|
|
|
with patch.object(_slack_mod, "AsyncApp", side_effect=FakeApp), \
|
|
patch.object(_slack_mod, "AsyncWebClient", side_effect=FakeWebClient), \
|
|
patch.object(_slack_mod, "AsyncSocketModeHandler", FakeSocketModeHandler), \
|
|
> patch.object(_slack_mod, "_resolve_slack_proxy_url", return_value=None), \
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
patch.dict(os.environ, {"SLACK_APP_TOKEN": "xapp-fake"}, clear=False), \
|
|
patch("gateway.status.acquire_scoped_lock", return_value=(True, None)), \
|
|
patch("asyncio.create_task", return_value=MagicMock(name="socket-mode-task")):
|
|
|
|
plugins/platforms/slack/tests/test_slack.py:462:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1467: in __enter__
|
|
original, local = self.get_original()
|
|
^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <unittest.mock._patch object at 0x75e53fe494c0>
|
|
|
|
def get_original(self):
|
|
target = self.getter()
|
|
name = self.attribute
|
|
|
|
original = DEFAULT
|
|
local = False
|
|
|
|
try:
|
|
original = target.__dict__[name]
|
|
except (AttributeError, KeyError):
|
|
original = getattr(target, name, DEFAULT)
|
|
else:
|
|
local = True
|
|
|
|
if name in _builtins and isinstance(target, ModuleType):
|
|
self.create = True
|
|
|
|
if not self.create and original is DEFAULT:
|
|
> raise AttributeError(
|
|
"%s does not have the attribute %r" % (target, name)
|
|
)
|
|
E AttributeError: <module 'hermes_agent_slack' from '/home/ari/src/hermes-agent/main/plugins/platforms/slack/hermes_agent_slack/__init__.py'> does not have the attribute '_resolve_slack_proxy_url'
|
|
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1437: AttributeError
|
|
=============================== warnings summary ===============================
|
|
plugins/platforms/slack/tests/test_slack.py::TestSlashCommandSessionIsolation::test_channel_slash_command_uses_group_session_semantics
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
plugins/platforms/slack/tests/test_slack.py::TestSlashCommandSessionIsolation::test_channel_slash_command_uses_group_session_semantics
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
plugins/platforms/slack/tests/test_slack.py::TestSlashCommandSessionIsolation::test_channel_slash_command_uses_group_session_semantics
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
plugins/platforms/slack/tests/test_slack.py::TestSendDocument::test_send_document_retries_transient_upload_error
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:2217: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
|
|
def __init__(self, name, parent):
|
|
Enable tracemalloc to get traceback where the object was allocated.
|
|
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
|
|
|
|
plugins/platforms/slack/tests/test_slack.py: 25 warnings
|
|
/home/ari/src/hermes-agent/main/plugins/platforms/slack/hermes_agent_slack/adapter.py:2177: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
|
|
user_name = await self._resolve_user_name(user_id, chat_id=channel_id)
|
|
Enable tracemalloc to get traceback where the object was allocated.
|
|
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
|
|
|
|
plugins/platforms/slack/tests/test_slack.py::TestBangPrefixCommands::test_bang_works_inside_thread
|
|
plugins/platforms/slack/tests/test_slack.py::TestThreadReplyHandling::test_thread_reply_without_mention_with_session_processed
|
|
plugins/platforms/slack/tests/test_slack.py::TestThreadReplyHandling::test_thread_reply_with_mention_strips_bot_id
|
|
plugins/platforms/slack/tests/test_slack.py::TestAssistantThreadLifecycle::test_message_uses_cached_assistant_thread_identity
|
|
/home/ari/src/hermes-agent/main/plugins/platforms/slack/hermes_agent_slack/adapter.py:2206: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
|
|
reply_to_text = await self._fetch_thread_parent_text(
|
|
Enable tracemalloc to get traceback where the object was allocated.
|
|
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
|
|
|
|
plugins/platforms/slack/tests/test_slack.py::TestBangPrefixCommands::test_bang_works_inside_thread
|
|
plugins/platforms/slack/tests/test_slack.py::TestAssistantThreadLifecycle::test_message_uses_cached_assistant_thread_identity
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/_pytest/stash.py:108: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
|
|
del self._storage[key]
|
|
Enable tracemalloc to get traceback where the object was allocated.
|
|
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
|
|
|
|
plugins/platforms/slack/tests/test_slack.py::TestBangPrefixCommands::test_bang_unknown_token_passes_through_unchanged
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/collections/__init__.py:458: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
|
|
result = self._make(_map(kwds.pop, field_names, self))
|
|
Enable tracemalloc to get traceback where the object was allocated.
|
|
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
FAILED plugins/platforms/slack/tests/test_slack.py::TestAppMentionHandler::test_app_mention_registered_on_connect
|
|
FAILED plugins/platforms/slack/tests/test_slack.py::TestSlackConnectCleanup::test_reconnect_closes_previous_handler_to_prevent_zombie_socket
|
|
FAILED plugins/platforms/slack/tests/test_slack.py::TestSlackProxyBehavior::test_resolve_slack_proxy_url_ignores_unsupported_proxy_schemes
|
|
FAILED plugins/platforms/slack/tests/test_slack.py::TestSlackProxyBehavior::test_resolve_slack_proxy_url_checks_all_slack_hosts
|
|
FAILED plugins/platforms/slack/tests/test_slack.py::TestSlackProxyBehavior::test_connect_uses_proxy_when_not_bypassed
|
|
FAILED plugins/platforms/slack/tests/test_slack.py::TestSlackProxyBehavior::test_connect_clears_proxy_when_no_proxy_matches_slack
|
|
================= 6 failed, 180 passed, 36 warnings in 15.51s ==================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_noise_filter.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 6 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_noise_filter.py EEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of test_telegram_status_suppresses_auxiliary_and_retry_noise __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7679b8740ae0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of test_non_telegram_status_is_unchanged ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7679b852dbc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_telegram_status_sanitizes_raw_provider_security_errors _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7679b852d120>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_telegram_final_response_sanitizes_raw_provider_errors _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7679b852cf40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_telegram_final_response_redacts_auth_secrets ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7679b8b81120>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_telegram_final_response_keeps_normal_answers ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7679c1003100>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='130265301087776'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=============================== warnings summary ===============================
|
|
.venv/lib/python3.12/site-packages/discord/player.py:30
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
import audioop
|
|
|
|
.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:26: DeprecationWarning: There is no current event loop
|
|
loop = asyncio.get_event_loop()
|
|
|
|
.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_telegram_status_suppresses_auxiliary_and_retry_noise
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_non_telegram_status_is_unchanged
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_telegram_status_sanitizes_raw_provider_security_errors
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_telegram_final_response_sanitizes_raw_provider_errors
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_telegram_final_response_redacts_auth_secrets
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_noise_filter.py::test_telegram_final_response_keeps_normal_answers
|
|
======================== 5 warnings, 6 errors in 10.61s ========================
|
|
|
|
--- plugins/platforms/matrix/tests/test_matrix.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 150 items
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py .......................... [ 17%]
|
|
................FFF..sF.FF...FF........FF............................... [ 65%]
|
|
......................................F...F......... [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
_ TestMatrixRequirements.test_check_requirements_encryption_true_no_e2ee_deps __
|
|
|
|
self = <test_matrix.TestMatrixRequirements object at 0x75d761127fb0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x75d759146d80>
|
|
|
|
def test_check_requirements_encryption_true_no_e2ee_deps(self, monkeypatch):
|
|
"""MATRIX_ENCRYPTION=true should fail if python-olm is not installed."""
|
|
monkeypatch.setenv("MATRIX_ACCESS_TOKEN", "syt_test")
|
|
monkeypatch.setenv("MATRIX_HOMESERVER", "https://matrix.example.org")
|
|
monkeypatch.setenv("MATRIX_ENCRYPTION", "true")
|
|
|
|
> from gateway.platforms import matrix as matrix_mod
|
|
E ImportError: cannot import name 'matrix' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:762: ImportError
|
|
_ TestMatrixRequirements.test_check_requirements_encryption_false_no_e2ee_deps_ok _
|
|
|
|
self = <test_matrix.TestMatrixRequirements object at 0x75d761138440>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x75d7590fb740>
|
|
|
|
def test_check_requirements_encryption_false_no_e2ee_deps_ok(self, monkeypatch):
|
|
"""Without encryption, missing E2EE deps should not block startup."""
|
|
monkeypatch.setenv("MATRIX_ACCESS_TOKEN", "syt_test")
|
|
monkeypatch.setenv("MATRIX_HOMESERVER", "https://matrix.example.org")
|
|
monkeypatch.delenv("MATRIX_ENCRYPTION", raising=False)
|
|
|
|
> from gateway.platforms import matrix as matrix_mod
|
|
E ImportError: cannot import name 'matrix' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:773: ImportError
|
|
_ TestMatrixRequirements.test_check_requirements_encryption_true_with_e2ee_deps _
|
|
|
|
self = <test_matrix.TestMatrixRequirements object at 0x75d761138890>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x75d7591467b0>
|
|
|
|
def test_check_requirements_encryption_true_with_e2ee_deps(self, monkeypatch):
|
|
"""MATRIX_ENCRYPTION=true should pass if E2EE deps are available."""
|
|
monkeypatch.setenv("MATRIX_ACCESS_TOKEN", "syt_test")
|
|
monkeypatch.setenv("MATRIX_HOMESERVER", "https://matrix.example.org")
|
|
monkeypatch.setenv("MATRIX_ENCRYPTION", "true")
|
|
|
|
> from gateway.platforms import matrix as matrix_mod
|
|
E ImportError: cannot import name 'matrix' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:789: ImportError
|
|
___ TestMatrixAccessTokenAuth.test_connect_with_access_token_and_encryption ____
|
|
|
|
self = <test_matrix.TestMatrixAccessTokenAuth object at 0x75d761125d90>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_connect_with_access_token_and_encryption(self):
|
|
"""connect() should call whoami, set user_id/device_id, set up crypto."""
|
|
from hermes_agent_matrix import MatrixAdapter
|
|
|
|
config = PlatformConfig(
|
|
enabled=True,
|
|
token="syt_test_access_token",
|
|
extra={
|
|
"homeserver": "https://matrix.example.org",
|
|
"user_id": "@bot:example.org",
|
|
"encryption": True,
|
|
},
|
|
)
|
|
adapter = MatrixAdapter(config)
|
|
|
|
class FakeWhoamiResponse:
|
|
def __init__(self, user_id, device_id):
|
|
self.user_id = user_id
|
|
self.device_id = device_id
|
|
|
|
fake_mautrix_mods = _make_fake_mautrix()
|
|
|
|
# Create a mock client that returns from the mautrix.client.Client constructor
|
|
mock_client = MagicMock()
|
|
mock_client.mxid = "@bot:example.org"
|
|
mock_client.device_id = None
|
|
mock_client.state_store = MagicMock()
|
|
mock_client.sync_store = MagicMock()
|
|
mock_client.crypto = None
|
|
mock_client.whoami = AsyncMock(return_value=FakeWhoamiResponse("@bot:example.org", "DEV123"))
|
|
mock_client.sync = AsyncMock(return_value={"rooms": {"join": {"!room:server": {}}}})
|
|
mock_client.add_event_handler = MagicMock()
|
|
mock_client.handle_sync = MagicMock(return_value=[])
|
|
mock_client.query_keys = AsyncMock(return_value={
|
|
"device_keys": {"@bot:example.org": {"DEV123": {
|
|
"keys": {"ed25519:DEV123": "fake_ed25519_key"},
|
|
}}},
|
|
})
|
|
mock_client.api = MagicMock()
|
|
mock_client.api.token = "syt_test_access_token"
|
|
mock_client.api.session = MagicMock()
|
|
mock_client.api.session.close = AsyncMock()
|
|
|
|
# Mock the crypto setup
|
|
mock_olm = MagicMock()
|
|
mock_olm.load = AsyncMock()
|
|
mock_olm.share_keys = AsyncMock()
|
|
mock_olm.share_keys_min_trust = None
|
|
mock_olm.send_keys_min_trust = None
|
|
mock_olm.account = MagicMock()
|
|
mock_olm.account.identity_keys = {"ed25519": "fake_ed25519_key"}
|
|
|
|
# Patch Client constructor to return our mock
|
|
fake_mautrix_mods["mautrix.client"].Client = MagicMock(return_value=mock_client)
|
|
fake_mautrix_mods["mautrix.crypto"].OlmMachine = MagicMock(return_value=mock_olm)
|
|
|
|
> from gateway.platforms import matrix as matrix_mod
|
|
E ImportError: cannot import name 'matrix' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:912: ImportError
|
|
_ TestMatrixE2EEHardFail.test_connect_fails_when_encryption_true_but_no_e2ee_deps _
|
|
|
|
self = <test_matrix.TestMatrixE2EEHardFail object at 0x75d761138b60>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_connect_fails_when_encryption_true_but_no_e2ee_deps(self):
|
|
from hermes_agent_matrix import MatrixAdapter, _check_e2ee_deps
|
|
|
|
config = PlatformConfig(
|
|
enabled=True,
|
|
token="syt_test_access_token",
|
|
extra={
|
|
"homeserver": "https://matrix.example.org",
|
|
"user_id": "@bot:example.org",
|
|
"encryption": True,
|
|
},
|
|
)
|
|
adapter = MatrixAdapter(config)
|
|
|
|
fake_mautrix_mods = _make_fake_mautrix()
|
|
|
|
mock_client = MagicMock()
|
|
mock_client.whoami = AsyncMock(return_value=MagicMock(user_id="@bot:example.org", device_id="DEV123"))
|
|
mock_client.api = MagicMock()
|
|
mock_client.api.token = "syt_test_access_token"
|
|
mock_client.api.session = MagicMock()
|
|
mock_client.api.session.close = AsyncMock()
|
|
mock_client.mxid = "@bot:example.org"
|
|
mock_client.device_id = None
|
|
mock_client.crypto = None
|
|
|
|
fake_mautrix_mods["mautrix.client"].Client = MagicMock(return_value=mock_client)
|
|
|
|
> from gateway.platforms import matrix as matrix_mod
|
|
E ImportError: cannot import name 'matrix' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:992: ImportError
|
|
______ TestMatrixE2EEHardFail.test_connect_fails_when_crypto_setup_raises ______
|
|
|
|
self = <test_matrix.TestMatrixE2EEHardFail object at 0x75d761139070>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_connect_fails_when_crypto_setup_raises(self):
|
|
"""Even if _check_e2ee_deps passes, if OlmMachine raises, hard-fail."""
|
|
from hermes_agent_matrix import MatrixAdapter
|
|
|
|
config = PlatformConfig(
|
|
enabled=True,
|
|
token="syt_test_access_token",
|
|
extra={
|
|
"homeserver": "https://matrix.example.org",
|
|
"user_id": "@bot:example.org",
|
|
"encryption": True,
|
|
},
|
|
)
|
|
adapter = MatrixAdapter(config)
|
|
|
|
fake_mautrix_mods = _make_fake_mautrix()
|
|
|
|
mock_client = MagicMock()
|
|
mock_client.whoami = AsyncMock(return_value=MagicMock(user_id="@bot:example.org", device_id="DEV123"))
|
|
mock_client.api = MagicMock()
|
|
mock_client.api.token = "syt_test_access_token"
|
|
mock_client.api.session = MagicMock()
|
|
mock_client.api.session.close = AsyncMock()
|
|
mock_client.mxid = "@bot:example.org"
|
|
mock_client.device_id = None
|
|
mock_client.crypto = None
|
|
|
|
fake_mautrix_mods["mautrix.client"].Client = MagicMock(return_value=mock_client)
|
|
fake_mautrix_mods["mautrix.crypto"].OlmMachine = MagicMock(side_effect=Exception("olm init failed"))
|
|
|
|
> from gateway.platforms import matrix as matrix_mod
|
|
E ImportError: cannot import name 'matrix' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:1031: ImportError
|
|
____ TestMatrixDeviceId.test_connect_uses_configured_device_id_over_whoami _____
|
|
|
|
self = <test_matrix.TestMatrixDeviceId object at 0x75d76113a2d0>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_connect_uses_configured_device_id_over_whoami(self):
|
|
"""When MATRIX_DEVICE_ID is set, it should be used instead of whoami device_id."""
|
|
from hermes_agent_matrix import MatrixAdapter
|
|
|
|
config = PlatformConfig(
|
|
enabled=True,
|
|
token="syt_test_access_token",
|
|
extra={
|
|
"homeserver": "https://matrix.example.org",
|
|
"user_id": "@bot:example.org",
|
|
"encryption": True,
|
|
"device_id": "MY_STABLE_DEVICE",
|
|
},
|
|
)
|
|
adapter = MatrixAdapter(config)
|
|
|
|
fake_mautrix_mods = _make_fake_mautrix()
|
|
|
|
mock_client = MagicMock()
|
|
mock_client.mxid = "@bot:example.org"
|
|
mock_client.device_id = None
|
|
mock_client.state_store = MagicMock()
|
|
mock_client.sync_store = MagicMock()
|
|
mock_client.crypto = None
|
|
mock_client.whoami = AsyncMock(return_value=MagicMock(user_id="@bot:example.org", device_id="WHOAMI_DEV"))
|
|
mock_client.sync = AsyncMock(return_value={"rooms": {"join": {"!room:server": {}}}})
|
|
mock_client.add_event_handler = MagicMock()
|
|
mock_client.handle_sync = MagicMock(return_value=[])
|
|
mock_client.query_keys = AsyncMock(return_value={
|
|
"device_keys": {"@bot:example.org": {"MY_STABLE_DEVICE": {
|
|
"keys": {"ed25519:MY_STABLE_DEVICE": "fake_ed25519_key"},
|
|
}}},
|
|
})
|
|
mock_client.api = MagicMock()
|
|
mock_client.api.token = "syt_test_access_token"
|
|
mock_client.api.session = MagicMock()
|
|
mock_client.api.session.close = AsyncMock()
|
|
|
|
mock_olm = MagicMock()
|
|
mock_olm.load = AsyncMock()
|
|
mock_olm.share_keys = AsyncMock()
|
|
mock_olm.share_keys_min_trust = None
|
|
mock_olm.send_keys_min_trust = None
|
|
mock_olm.account = MagicMock()
|
|
mock_olm.account.identity_keys = {"ed25519": "fake_ed25519_key"}
|
|
|
|
fake_mautrix_mods["mautrix.client"].Client = MagicMock(return_value=mock_client)
|
|
fake_mautrix_mods["mautrix.crypto"].OlmMachine = MagicMock(return_value=mock_olm)
|
|
|
|
> from gateway.platforms import matrix as matrix_mod
|
|
E ImportError: cannot import name 'matrix' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:1137: ImportError
|
|
______ TestMatrixPasswordLoginDeviceId.test_password_login_uses_device_id ______
|
|
|
|
self = <test_matrix.TestMatrixPasswordLoginDeviceId object at 0x75d76113a870>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_password_login_uses_device_id(self):
|
|
from hermes_agent_matrix import MatrixAdapter
|
|
|
|
config = PlatformConfig(
|
|
enabled=True,
|
|
extra={
|
|
"homeserver": "https://matrix.example.org",
|
|
"user_id": "@bot:example.org",
|
|
"password": "secret",
|
|
"device_id": "STABLE_PW_DEVICE",
|
|
},
|
|
)
|
|
adapter = MatrixAdapter(config)
|
|
|
|
fake_mautrix_mods = _make_fake_mautrix()
|
|
|
|
mock_client = MagicMock()
|
|
mock_client.mxid = "@bot:example.org"
|
|
mock_client.device_id = None
|
|
mock_client.state_store = MagicMock()
|
|
mock_client.sync_store = MagicMock()
|
|
mock_client.crypto = None
|
|
mock_client.login = AsyncMock(return_value=MagicMock(device_id="STABLE_PW_DEVICE", access_token="tok"))
|
|
mock_client.sync = AsyncMock(return_value={"rooms": {"join": {}}})
|
|
mock_client.add_event_handler = MagicMock()
|
|
mock_client.api = MagicMock()
|
|
mock_client.api.token = ""
|
|
mock_client.api.session = MagicMock()
|
|
mock_client.api.session.close = AsyncMock()
|
|
|
|
fake_mautrix_mods["mautrix.client"].Client = MagicMock(return_value=mock_client)
|
|
|
|
> from gateway.platforms import matrix as matrix_mod
|
|
E ImportError: cannot import name 'matrix' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:1187: ImportError
|
|
_ TestMatrixEncryptedEventHandler.test_connect_registers_encrypted_event_handler_when_encryption_on _
|
|
|
|
self = <test_matrix.TestMatrixEncryptedEventHandler object at 0x75d76113baa0>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_connect_registers_encrypted_event_handler_when_encryption_on(self):
|
|
from hermes_agent_matrix import MatrixAdapter
|
|
|
|
config = PlatformConfig(
|
|
enabled=True,
|
|
token="syt_test_token",
|
|
extra={
|
|
"homeserver": "https://matrix.example.org",
|
|
"user_id": "@bot:example.org",
|
|
"encryption": True,
|
|
},
|
|
)
|
|
adapter = MatrixAdapter(config)
|
|
|
|
fake_mautrix_mods = _make_fake_mautrix()
|
|
|
|
mock_client = MagicMock()
|
|
mock_client.mxid = "@bot:example.org"
|
|
mock_client.device_id = None
|
|
mock_client.state_store = MagicMock()
|
|
mock_client.sync_store = MagicMock()
|
|
mock_client.crypto = None # Will be set during connect
|
|
mock_client.whoami = AsyncMock(return_value=MagicMock(user_id="@bot:example.org", device_id="DEV123"))
|
|
mock_client.sync = AsyncMock(return_value={"rooms": {"join": {"!room:server": {}}}})
|
|
mock_client.add_event_handler = MagicMock()
|
|
mock_client.handle_sync = MagicMock(return_value=[])
|
|
mock_client.query_keys = AsyncMock(return_value={
|
|
"device_keys": {"@bot:example.org": {"DEV123": {
|
|
"keys": {"ed25519:DEV123": "fake_ed25519_key"},
|
|
}}},
|
|
})
|
|
mock_client.api = MagicMock()
|
|
mock_client.api.token = "syt_test_token"
|
|
mock_client.api.session = MagicMock()
|
|
mock_client.api.session.close = AsyncMock()
|
|
|
|
mock_olm = MagicMock()
|
|
mock_olm.load = AsyncMock()
|
|
mock_olm.share_keys = AsyncMock()
|
|
mock_olm.share_keys_min_trust = None
|
|
mock_olm.send_keys_min_trust = None
|
|
mock_olm.account = MagicMock()
|
|
mock_olm.account.identity_keys = {"ed25519": "fake_ed25519_key"}
|
|
|
|
fake_mautrix_mods["mautrix.client"].Client = MagicMock(return_value=mock_client)
|
|
fake_mautrix_mods["mautrix.crypto"].OlmMachine = MagicMock(return_value=mock_olm)
|
|
|
|
> from gateway.platforms import matrix as matrix_mod
|
|
E ImportError: cannot import name 'matrix' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:1448: ImportError
|
|
___ TestMatrixEncryptedEventHandler.test_connect_fails_on_stale_otk_conflict ___
|
|
|
|
self = <test_matrix.TestMatrixEncryptedEventHandler object at 0x75d76113bfb0>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_connect_fails_on_stale_otk_conflict(self):
|
|
"""connect() must refuse E2EE when OTK upload hits 'already exists'."""
|
|
from hermes_agent_matrix import MatrixAdapter
|
|
|
|
config = PlatformConfig(
|
|
enabled=True,
|
|
token="syt_test_token",
|
|
extra={
|
|
"homeserver": "https://matrix.example.org",
|
|
"user_id": "@bot:example.org",
|
|
"encryption": True,
|
|
},
|
|
)
|
|
adapter = MatrixAdapter(config)
|
|
|
|
fake_mautrix_mods = _make_fake_mautrix()
|
|
|
|
mock_client = MagicMock()
|
|
mock_client.mxid = "@bot:example.org"
|
|
mock_client.device_id = None
|
|
mock_client.state_store = MagicMock()
|
|
mock_client.sync_store = MagicMock()
|
|
mock_client.crypto = None
|
|
mock_client.whoami = AsyncMock(return_value=MagicMock(user_id="@bot:example.org", device_id="DEV123"))
|
|
mock_client.add_event_handler = MagicMock()
|
|
mock_client.add_dispatcher = MagicMock()
|
|
mock_client.query_keys = AsyncMock(return_value={
|
|
"device_keys": {"@bot:example.org": {"DEV123": {
|
|
"keys": {"ed25519:DEV123": "fake_ed25519_key"},
|
|
}}},
|
|
})
|
|
mock_client.api = MagicMock()
|
|
mock_client.api.token = "syt_test_token"
|
|
mock_client.api.session = MagicMock()
|
|
mock_client.api.session.close = AsyncMock()
|
|
|
|
# share_keys succeeds on first call (from _verify_device_keys_on_server),
|
|
# then raises "already exists" on the proactive OTK flush in connect().
|
|
mock_olm = MagicMock()
|
|
mock_olm.load = AsyncMock()
|
|
mock_olm.share_keys = AsyncMock(
|
|
side_effect=[None, Exception("One time key signed_curve25519:AAAAAQ already exists")]
|
|
)
|
|
mock_olm.share_keys_min_trust = None
|
|
mock_olm.send_keys_min_trust = None
|
|
mock_olm.account = MagicMock()
|
|
mock_olm.account.identity_keys = {"ed25519": "fake_ed25519_key"}
|
|
|
|
fake_mautrix_mods["mautrix.client"].Client = MagicMock(return_value=mock_client)
|
|
fake_mautrix_mods["mautrix.crypto"].OlmMachine = MagicMock(return_value=mock_olm)
|
|
|
|
> from gateway.platforms import matrix as matrix_mod
|
|
E ImportError: cannot import name 'matrix' from 'gateway.platforms' (/home/ari/src/hermes-agent/main/gateway/platforms/__init__.py)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:1517: ImportError
|
|
_ TestMatrixClockSkewWarning.test_late_drops_emit_one_shot_clock_skew_warning __
|
|
|
|
self = <test_matrix.TestMatrixClockSkewWarning object at 0x75d761189550>
|
|
caplog = <_pytest.logging.LogCaptureFixture object at 0x75d758e74320>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_late_drops_emit_one_shot_clock_skew_warning(self, caplog):
|
|
import logging
|
|
import time as _t
|
|
|
|
# Simulate the reporter's environment: host clock is ~2 hours ahead
|
|
# of server time. Startup happened "in the future" relative to the
|
|
# real-world events we're now receiving.
|
|
now = _t.time()
|
|
self.adapter._startup_ts = now - 60 # bot started 60s ago (wall clock)
|
|
# Server events are dated 2h before startup_ts (skewed clock).
|
|
skewed_event_ts_ms = int((self.adapter._startup_ts - 7200) * 1000)
|
|
|
|
with caplog.at_level(logging.WARNING, logger="gateway.platforms.matrix"):
|
|
for i in range(5):
|
|
ev = self._mk_event(
|
|
sender=f"@alice{i}:example.org", ts_ms=skewed_event_ts_ms
|
|
)
|
|
await self.adapter._on_room_message(ev)
|
|
|
|
# Handler should never be invoked — all events failed the grace check.
|
|
self.adapter._handle_text_message.assert_not_called()
|
|
# Exactly one WARNING from THIS logger should be emitted. Filter by
|
|
# logger name so unrelated stdlib/library warnings can't satisfy the
|
|
# assertion.
|
|
skew_warnings = [
|
|
r for r in caplog.records
|
|
if r.name == "gateway.platforms.matrix"
|
|
and r.levelname == "WARNING"
|
|
and "set-ntp" in r.getMessage()
|
|
]
|
|
> assert len(skew_warnings) == 1, (
|
|
f"expected exactly 1 clock-skew warning, got {len(skew_warnings)}"
|
|
)
|
|
E AssertionError: expected exactly 1 clock-skew warning, got 0
|
|
E assert 0 == 1
|
|
E + where 0 = len([])
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:2369: AssertionError
|
|
------------------------------ Captured log call -------------------------------
|
|
WARNING hermes_agent_matrix.adapter:adapter.py:1610 Matrix: dropped 3 consecutive live events as 'too old' more than 30s after startup (skew ≈ 7200s). The host system clock is likely set ahead of real time, which causes the startup grace filter to silently discard every incoming message. Run `timedatectl set-ntp true` (or sync NTP) and restart the bot.
|
|
___ TestMatrixClockSkewWarning.test_state_reset_allows_warning_to_fire_again ___
|
|
|
|
self = <test_matrix.TestMatrixClockSkewWarning object at 0x75d76118a2a0>
|
|
caplog = <_pytest.logging.LogCaptureFixture object at 0x75d758f434d0>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_state_reset_allows_warning_to_fire_again(self, caplog):
|
|
"""After the reset block at top of connect() runs, the warning is rearmed.
|
|
|
|
Reconnect lifecycle: the user fixes NTP, restarts the bot, and the
|
|
new connect() call resets _late_grace_drops / _clock_skew_warned at
|
|
the top. This test exercises the rearm path by:
|
|
1. Tripping the warning once (state: warned=True).
|
|
2. Running the same reset block connect() runs.
|
|
3. Tripping the warning a second time — the second warning should
|
|
fire because the state was cleared.
|
|
"""
|
|
import logging
|
|
import time as _t
|
|
|
|
now = _t.time()
|
|
self.adapter._startup_ts = now - 60
|
|
skewed_ms = int((self.adapter._startup_ts - 7200) * 1000)
|
|
|
|
with caplog.at_level(logging.WARNING, logger="gateway.platforms.matrix"):
|
|
for i in range(3):
|
|
ev = self._mk_event(
|
|
sender=f"@alice{i}:example.org", ts_ms=skewed_ms,
|
|
event_id=f"$first-{i}",
|
|
)
|
|
await self.adapter._on_room_message(ev)
|
|
assert self.adapter._clock_skew_warned is True
|
|
|
|
# Mirror the reset block in connect() (matrix.py around line 855).
|
|
self.adapter._startup_ts = _t.time() - 60
|
|
self.adapter._late_grace_drops = 0
|
|
self.adapter._late_grace_skew = 0.0
|
|
self.adapter._clock_skew_warned = False
|
|
|
|
# Same skewed-clock scenario should warn AGAIN after reset.
|
|
skewed_ms2 = int((self.adapter._startup_ts - 7200) * 1000)
|
|
for i in range(3):
|
|
ev = self._mk_event(
|
|
sender=f"@bob{i}:example.org", ts_ms=skewed_ms2,
|
|
event_id=f"$second-{i}",
|
|
)
|
|
await self.adapter._on_room_message(ev)
|
|
|
|
skew_warnings = [
|
|
r for r in caplog.records
|
|
if r.name == "gateway.platforms.matrix"
|
|
and "set-ntp" in r.getMessage()
|
|
]
|
|
> assert len(skew_warnings) == 2, (
|
|
f"expected 2 warnings (one per connect cycle), got {len(skew_warnings)}"
|
|
)
|
|
E AssertionError: expected 2 warnings (one per connect cycle), got 0
|
|
E assert 0 == 2
|
|
E + where 0 = len([])
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py:2508: AssertionError
|
|
------------------------------ Captured log call -------------------------------
|
|
WARNING hermes_agent_matrix.adapter:adapter.py:1610 Matrix: dropped 3 consecutive live events as 'too old' more than 30s after startup (skew ≈ 7200s). The host system clock is likely set ahead of real time, which causes the startup grace filter to silently discard every incoming message. Run `timedatectl set-ntp true` (or sync NTP) and restart the bot.
|
|
WARNING hermes_agent_matrix.adapter:adapter.py:1610 Matrix: dropped 3 consecutive live events as 'too old' more than 30s after startup (skew ≈ 7200s). The host system clock is likely set ahead of real time, which causes the startup grace filter to silently discard every incoming message. Run `timedatectl set-ntp true` (or sync NTP) and restart the bot.
|
|
=============================== warnings summary ===============================
|
|
plugins/platforms/matrix/tests/test_matrix.py::TestMatrixConfigLoading::test_apply_env_overrides_with_access_token
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py::TestMatrixConfigLoading::test_apply_env_overrides_with_access_token
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
plugins/platforms/matrix/tests/test_matrix.py::TestMatrixConfigLoading::test_apply_env_overrides_with_access_token
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixRequirements::test_check_requirements_encryption_true_no_e2ee_deps
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixRequirements::test_check_requirements_encryption_false_no_e2ee_deps_ok
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixRequirements::test_check_requirements_encryption_true_with_e2ee_deps
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixAccessTokenAuth::test_connect_with_access_token_and_encryption
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixE2EEHardFail::test_connect_fails_when_encryption_true_but_no_e2ee_deps
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixE2EEHardFail::test_connect_fails_when_crypto_setup_raises
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixDeviceId::test_connect_uses_configured_device_id_over_whoami
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixPasswordLoginDeviceId::test_password_login_uses_device_id
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixEncryptedEventHandler::test_connect_registers_encrypted_event_handler_when_encryption_on
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixEncryptedEventHandler::test_connect_fails_on_stale_otk_conflict
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixClockSkewWarning::test_late_drops_emit_one_shot_clock_skew_warning
|
|
FAILED plugins/platforms/matrix/tests/test_matrix.py::TestMatrixClockSkewWarning::test_state_reset_allows_warning_to_fire_again
|
|
============ 12 failed, 137 passed, 1 skipped, 3 warnings in 16.10s ============
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_thread_fallback.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 41 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_thread_fallback.py EEEEEE [ 14%]
|
|
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of test_non_forum_group_reply_thread_id_does_not_fork_session_key _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053ce127a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_forum_group_topic_message_preserves_thread_session_key _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053ce123e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_forum_general_topic_without_message_thread_id_keeps_thread_context _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c775580>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of test_send_omits_general_topic_thread_id ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c775080>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_send_typing_preserves_general_topic_thread_id _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053df2fe20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of test_send_typing_does_not_fall_back_to_root_for_dm_topic __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053dd0ce00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_send_typing_attempts_api_call_for_dm_topic_reply_fallback _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c775d00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_send_typing_falls_back_without_thread_on_bad_request __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c776200>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_send_retries_without_thread_on_thread_not_found ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c776480>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_send_retries_transient_thread_not_found_before_fallback _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c775b20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of test_send_private_dm_topic_uses_direct_messages_topic_id __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c776ac0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_base_gateway_metadata_marks_telegram_dm_topics_as_reply_fallback _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c7751c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_base_gateway_metadata_for_resumed_telegram_dm_topic_uses_direct_topic _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053ce10c20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_base_gateway_replies_to_triggering_message_for_telegram_dm_topic _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053ce11580>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_gateway_runner_busy_ack_replies_to_triggering_message_for_telegram_dm_topic _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c775a80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_send_uses_reply_fallback_for_hermes_dm_topics _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c7768e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_send_uses_metadata_reply_fallback_for_streaming_dm_topics _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c7772e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_send_reply_fallback_applies_to_every_chunk_for_dm_topics _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c776de0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_send_model_picker_uses_metadata_reply_fallback_for_dm_topics _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053ce118a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_send_dm_topic_fallback_without_anchor_does_not_crash __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cfb14e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of test_send_dm_topic_reply_not_found_retry_drops_thread_id __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c777a60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_image_file-send_photo-image_path-photo.png-png-data] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cfb14e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_document-send_document-file_path-report.txt-report-data] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc98d60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_video-send_video-video_path-clip.mp4-video-data] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c7776a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_voice-send_voice-audio_path-clip.ogg-ogg-data] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053c777a60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_voice-send_audio-audio_path-clip.mp3-mp3-data] _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053ce11580>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_animation_dm_topic_reply_not_found_retry_drops_thread_id _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc989a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_media_group_dm_topic_reply_not_found_retry_drops_thread_id _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc984a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_send_image_url_dm_topic_reply_not_found_retry_drops_thread_id _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc99620>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_send_image_upload_dm_topic_reply_not_found_retry_drops_thread_id _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc98860>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_slash_confirm_private_topic_callback_followup_sends_thread_and_reply _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc989a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_slash_confirm_forum_callback_followup_keeps_existing_thread_behavior _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc99ee0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_base_send_image_fallback_preserves_metadata ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc99760>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of test_send_raises_on_other_bad_request ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc9a3e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of test_send_without_thread_id_unaffected ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc9a200>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_send_retries_network_errors_normally __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc9aac0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______________ ERROR at setup of test_send_does_not_retry_timeout ______________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc9a340>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_send_retries_wrapped_connect_timeout __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc9b060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_send_marks_wrapped_connect_timeout_retryable_after_exhaustion _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc98860>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____________ ERROR at setup of test_thread_fallback_only_fires_once ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc9b600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____________ ERROR at setup of test_send_retries_retry_after_errors ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7a053cc9b880>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='134162914211456'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_non_forum_group_reply_thread_id_does_not_fork_session_key
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_forum_group_topic_message_preserves_thread_session_key
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_forum_general_topic_without_message_thread_id_keeps_thread_context
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_omits_general_topic_thread_id
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_typing_preserves_general_topic_thread_id
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_typing_does_not_fall_back_to_root_for_dm_topic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_typing_attempts_api_call_for_dm_topic_reply_fallback
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_typing_falls_back_without_thread_on_bad_request
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_retries_without_thread_on_thread_not_found
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_retries_transient_thread_not_found_before_fallback
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_private_dm_topic_uses_direct_messages_topic_id
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_base_gateway_metadata_marks_telegram_dm_topics_as_reply_fallback
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_base_gateway_metadata_for_resumed_telegram_dm_topic_uses_direct_topic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_base_gateway_replies_to_triggering_message_for_telegram_dm_topic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_gateway_runner_busy_ack_replies_to_triggering_message_for_telegram_dm_topic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_uses_reply_fallback_for_hermes_dm_topics
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_uses_metadata_reply_fallback_for_streaming_dm_topics
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_reply_fallback_applies_to_every_chunk_for_dm_topics
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_model_picker_uses_metadata_reply_fallback_for_dm_topics
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_dm_topic_fallback_without_anchor_does_not_crash
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_dm_topic_reply_not_found_retry_drops_thread_id
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_image_file-send_photo-image_path-photo.png-png-data]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_document-send_document-file_path-report.txt-report-data]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_video-send_video-video_path-clip.mp4-video-data]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_voice-send_voice-audio_path-clip.ogg-ogg-data]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_voice-send_audio-audio_path-clip.mp3-mp3-data]
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_animation_dm_topic_reply_not_found_retry_drops_thread_id
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_media_group_dm_topic_reply_not_found_retry_drops_thread_id
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_image_url_dm_topic_reply_not_found_retry_drops_thread_id
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_image_upload_dm_topic_reply_not_found_retry_drops_thread_id
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_slash_confirm_private_topic_callback_followup_sends_thread_and_reply
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_slash_confirm_forum_callback_followup_keeps_existing_thread_behavior
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_base_send_image_fallback_preserves_metadata
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_raises_on_other_bad_request
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_without_thread_id_unaffected
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_retries_network_errors_normally
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_does_not_retry_timeout
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_retries_wrapped_connect_timeout
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_marks_wrapped_connect_timeout_retryable_after_exhaustion
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_thread_fallback_only_fires_once
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_thread_fallback.py::test_send_retries_retry_after_errors
|
|
============================= 41 errors in 12.11s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_topic_mode.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 43 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_topic_mode.py EEEEEEEEEEE [ 25%]
|
|
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of test_root_telegram_dm_prompt_is_system_lobby_when_topic_mode_enabled _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c0c6e80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of test_root_telegram_dm_new_shows_create_topic_instruction __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c109f80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_telegram_topic_prompt_still_runs_agent_when_topic_mode_enabled _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c10a200>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_managed_topic_binding_reuses_restored_session_over_static_lane_session _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c0c5e40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_telegram_group_prompt_is_not_topic_lobby_even_when_dm_topic_mode_enabled _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c109260>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_topic_command_is_private_dm_only_and_does_not_enable_group_topic_mode _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c109f80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_group_new_keeps_existing_reset_semantics_when_dm_topic_mode_enabled _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c10aa20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_new_inside_telegram_topic_resets_current_topic_with_parallel_tip _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c10b060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_new_inside_telegram_topic_rewrites_binding_to_new_session _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c10b2e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_topic_root_command_explicitly_migrates_and_enables_topic_mode _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c10b600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_topic_root_command_lists_unlinked_sessions_for_restore _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c10a3e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_topic_root_command_handles_no_unlinked_sessions ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c10ade0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_topic_command_inside_bound_topic_shows_current_session _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c0c5f80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_topic_restore_inside_topic_binds_old_session_and_returns_last_assistant_message _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c0c6160>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_topic_restore_refuses_session_owned_by_another_telegram_user _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c10bec0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_topic_restore_refuses_already_linked_session ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c109da0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of test_first_message_inside_topic_records_topic_binding ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c170040>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of test_topic_root_command_creates_and_pins_system_topic ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c170cc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of test_auto_generated_title_renames_bound_telegram_topic ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c1709a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_auto_generated_title_does_not_rename_topic_bound_to_other_session _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c1713a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_operator_declared_topic_is_not_auto_renamed ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c171800>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_disable_topic_auto_rename_extra_skips_rename ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c171b20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_schedule_topic_rename_respects_disable_flag ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c109da0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of test_telegram_topic_auto_rename_disabled_string_truthy ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c10b600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of test_general_topic_is_treated_as_root_lobby _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c171e40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_lobby_reminder_is_debounced_per_chat __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c172020>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_binding_survives_session_deletion_via_cascade _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c170b80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of test_migration_rebuilds_v1_binding_table_with_cascade_fk __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c172340>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of test_topic_help_subcommand_returns_usage __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c172480>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_topic_off_disables_mode_and_clears_bindings ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c172a20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_topic_off_is_idempotent_when_never_enabled _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c172d40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____________ ERROR at setup of test_topic_refuses_unauthorized_user ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c172fc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_recover_returns_none_for_known_topic __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c1732e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of test_recover_preserves_unknown_thread_id_for_new_topic ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c173560>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_recover_rewrites_lobby_thread_id_to_most_recent ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c173740>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of test_recover_returns_none_when_topic_mode_disabled _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c1739c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_recover_returns_none_when_no_bindings_yet _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c173ce0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of test_recover_returns_none_for_brand_new_topic ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c173d80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of test_list_telegram_topic_bindings_for_chat _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c173880>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of test_list_telegram_topic_bindings_for_chat_no_table _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c173f60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_get_telegram_topic_binding_by_session_returns_binding _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c173c40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_get_telegram_topic_binding_by_session_returns_none_for_unknown _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c1732e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of test_session_split_restores_source_thread_id_from_binding __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x783b1c172480>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='132195271668272'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_root_telegram_dm_prompt_is_system_lobby_when_topic_mode_enabled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_root_telegram_dm_new_shows_create_topic_instruction
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_telegram_topic_prompt_still_runs_agent_when_topic_mode_enabled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_managed_topic_binding_reuses_restored_session_over_static_lane_session
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_telegram_group_prompt_is_not_topic_lobby_even_when_dm_topic_mode_enabled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_command_is_private_dm_only_and_does_not_enable_group_topic_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_group_new_keeps_existing_reset_semantics_when_dm_topic_mode_enabled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_new_inside_telegram_topic_resets_current_topic_with_parallel_tip
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_new_inside_telegram_topic_rewrites_binding_to_new_session
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_root_command_explicitly_migrates_and_enables_topic_mode
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_root_command_lists_unlinked_sessions_for_restore
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_root_command_handles_no_unlinked_sessions
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_command_inside_bound_topic_shows_current_session
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_restore_inside_topic_binds_old_session_and_returns_last_assistant_message
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_restore_refuses_session_owned_by_another_telegram_user
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_restore_refuses_already_linked_session
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_first_message_inside_topic_records_topic_binding
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_root_command_creates_and_pins_system_topic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_auto_generated_title_renames_bound_telegram_topic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_auto_generated_title_does_not_rename_topic_bound_to_other_session
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_operator_declared_topic_is_not_auto_renamed
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_disable_topic_auto_rename_extra_skips_rename
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_schedule_topic_rename_respects_disable_flag
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_telegram_topic_auto_rename_disabled_string_truthy
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_general_topic_is_treated_as_root_lobby
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_lobby_reminder_is_debounced_per_chat
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_binding_survives_session_deletion_via_cascade
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_migration_rebuilds_v1_binding_table_with_cascade_fk
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_help_subcommand_returns_usage
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_off_disables_mode_and_clears_bindings
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_off_is_idempotent_when_never_enabled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_topic_refuses_unauthorized_user
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_returns_none_for_known_topic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_preserves_unknown_thread_id_for_new_topic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_rewrites_lobby_thread_id_to_most_recent
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_returns_none_when_topic_mode_disabled
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_returns_none_when_no_bindings_yet
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_recover_returns_none_for_brand_new_topic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_list_telegram_topic_bindings_for_chat
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_list_telegram_topic_bindings_for_chat_no_table
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_get_telegram_topic_binding_by_session_returns_binding
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_get_telegram_topic_binding_by_session_returns_none_for_unknown
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_topic_mode.py::test_session_split_restores_source_thread_id_from_binding
|
|
============================= 43 errors in 12.05s ==============================
|
|
|
|
--- plugins/platforms/telegram/tests/test_telegram_format.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 99 items
|
|
|
|
plugins/platforms/telegram/tests/test_telegram_format.py EEEEEEEEEEEEEEE [ 15%]
|
|
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 87%]
|
|
EEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_____ ERROR at setup of TestEscapeMdv2.test_escapes_all_special_characters _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c17060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______________ ERROR at setup of TestEscapeMdv2.test_empty_string ______________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c89d00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of TestEscapeMdv2.test_no_special_characters __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8a340>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of TestEscapeMdv2.test_backslash_escaped ____________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c89440>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______________ ERROR at setup of TestEscapeMdv2.test_dot_escaped _______________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8a840>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of TestEscapeMdv2.test_exclamation_escaped ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c891c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
________ ERROR at setup of TestEscapeMdv2.test_mixed_text_and_specials _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8ad40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of TestFormatMessageBasic.test_empty_string __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8b380>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___________ ERROR at setup of TestFormatMessageBasic.test_none_input ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8b600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestFormatMessageBasic.test_plain_text_specials_escaped ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8b920>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestFormatMessageBasic.test_plain_text_no_markdown _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8bb00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageCodeBlocks.test_fenced_code_block_preserved _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c15120>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestFormatMessageCodeBlocks.test_inline_code_preserved ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c15440>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageCodeBlocks.test_code_block_special_chars_not_escaped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8af20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageCodeBlocks.test_inline_code_special_chars_not_escaped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8ac00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestFormatMessageCodeBlocks.test_multiple_code_blocks ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdc540>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageCodeBlocks.test_inline_code_backslashes_escaped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdcd60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageCodeBlocks.test_fenced_code_block_backslashes_escaped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdd260>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageCodeBlocks.test_fenced_code_block_backticks_escaped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c153a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageCodeBlocks.test_inline_code_no_double_escape _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8bba0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestFormatMessageBoldItalic.test_bold_converted _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8045596340>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestFormatMessageBoldItalic.test_italic_converted ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdc360>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestFormatMessageBoldItalic.test_bold_with_special_chars __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdc540>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageBoldItalic.test_italic_with_special_chars _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdd800>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageBoldItalic.test_bold_and_italic_in_same_line _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdce00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageBoldItalic.test_reload_mcp_summary_escapes_dynamic_server_names _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdde40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestFormatMessageHeaders.test_h1_converted_to_bold _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdd620>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of TestFormatMessageHeaders.test_h2_converted _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cde520>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageHeaders.test_header_with_inner_bold_stripped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cde700>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestFormatMessageHeaders.test_header_with_special_chars ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cddbc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestFormatMessageHeaders.test_multiline_headers _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdeca0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestFormatMessageLinks.test_markdown_link_converted _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdeac0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestFormatMessageLinks.test_link_display_text_escaped ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdf2e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestFormatMessageLinks.test_link_url_parentheses_escaped __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdf4c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestFormatMessageLinks.test_link_with_surrounding_text ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cde480>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestItalicNewlineBug.test_bullet_list_not_corrupted _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdfa60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestItalicNewlineBug.test_asterisk_list_items_preserved ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdfe20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestItalicNewlineBug.test_italic_does_not_span_lines ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdfba0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestItalicNewlineBug.test_single_line_italic_still_works __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cde5c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageStrikethrough.test_strikethrough_converted _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdf600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageStrikethrough.test_strikethrough_with_special_chars _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdea20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageStrikethrough.test_strikethrough_in_code_not_converted _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cde5c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageStrikethrough.test_strikethrough_with_bold _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdea20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestFormatMessageSpoiler.test_spoiler_converted _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044c8ad40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestFormatMessageSpoiler.test_spoiler_with_special_chars __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475cf40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageSpoiler.test_spoiler_in_code_not_converted _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475c900>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestFormatMessageSpoiler.test_spoiler_pipes_not_escaped ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475cb80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestFormatMessageBlockquote.test_blockquote_converted ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475d620>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageBlockquote.test_blockquote_with_special_chars _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475c0e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestFormatMessageBlockquote.test_blockquote_multiline ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475dc60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageBlockquote.test_blockquote_in_code_not_converted _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475dee0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestFormatMessageBlockquote.test_nested_blockquote _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475e340>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageBlockquote.test_gt_in_middle_of_line_still_escaped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475e660>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestFormatMessageBlockquote.test_expandable_blockquote ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475e8e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageBlockquote.test_single_asterisk_gt_not_blockquote _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475eac0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageBlockquote.test_regular_blockquote_with_pipes_escaped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475ee80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageComplex.test_code_block_with_bold_outside _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdf600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageComplex.test_bold_inside_code_not_converted _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475e980>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageComplex.test_link_inside_code_not_converted _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475e340>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestFormatMessageComplex.test_header_after_code_block ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475efc0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestFormatMessageComplex.test_multiple_bold_segments ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475dee0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageComplex.test_special_chars_in_plain_text __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475f880>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of TestFormatMessageComplex.test_empty_bold __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475f100>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestFormatMessageComplex.test_empty_code_block _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475fd80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
____ ERROR at setup of TestFormatMessageComplex.test_placeholder_collision _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475fce0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_______ ERROR at setup of TestStripMdv2.test_removes_escape_backslashes ________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475fec0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of TestStripMdv2.test_removes_bold_markers ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475e0c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of TestStripMdv2.test_removes_italic_markers __________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044cdfce0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestStripMdv2.test_removes_both_bold_and_italic _______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044754540>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of TestStripMdv2.test_preserves_snake_case ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044754900>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestStripMdv2.test_preserves_multi_underscore_identifier __
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044755300>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__________ ERROR at setup of TestStripMdv2.test_plain_text_unchanged ___________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d80447554e0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______________ ERROR at setup of TestStripMdv2.test_empty_string _______________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d80447558a0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestStripMdv2.test_removes_strikethrough_markers ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044755b20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_________ ERROR at setup of TestStripMdv2.test_removes_spoiler_markers _________
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044755440>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestWrapMarkdownTables.test_basic_table_rewritten_as_row_groups _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804475fd80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestWrapMarkdownTables.test_bare_pipe_table_rewritten ____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044755f80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of TestWrapMarkdownTables.test_alignment_separators ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044755a80>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestWrapMarkdownTables.test_two_consecutive_tables_rewritten_separately _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044756340>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestWrapMarkdownTables.test_plain_text_with_pipes_not_wrapped _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d80447565c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
__ ERROR at setup of TestWrapMarkdownTables.test_horizontal_rule_not_wrapped ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044756840>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestWrapMarkdownTables.test_existing_code_block_with_pipes_left_alone _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044756a20>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestWrapMarkdownTables.test_no_pipe_character_short_circuits _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044756d40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_____ ERROR at setup of TestWrapMarkdownTables.test_no_dash_short_circuits _____
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044756c00>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestWrapMarkdownTables.test_single_column_separator_not_matched _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044757380>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
___ ERROR at setup of TestFormatMessageTables.test_table_rendered_as_bullets ___
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044757600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageTables.test_text_after_table_still_formatted _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044757880>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestFormatMessageTables.test_multiple_tables_in_single_message _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044757ba0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
______ ERROR at setup of test_send_escapes_chunk_indicator_for_markdownv2 ______
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044756660>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestEditMessageStreamingSafety.test_non_final_edit_uses_plain_text_without_markdown _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044757a60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestEditMessageStreamingSafety.test_final_edit_uses_markdownv2_with_plain_fallback _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044757060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestEditMessageStreamingSafety.test_message_too_long_splits_into_continuations_not_silent_truncation _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044757600>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestEditMessageStreamingSafety.test_message_too_long_continuations_preserve_topic_metadata _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044757060>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramGuestMentionGating.test_guest_mode_allows_explicit_mention_outside_allowed_chats _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804471cd60>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramGuestMentionGating.test_guest_mode_does_not_allow_reply_outside_allowed_chats _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044756d40>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramGuestMentionGating.test_guest_mode_disabled_keeps_allowed_chats_as_hard_gate_for_mentions _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d8044757880>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramGuestMentionGating.test_guest_mode_allows_bot_command_entity_outside_allowed_chats _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804471c360>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramGuestMentionGating.test_guest_mode_allows_text_mention_entity_outside_allowed_chats _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804471d260>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
_ ERROR at setup of TestTelegramGuestMentionGating.test_guest_mode_allows_mention_in_caption_outside_allowed_chats _
|
|
|
|
cls = <class '_pytest.runner.CallInfo'>
|
|
func = <function call_and_report.<locals>.<lambda> at 0x7d804471c2c0>
|
|
when = 'setup'
|
|
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
|
|
|
|
@classmethod
|
|
def from_call(
|
|
cls,
|
|
func: Callable[[], TResult],
|
|
when: Literal["collect", "setup", "call", "teardown"],
|
|
reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,
|
|
) -> CallInfo[TResult]:
|
|
"""Call func, wrapping the result in a CallInfo.
|
|
|
|
:param func:
|
|
The function to call. Called without arguments.
|
|
:type func: Callable[[], _pytest.runner.TResult]
|
|
:param when:
|
|
The phase in which the function is called.
|
|
:param reraise:
|
|
Exception or exceptions that shall propagate if raised by the
|
|
function, instead of being wrapped in the CallInfo.
|
|
"""
|
|
excinfo = None
|
|
instant = timing.Instant()
|
|
try:
|
|
> result: TResult | None = func()
|
|
^^^^^^
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:353:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:245: in <lambda>
|
|
lambda: runtest_hook(item=item, **kwds),
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_hooks.py:512: in __call__
|
|
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/pluggy/_manager.py:120: in _hookexec
|
|
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
|
|
yield
|
|
.venv/lib/python3.12/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
|
|
return (yield)
|
|
^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:165: in pytest_runtest_setup
|
|
item.session._setupstate.setup(item)
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:516: in setup
|
|
raise exc[0].with_traceback(exc[1])
|
|
.venv/lib/python3.12/site-packages/_pytest/runner.py:523: in setup
|
|
col.setup()
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:677: in setup
|
|
init_mod = importtestmodule(self.path / "__init__.py", self.config)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
.venv/lib/python3.12/site-packages/_pytest/python.py:552: in importtestmodule
|
|
config.pluginmanager.consider_module(mod)
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:845: in consider_module
|
|
self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:850: in _import_plugin_specs
|
|
plugins = _get_plugin_specs_as_list(spec)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
specs = <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
def _get_plugin_specs_as_list(
|
|
specs: None | types.ModuleType | str | Sequence[str],
|
|
) -> list[str]:
|
|
"""Parse a plugins specification into a list of plugin names."""
|
|
# None means empty.
|
|
if specs is None:
|
|
return []
|
|
# Workaround for #3899 - a submodule which happens to be called "pytest_plugins".
|
|
if isinstance(specs, types.ModuleType):
|
|
return []
|
|
# Comma-separated list.
|
|
if isinstance(specs, str):
|
|
return specs.split(",") if specs else []
|
|
# Direct specification.
|
|
if isinstance(specs, collections.abc.Sequence):
|
|
return list(specs)
|
|
> raise UsageError(
|
|
f"Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: {specs!r}"
|
|
)
|
|
E pytest.UsageError: Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: <MagicMock name='mock.pytest_plugins' id='137989864687664'>
|
|
|
|
.venv/lib/python3.12/site-packages/_pytest/config/__init__.py:908: UsageError
|
|
=========================== short test summary info ============================
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEscapeMdv2::test_escapes_all_special_characters
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEscapeMdv2::test_empty_string
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEscapeMdv2::test_no_special_characters
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEscapeMdv2::test_backslash_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEscapeMdv2::test_dot_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEscapeMdv2::test_exclamation_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEscapeMdv2::test_mixed_text_and_specials
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBasic::test_empty_string
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBasic::test_none_input
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBasic::test_plain_text_specials_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBasic::test_plain_text_no_markdown
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageCodeBlocks::test_fenced_code_block_preserved
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageCodeBlocks::test_inline_code_preserved
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageCodeBlocks::test_code_block_special_chars_not_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageCodeBlocks::test_inline_code_special_chars_not_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageCodeBlocks::test_multiple_code_blocks
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageCodeBlocks::test_inline_code_backslashes_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageCodeBlocks::test_fenced_code_block_backslashes_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageCodeBlocks::test_fenced_code_block_backticks_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageCodeBlocks::test_inline_code_no_double_escape
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBoldItalic::test_bold_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBoldItalic::test_italic_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBoldItalic::test_bold_with_special_chars
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBoldItalic::test_italic_with_special_chars
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBoldItalic::test_bold_and_italic_in_same_line
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBoldItalic::test_reload_mcp_summary_escapes_dynamic_server_names
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageHeaders::test_h1_converted_to_bold
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageHeaders::test_h2_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageHeaders::test_header_with_inner_bold_stripped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageHeaders::test_header_with_special_chars
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageHeaders::test_multiline_headers
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageLinks::test_markdown_link_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageLinks::test_link_display_text_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageLinks::test_link_url_parentheses_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageLinks::test_link_with_surrounding_text
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestItalicNewlineBug::test_bullet_list_not_corrupted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestItalicNewlineBug::test_asterisk_list_items_preserved
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestItalicNewlineBug::test_italic_does_not_span_lines
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestItalicNewlineBug::test_single_line_italic_still_works
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageStrikethrough::test_strikethrough_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageStrikethrough::test_strikethrough_with_special_chars
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageStrikethrough::test_strikethrough_in_code_not_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageStrikethrough::test_strikethrough_with_bold
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageSpoiler::test_spoiler_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageSpoiler::test_spoiler_with_special_chars
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageSpoiler::test_spoiler_in_code_not_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageSpoiler::test_spoiler_pipes_not_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBlockquote::test_blockquote_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBlockquote::test_blockquote_with_special_chars
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBlockquote::test_blockquote_multiline
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBlockquote::test_blockquote_in_code_not_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBlockquote::test_nested_blockquote
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBlockquote::test_gt_in_middle_of_line_still_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBlockquote::test_expandable_blockquote
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBlockquote::test_single_asterisk_gt_not_blockquote
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageBlockquote::test_regular_blockquote_with_pipes_escaped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageComplex::test_code_block_with_bold_outside
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageComplex::test_bold_inside_code_not_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageComplex::test_link_inside_code_not_converted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageComplex::test_header_after_code_block
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageComplex::test_multiple_bold_segments
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageComplex::test_special_chars_in_plain_text
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageComplex::test_empty_bold
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageComplex::test_empty_code_block
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageComplex::test_placeholder_collision
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_removes_escape_backslashes
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_removes_bold_markers
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_removes_italic_markers
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_removes_both_bold_and_italic
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_preserves_snake_case
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_preserves_multi_underscore_identifier
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_plain_text_unchanged
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_empty_string
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_removes_strikethrough_markers
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestStripMdv2::test_removes_spoiler_markers
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_basic_table_rewritten_as_row_groups
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_bare_pipe_table_rewritten
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_alignment_separators
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_two_consecutive_tables_rewritten_separately
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_plain_text_with_pipes_not_wrapped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_horizontal_rule_not_wrapped
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_existing_code_block_with_pipes_left_alone
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_no_pipe_character_short_circuits
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_no_dash_short_circuits
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestWrapMarkdownTables::test_single_column_separator_not_matched
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageTables::test_table_rendered_as_bullets
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageTables::test_text_after_table_still_formatted
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestFormatMessageTables::test_multiple_tables_in_single_message
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::test_send_escapes_chunk_indicator_for_markdownv2
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEditMessageStreamingSafety::test_non_final_edit_uses_plain_text_without_markdown
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEditMessageStreamingSafety::test_final_edit_uses_markdownv2_with_plain_fallback
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEditMessageStreamingSafety::test_message_too_long_splits_into_continuations_not_silent_truncation
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestEditMessageStreamingSafety::test_message_too_long_continuations_preserve_topic_metadata
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_allows_explicit_mention_outside_allowed_chats
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_does_not_allow_reply_outside_allowed_chats
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_disabled_keeps_allowed_chats_as_hard_gate_for_mentions
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_allows_bot_command_entity_outside_allowed_chats
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_allows_text_mention_entity_outside_allowed_chats
|
|
ERROR plugins/platforms/telegram/tests/test_telegram_format.py::TestTelegramGuestMentionGating::test_guest_mode_allows_mention_in_caption_outside_allowed_chats
|
|
============================= 99 errors in 29.37s ==============================
|
|
|
|
--- tests/gateway/test_voice_command.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 181 items
|
|
|
|
tests/gateway/test_voice_command.py .................................... [ 19%]
|
|
........................................................................ [ 59%]
|
|
....................F................................................... [ 99%]
|
|
. [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
________ TestSendVoiceReplyCleanup.test_files_cleaned_on_send_exception ________
|
|
|
|
self = <tests.gateway.test_voice_command.TestSendVoiceReplyCleanup object at 0x759ac2684f50>
|
|
tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-42460/test_files_cleaned_on_send_exc0')
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_files_cleaned_on_send_exception(self, tmp_path):
|
|
"""Temp files are removed even when send_voice raises."""
|
|
runner = _make_runner(tmp_path)
|
|
adapter = MagicMock()
|
|
adapter.send_voice = AsyncMock(side_effect=RuntimeError("send failed"))
|
|
adapter.is_in_voice_channel = MagicMock(return_value=False)
|
|
event = _make_event(message_type=MessageType.VOICE)
|
|
runner.adapters[event.source.platform] = adapter
|
|
runner._get_guild_id = MagicMock(return_value=None)
|
|
|
|
# Create a fake audio file that TTS would produce
|
|
fake_audio = tmp_path / "hermes_voice"
|
|
fake_audio.mkdir()
|
|
audio_file = fake_audio / "test.mp3"
|
|
audio_file.write_bytes(b"fake audio")
|
|
|
|
tts_result = json.dumps({
|
|
"success": True,
|
|
"file_path": str(audio_file),
|
|
})
|
|
|
|
with patch("gateway.run.asyncio.to_thread", new_callable=AsyncMock, return_value=tts_result), \
|
|
patch("hermes_agent_tts.tts_tool._strip_markdown_for_tts", return_value="hello"), \
|
|
patch("os.path.isfile", return_value=True), \
|
|
patch("os.makedirs"):
|
|
await runner._send_voice_reply(event, "Hello world")
|
|
|
|
# File should be cleaned up despite exception
|
|
> assert not audio_file.exists(), \
|
|
"Temp audio file must be cleaned up even when send_voice raises"
|
|
E AssertionError: Temp audio file must be cleaned up even when send_voice raises
|
|
E assert not True
|
|
E + where True = exists()
|
|
E + where exists = PosixPath('/tmp/pytest-of-ethie/pytest-42460/test_files_cleaned_on_send_exc0/hermes_voice/test.mp3').exists
|
|
|
|
tests/gateway/test_voice_command.py:2121: AssertionError
|
|
=========================== short test summary info ============================
|
|
FAILED tests/gateway/test_voice_command.py::TestSendVoiceReplyCleanup::test_files_cleaned_on_send_exception
|
|
======================== 1 failed, 180 passed in 7.92s =========================
|
|
|
|
--- tests/gateway/test_stt_config.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 6 items
|
|
|
|
tests/gateway/test_stt_config.py .....F [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
_______ test_prepare_inbound_message_text_transcribes_queued_voice_event _______
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_prepare_inbound_message_text_transcribes_queued_voice_event():
|
|
from gateway.run import GatewayRunner
|
|
|
|
runner = GatewayRunner.__new__(GatewayRunner)
|
|
runner.config = GatewayConfig(stt_enabled=True)
|
|
runner.adapters = {}
|
|
runner._model = "test-model"
|
|
runner._base_url = ""
|
|
runner._has_setup_skill = lambda: False
|
|
|
|
source = SessionSource(
|
|
platform=Platform.TELEGRAM,
|
|
chat_id="123",
|
|
chat_type="dm",
|
|
)
|
|
event = MessageEvent(
|
|
text="",
|
|
message_type=MessageType.VOICE,
|
|
source=source,
|
|
media_urls=["/tmp/queued-voice.ogg"],
|
|
media_types=["audio/ogg"],
|
|
)
|
|
|
|
with patch(
|
|
"hermes_agent_stt.transcription_tools.transcribe_audio",
|
|
return_value={
|
|
"success": True,
|
|
"transcript": "queued voice transcript",
|
|
"provider": "local_command",
|
|
},
|
|
):
|
|
result = await runner._prepare_inbound_message_text(
|
|
event=event,
|
|
source=source,
|
|
history=[],
|
|
)
|
|
|
|
assert result is not None
|
|
> assert "queued voice transcript" in result
|
|
E AssertionError: assert 'queued voice transcript' in '[The user sent a voice message but I had trouble transcribing it~ (Audio file not found: /tmp/queued-voice.ogg)]'
|
|
|
|
tests/gateway/test_stt_config.py:141: AssertionError
|
|
=============================== warnings summary ===============================
|
|
tests/gateway/test_stt_config.py::test_load_gateway_config_bridges_stt_enabled_from_config_yaml
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
tests/gateway/test_stt_config.py::test_load_gateway_config_bridges_stt_enabled_from_config_yaml
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
tests/gateway/test_stt_config.py::test_load_gateway_config_bridges_stt_enabled_from_config_yaml
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
FAILED tests/gateway/test_stt_config.py::test_prepare_inbound_message_text_transcribes_queued_voice_event
|
|
=================== 1 failed, 5 passed, 3 warnings in 7.56s ====================
|
|
|
|
--- tests/hermes_cli/test_codex_cli_model_picker.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 4 items
|
|
|
|
tests/hermes_cli/test_codex_cli_model_picker.py ..F. [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
________________ test_claude_code_file_detected_by_model_picker ________________
|
|
|
|
claude_code_only_env = PosixPath('/tmp/pytest-of-ethie/pytest-42518/test_claude_code_file_detected0/.hermes')
|
|
|
|
def test_claude_code_file_detected_by_model_picker(claude_code_only_env):
|
|
"""anthropic should appear when credentials only exist in ~/.claude/.credentials.json."""
|
|
from hermes_cli.model_switch import list_authenticated_providers
|
|
|
|
providers = list_authenticated_providers(
|
|
current_provider="anthropic",
|
|
max_models=10,
|
|
)
|
|
slugs = [p["slug"] for p in providers]
|
|
> assert "anthropic" in slugs, (
|
|
f"anthropic not found in /model picker providers: {slugs}"
|
|
)
|
|
E AssertionError: anthropic not found in /model picker providers: []
|
|
E assert 'anthropic' in []
|
|
|
|
tests/hermes_cli/test_codex_cli_model_picker.py:158: AssertionError
|
|
------------------------------ Captured log call -------------------------------
|
|
INFO hermes_cli.model_catalog:model_catalog.py:129 model catalog fetch failed (https://hermes-agent.nousresearch.com/docs/api/model-catalog.json): HTTP Error 403: Forbidden
|
|
=========================== short test summary info ============================
|
|
FAILED tests/hermes_cli/test_codex_cli_model_picker.py::test_claude_code_file_detected_by_model_picker
|
|
========================= 1 failed, 3 passed in 2.68s ==========================
|
|
|
|
--- tests/hermes_cli/test_gateway_platform_gating.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 4 items
|
|
|
|
tests/hermes_cli/test_gateway_platform_gating.py ..F. [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
___________ TestMatrixHiddenOnWindows.test_matrix_hidden_on_windows ____________
|
|
|
|
self = <tests.hermes_cli.test_gateway_platform_gating.TestMatrixHiddenOnWindows object at 0x73189987cfb0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x731898d70920>
|
|
|
|
def test_matrix_hidden_on_windows(self, monkeypatch):
|
|
"""The actual gate: matrix must NOT appear on Windows."""
|
|
import hermes_cli.gateway as gateway_mod
|
|
|
|
monkeypatch.setattr(gateway_mod.sys, "platform", "win32")
|
|
platforms = gateway_mod._all_platforms()
|
|
keys = {p["key"] for p in platforms}
|
|
> assert "matrix" not in keys, (
|
|
"matrix must be hidden on Windows — python-olm has no "
|
|
"Windows wheel and no native build path"
|
|
)
|
|
E AssertionError: matrix must be hidden on Windows — python-olm has no Windows wheel and no native build path
|
|
E assert 'matrix' not in {'bluebubbles', 'dingtalk', 'discord', 'email', 'feishu', 'google_chat', ...}
|
|
|
|
tests/hermes_cli/test_gateway_platform_gating.py:43: AssertionError
|
|
------------------------------ Captured log call -------------------------------
|
|
INFO hermes_cli.plugins:plugins.py:638 Plugin 'browser-browser-use' registered browser provider: browser-use
|
|
INFO hermes_cli.plugins:plugins.py:638 Plugin 'browser-browserbase' registered browser provider: browserbase
|
|
INFO hermes_cli.plugins:plugins.py:638 Plugin 'browser-firecrawl' registered browser provider: firecrawl
|
|
INFO hermes_cli.plugins:plugins.py:551 Plugin 'fal' registered image_gen provider: fal
|
|
INFO hermes_cli.plugins:plugins.py:551 Plugin 'openai' registered image_gen provider: openai
|
|
INFO hermes_cli.plugins:plugins.py:551 Plugin 'openai-codex' registered image_gen provider: openai-codex
|
|
INFO hermes_cli.plugins:plugins.py:551 Plugin 'xai' registered image_gen provider: xai
|
|
INFO hermes_cli.plugins:plugins.py:578 Plugin 'fal' registered video_gen provider: fal
|
|
INFO hermes_cli.plugins:plugins.py:578 Plugin 'xai' registered video_gen provider: xai
|
|
INFO hermes_cli.plugins:plugins.py:606 Plugin 'web-brave-free' registered web provider: brave-free
|
|
INFO hermes_cli.plugins:plugins.py:606 Plugin 'web-ddgs' registered web provider: ddgs
|
|
INFO hermes_cli.plugins:plugins.py:606 Plugin 'web-exa' registered web provider: exa
|
|
INFO hermes_cli.plugins:plugins.py:606 Plugin 'web-firecrawl' registered web provider: firecrawl
|
|
INFO hermes_cli.plugins:plugins.py:606 Plugin 'web-parallel' registered web provider: parallel
|
|
INFO hermes_cli.plugins:plugins.py:606 Plugin 'web-searxng' registered web provider: searxng
|
|
INFO hermes_cli.plugins:plugins.py:606 Plugin 'web-tavily' registered web provider: tavily
|
|
INFO hermes_cli.plugins:plugins.py:606 Plugin 'web-xai' registered web provider: xai
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'dingtalk' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'discord' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'feishu' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'google_chat' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'irc' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'line' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'matrix' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'mattermost' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'ntfy' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'simplex' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'slack' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'teams' re-registered (was plugin, now plugin)
|
|
INFO gateway.platform_registry:platform_registry.py:180 Platform 'telegram' re-registered (was plugin, now plugin)
|
|
INFO hermes_cli.plugins:plugins.py:1410 Plugin discovery complete: 84 found, 67 enabled
|
|
=============================== warnings summary ===============================
|
|
tests/hermes_cli/test_gateway_platform_gating.py::TestMatrixHiddenOnWindows::test_matrix_present_on_linux
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
import audioop
|
|
|
|
tests/hermes_cli/test_gateway_platform_gating.py::TestMatrixHiddenOnWindows::test_matrix_present_on_linux
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
tests/hermes_cli/test_gateway_platform_gating.py::TestMatrixHiddenOnWindows::test_matrix_present_on_linux
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
tests/hermes_cli/test_gateway_platform_gating.py::TestMatrixHiddenOnWindows::test_matrix_present_on_linux
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
FAILED tests/hermes_cli/test_gateway_platform_gating.py::TestMatrixHiddenOnWindows::test_matrix_hidden_on_windows
|
|
=================== 1 failed, 3 passed, 4 warnings in 7.06s ====================
|
|
|
|
--- tests/hermes_cli/test_web_server.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 145 items
|
|
|
|
tests/hermes_cli/test_web_server.py .................................... [ 24%]
|
|
........................................................................ [ 74%]
|
|
..............................F...... [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
____________ TestPtyWebSocket.test_client_input_reaches_child_stdin ____________
|
|
|
|
self = <tests.hermes_cli.test_web_server.TestPtyWebSocket object at 0x7caeb67c4cb0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7caea5bf2e40>
|
|
|
|
def test_client_input_reaches_child_stdin(self, monkeypatch):
|
|
# ``cat`` echoes stdin back, so a write → read round-trip proves
|
|
# the full duplex path.
|
|
monkeypatch.setattr(
|
|
self.ws_module,
|
|
"_resolve_chat_argv",
|
|
lambda resume=None, sidecar_url=None: (["/bin/cat"], None, None),
|
|
)
|
|
with self.client.websocket_connect(self._url()) as conn:
|
|
conn.send_bytes(b"round-trip-payload\n")
|
|
buf = b""
|
|
import time
|
|
|
|
deadline = time.monotonic() + 5.0
|
|
while time.monotonic() < deadline:
|
|
> frame = conn.receive_bytes()
|
|
^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/hermes_cli/test_web_server.py:2194:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <starlette.testclient.WebSocketTestSession object at 0x7caea7fe5460>
|
|
|
|
def receive_bytes(self) -> bytes:
|
|
message = self.receive()
|
|
self._raise_on_close(message)
|
|
> return cast(bytes, message["bytes"])
|
|
^^^^^^^^^^^^^^^^
|
|
E KeyError: 'bytes'
|
|
|
|
.venv/lib/python3.12/site-packages/starlette/testclient.py:187: KeyError
|
|
=============================== warnings summary ===============================
|
|
tests/hermes_cli/test_web_server.py::TestWebServerEndpoints::test_get_status
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
import audioop
|
|
|
|
tests/hermes_cli/test_web_server.py::TestWebServerEndpoints::test_get_status
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
tests/hermes_cli/test_web_server.py::TestWebServerEndpoints::test_get_status
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
tests/hermes_cli/test_web_server.py::TestWebServerEndpoints::test_get_status
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
tests/hermes_cli/test_web_server.py::TestPtyWebSocket::test_streams_child_stdout_to_client
|
|
tests/hermes_cli/test_web_server.py::TestPtyWebSocket::test_resize_escape_is_forwarded
|
|
tests/hermes_cli/test_web_server.py::TestPtyWebSocket::test_resume_parameter_is_forwarded_to_argv
|
|
tests/hermes_cli/test_web_server.py::TestPtyWebSocket::test_channel_param_propagates_sidecar_url
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/pty.py:95: DeprecationWarning: This process (pid=1896384) is multi-threaded, use of forkpty() may lead to deadlocks in the child.
|
|
pid, fd = os.forkpty()
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
FAILED tests/hermes_cli/test_web_server.py::TestPtyWebSocket::test_client_input_reaches_child_stdin
|
|
================== 1 failed, 144 passed, 8 warnings in 22.66s ==================
|
|
|
|
--- tests/tools/test_managed_media_gateways.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 5 items
|
|
|
|
tests/tools/test_managed_media_gateways.py FFFFF [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
__________ test_managed_fal_submit_uses_gateway_origin_and_nous_token __________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x74bc84a204a0>
|
|
|
|
def test_managed_fal_submit_uses_gateway_origin_and_nous_token(monkeypatch):
|
|
captured = {}
|
|
_install_fake_tools_package()
|
|
_install_fake_fal_client(captured)
|
|
monkeypatch.delenv("FAL_KEY", raising=False)
|
|
monkeypatch.setenv("FAL_QUEUE_GATEWAY_URL", "http://127.0.0.1:3009")
|
|
monkeypatch.setenv("TOOL_GATEWAY_USER_TOKEN", "nous-token")
|
|
|
|
image_generation_tool = _load_tool_module(
|
|
"tools.image_generation_tool",
|
|
"image_generation_tool.py",
|
|
)
|
|
# Inject _ManagedFalSyncClient from the plugin since the registry isn't populated
|
|
if image_generation_tool._ManagedFalSyncClient is None:
|
|
from hermes_agent_fal.fal_common import _ManagedFalSyncClient as _MSC
|
|
image_generation_tool._ManagedFalSyncClient = _MSC
|
|
if image_generation_tool._extract_http_status is None:
|
|
from hermes_agent_fal.fal_common import _extract_http_status as _EHS
|
|
image_generation_tool._extract_http_status = _EHS
|
|
if image_generation_tool._normalize_fal_queue_url_format is None:
|
|
from hermes_agent_fal.fal_common import _normalize_fal_queue_url_format as _NFQUF
|
|
image_generation_tool._normalize_fal_queue_url_format = _NFQUF
|
|
monkeypatch.setattr(image_generation_tool.uuid, "uuid4", lambda: "fal-submit-123")
|
|
|
|
> image_generation_tool._submit_fal_request(
|
|
"fal-ai/flux-2-pro",
|
|
{"prompt": "test prompt", "num_images": 1},
|
|
)
|
|
|
|
tests/tools/test_managed_media_gateways.py:191:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
tools/image_generation_tool.py:423: in _submit_fal_request
|
|
managed_client = _get_managed_fal_client(managed_gateway)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
tools/image_generation_tool.py:404: in _get_managed_fal_client
|
|
_managed_fal_client = _ManagedFalSyncClient(
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <hermes_agent_fal.fal_common._ManagedFalSyncClient object at 0x74bc84740320>
|
|
fal_client = None
|
|
|
|
def __init__(self, fal_client: Any, *, key: str, queue_run_origin: str):
|
|
sync_client_class = getattr(fal_client, "SyncClient", None)
|
|
if sync_client_class is None:
|
|
> raise RuntimeError("fal_client.SyncClient is required for managed FAL gateway mode")
|
|
E RuntimeError: fal_client.SyncClient is required for managed FAL gateway mode
|
|
|
|
plugins/image_gen/fal_pkg/hermes_agent_fal/fal_common.py:84: RuntimeError
|
|
______________ test_managed_fal_submit_reuses_cached_sync_client _______________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x74bc84936120>
|
|
|
|
def test_managed_fal_submit_reuses_cached_sync_client(monkeypatch):
|
|
captured = {}
|
|
_install_fake_tools_package()
|
|
_install_fake_fal_client(captured)
|
|
monkeypatch.delenv("FAL_KEY", raising=False)
|
|
monkeypatch.setenv("FAL_QUEUE_GATEWAY_URL", "http://127.0.0.1:3009")
|
|
monkeypatch.setenv("TOOL_GATEWAY_USER_TOKEN", "nous-token")
|
|
|
|
image_generation_tool = _load_tool_module(
|
|
"tools.image_generation_tool",
|
|
"image_generation_tool.py",
|
|
)
|
|
|
|
> image_generation_tool._submit_fal_request("fal-ai/flux-2-pro", {"prompt": "first"})
|
|
|
|
tests/tools/test_managed_media_gateways.py:218:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
tools/image_generation_tool.py:423: in _submit_fal_request
|
|
managed_client = _get_managed_fal_client(managed_gateway)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
managed_gateway = ManagedToolGatewayConfig(vendor='fal-queue', gateway_origin='http://127.0.0.1:3009', nous_user_token='nous-token', managed_mode=True)
|
|
|
|
def _get_managed_fal_client(managed_gateway):
|
|
"""Reuse the managed FAL client so its internal httpx.Client is not leaked per call."""
|
|
global _managed_fal_client, _managed_fal_client_config
|
|
|
|
client_config = (
|
|
managed_gateway.gateway_origin.rstrip("/"),
|
|
managed_gateway.nous_user_token,
|
|
)
|
|
with _managed_fal_client_lock:
|
|
if _managed_fal_client is not None and _managed_fal_client_config == client_config:
|
|
return _managed_fal_client
|
|
|
|
# Resolve fal_client on the legacy module — preserves the test
|
|
# pattern of monkey-patching ``image_generation_tool.fal_client``.
|
|
_load_fal_client()
|
|
_resolve_fal_provider()
|
|
> _managed_fal_client = _ManagedFalSyncClient(
|
|
fal_client,
|
|
key=managed_gateway.nous_user_token,
|
|
queue_run_origin=managed_gateway.gateway_origin,
|
|
)
|
|
E TypeError: 'NoneType' object is not callable
|
|
|
|
tools/image_generation_tool.py:404: TypeError
|
|
______ test_openai_tts_uses_managed_audio_gateway_when_direct_key_absent _______
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x74bc8407fe90>
|
|
tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-43025/test_openai_tts_uses_managed_a0')
|
|
|
|
def test_openai_tts_uses_managed_audio_gateway_when_direct_key_absent(monkeypatch, tmp_path):
|
|
captured = {}
|
|
_install_fake_tools_package()
|
|
_install_fake_openai_module(captured)
|
|
monkeypatch.delenv("VOICE_TOOLS_OPENAI_KEY", raising=False)
|
|
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
|
|
monkeypatch.setenv("TOOL_GATEWAY_DOMAIN", "nousresearch.com")
|
|
monkeypatch.setenv("TOOL_GATEWAY_USER_TOKEN", "nous-token")
|
|
|
|
> tts_tool = _load_tool_module("tools.tts_tool", "tts_tool.py")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_managed_media_gateways.py:235:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
tests/tools/test_managed_media_gateways.py:17: in _load_tool_module
|
|
spec.loader.exec_module(module)
|
|
<frozen importlib._bootstrap_external>:995: in exec_module
|
|
???
|
|
<frozen importlib._bootstrap_external>:1132: in get_code
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <_frozen_importlib_external.SourceFileLoader object at 0x74bc840b2030>
|
|
path = '/home/ari/src/hermes-agent/main/tools/tts_tool.py'
|
|
|
|
> ???
|
|
E FileNotFoundError: [Errno 2] No such file or directory: '/home/ari/src/hermes-agent/main/tools/tts_tool.py'
|
|
|
|
<frozen importlib._bootstrap_external>:1190: FileNotFoundError
|
|
__________ test_openai_tts_accepts_openai_api_key_as_direct_fallback ___________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x74bc847fdf40>
|
|
tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-43025/test_openai_tts_accepts_openai0')
|
|
|
|
def test_openai_tts_accepts_openai_api_key_as_direct_fallback(monkeypatch, tmp_path):
|
|
captured = {}
|
|
_install_fake_tools_package()
|
|
_install_fake_openai_module(captured)
|
|
monkeypatch.delenv("VOICE_TOOLS_OPENAI_KEY", raising=False)
|
|
monkeypatch.setenv("OPENAI_API_KEY", "openai-direct-key")
|
|
monkeypatch.setenv("TOOL_GATEWAY_DOMAIN", "nousresearch.com")
|
|
monkeypatch.setenv("TOOL_GATEWAY_USER_TOKEN", "nous-token")
|
|
|
|
> tts_tool = _load_tool_module("tools.tts_tool", "tts_tool.py")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_managed_media_gateways.py:257:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
tests/tools/test_managed_media_gateways.py:17: in _load_tool_module
|
|
spec.loader.exec_module(module)
|
|
<frozen importlib._bootstrap_external>:995: in exec_module
|
|
???
|
|
<frozen importlib._bootstrap_external>:1132: in get_code
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <_frozen_importlib_external.SourceFileLoader object at 0x74bc83f88230>
|
|
path = '/home/ari/src/hermes-agent/main/tools/tts_tool.py'
|
|
|
|
> ???
|
|
E FileNotFoundError: [Errno 2] No such file or directory: '/home/ari/src/hermes-agent/main/tools/tts_tool.py'
|
|
|
|
<frozen importlib._bootstrap_external>:1190: FileNotFoundError
|
|
___________ test_transcription_uses_model_specific_response_formats ____________
|
|
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x74bc840b1880>
|
|
tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-43025/test_transcription_uses_model_0')
|
|
|
|
def test_transcription_uses_model_specific_response_formats(monkeypatch, tmp_path):
|
|
whisper_capture = {}
|
|
_install_fake_tools_package()
|
|
_install_fake_openai_module(whisper_capture, transcription_response="hello from whisper")
|
|
monkeypatch.setenv("HERMES_HOME", str(tmp_path))
|
|
(tmp_path / "config.yaml").write_text("stt:\n provider: openai\n")
|
|
monkeypatch.delenv("VOICE_TOOLS_OPENAI_KEY", raising=False)
|
|
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
|
|
monkeypatch.setenv("TOOL_GATEWAY_DOMAIN", "nousresearch.com")
|
|
monkeypatch.setenv("TOOL_GATEWAY_USER_TOKEN", "nous-token")
|
|
|
|
> transcription_tools = _load_tool_module(
|
|
"tools.transcription_tools",
|
|
"transcription_tools.py",
|
|
)
|
|
|
|
tests/tools/test_managed_media_gateways.py:277:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
tests/tools/test_managed_media_gateways.py:17: in _load_tool_module
|
|
spec.loader.exec_module(module)
|
|
<frozen importlib._bootstrap_external>:995: in exec_module
|
|
???
|
|
<frozen importlib._bootstrap_external>:1132: in get_code
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <_frozen_importlib_external.SourceFileLoader object at 0x74bc83ef7170>
|
|
path = '/home/ari/src/hermes-agent/main/tools/transcription_tools.py'
|
|
|
|
> ???
|
|
E FileNotFoundError: [Errno 2] No such file or directory: '/home/ari/src/hermes-agent/main/tools/transcription_tools.py'
|
|
|
|
<frozen importlib._bootstrap_external>:1190: FileNotFoundError
|
|
=========================== short test summary info ============================
|
|
FAILED tests/tools/test_managed_media_gateways.py::test_managed_fal_submit_uses_gateway_origin_and_nous_token
|
|
FAILED tests/tools/test_managed_media_gateways.py::test_managed_fal_submit_reuses_cached_sync_client
|
|
FAILED tests/tools/test_managed_media_gateways.py::test_openai_tts_uses_managed_audio_gateway_when_direct_key_absent
|
|
FAILED tests/tools/test_managed_media_gateways.py::test_openai_tts_accepts_openai_api_key_as_direct_fallback
|
|
FAILED tests/tools/test_managed_media_gateways.py::test_transcription_uses_model_specific_response_formats
|
|
============================== 5 failed in 0.76s ===============================
|
|
|
|
--- tests/tools/test_image_generation.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 55 items
|
|
|
|
tests/tools/test_image_generation.py ................................... [ 63%]
|
|
................FF.F [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
_ TestManagedGatewayErrorTranslation.test_4xx_translates_to_value_error_with_remediation _
|
|
|
|
model = 'fal-ai/nano-banana-pro', arguments = {'prompt': 'x'}
|
|
|
|
def _submit_fal_request(model: str, arguments: Dict[str, Any]):
|
|
"""Submit a FAL request using direct credentials or the managed queue gateway."""
|
|
# Trigger the lazy import on first call. Idempotent.
|
|
_load_fal_client()
|
|
_resolve_fal_provider()
|
|
request_headers = {"x-idempotency-key": str(uuid.uuid4())}
|
|
managed_gateway = _resolve_managed_fal_gateway()
|
|
if managed_gateway is None:
|
|
return fal_client.submit(model, arguments=arguments, headers=request_headers)
|
|
|
|
managed_client = _get_managed_fal_client(managed_gateway)
|
|
try:
|
|
> return managed_client.submit(
|
|
model,
|
|
arguments=arguments,
|
|
headers=request_headers,
|
|
)
|
|
|
|
tools/image_generation_tool.py:425:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1139: in __call__
|
|
return self._mock_call(*args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1143: in _mock_call
|
|
return self._execute_mock_call(*args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <MagicMock name='mock.submit' id='133379798342768'>
|
|
args = ('fal-ai/nano-banana-pro',)
|
|
kwargs = {'arguments': {'prompt': 'x'}, 'headers': {'x-idempotency-key': '9dd946fd-c7f5-4455-82fa-82574c4f9b56'}}
|
|
effect = _MockHttpxError('Forbidden')
|
|
|
|
def _execute_mock_call(self, /, *args, **kwargs):
|
|
# separate from _increment_mock_call so that awaited functions are
|
|
# executed separately from their call, also AsyncMock overrides this method
|
|
|
|
effect = self.side_effect
|
|
if effect is not None:
|
|
if _is_exception(effect):
|
|
> raise effect
|
|
E tests.tools.test_image_generation._MockHttpxError: Forbidden
|
|
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1198: _MockHttpxError
|
|
|
|
During handling of the above exception, another exception occurred:
|
|
|
|
self = <tests.tools.test_image_generation.TestManagedGatewayErrorTranslation object at 0x794ee7af3a70>
|
|
image_tool = <module 'tools.image_generation_tool' from '/home/ari/src/hermes-agent/main/tools/image_generation_tool.py'>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x794ee780a3c0>
|
|
|
|
def test_4xx_translates_to_value_error_with_remediation(self, image_tool, monkeypatch):
|
|
"""403 from managed gateway → ValueError mentioning FAL_KEY + hermes tools."""
|
|
from unittest.mock import MagicMock
|
|
|
|
# Simulate: managed mode active, managed submit raises 4xx.
|
|
managed_gateway = MagicMock()
|
|
managed_gateway.gateway_origin = "https://fal-queue-gateway.example.com"
|
|
managed_gateway.nous_user_token = "test-token"
|
|
monkeypatch.setattr(image_tool, "_resolve_managed_fal_gateway",
|
|
lambda: managed_gateway)
|
|
|
|
bad_request = _MockHttpxError(403, "Forbidden")
|
|
mock_managed_client = MagicMock()
|
|
mock_managed_client.submit.side_effect = bad_request
|
|
monkeypatch.setattr(image_tool, "_get_managed_fal_client",
|
|
lambda gw: mock_managed_client)
|
|
|
|
with pytest.raises(ValueError) as exc_info:
|
|
> image_tool._submit_fal_request("fal-ai/nano-banana-pro", {"prompt": "x"})
|
|
|
|
tests/tools/test_image_generation.py:438:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
model = 'fal-ai/nano-banana-pro', arguments = {'prompt': 'x'}
|
|
|
|
def _submit_fal_request(model: str, arguments: Dict[str, Any]):
|
|
"""Submit a FAL request using direct credentials or the managed queue gateway."""
|
|
# Trigger the lazy import on first call. Idempotent.
|
|
_load_fal_client()
|
|
_resolve_fal_provider()
|
|
request_headers = {"x-idempotency-key": str(uuid.uuid4())}
|
|
managed_gateway = _resolve_managed_fal_gateway()
|
|
if managed_gateway is None:
|
|
return fal_client.submit(model, arguments=arguments, headers=request_headers)
|
|
|
|
managed_client = _get_managed_fal_client(managed_gateway)
|
|
try:
|
|
return managed_client.submit(
|
|
model,
|
|
arguments=arguments,
|
|
headers=request_headers,
|
|
)
|
|
except Exception as exc:
|
|
# 4xx from the managed gateway typically means the portal doesn't
|
|
# currently proxy this model (allowlist miss, billing gate, etc.)
|
|
# — surface a clearer message with actionable remediation instead
|
|
# of a raw HTTP error from httpx.
|
|
> status = _extract_http_status(exc)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E TypeError: 'NoneType' object is not callable
|
|
|
|
tools/image_generation_tool.py:435: TypeError
|
|
________ TestManagedGatewayErrorTranslation.test_5xx_is_not_translated _________
|
|
|
|
model = 'fal-ai/flux-2-pro', arguments = {'prompt': 'x'}
|
|
|
|
def _submit_fal_request(model: str, arguments: Dict[str, Any]):
|
|
"""Submit a FAL request using direct credentials or the managed queue gateway."""
|
|
# Trigger the lazy import on first call. Idempotent.
|
|
_load_fal_client()
|
|
_resolve_fal_provider()
|
|
request_headers = {"x-idempotency-key": str(uuid.uuid4())}
|
|
managed_gateway = _resolve_managed_fal_gateway()
|
|
if managed_gateway is None:
|
|
return fal_client.submit(model, arguments=arguments, headers=request_headers)
|
|
|
|
managed_client = _get_managed_fal_client(managed_gateway)
|
|
try:
|
|
> return managed_client.submit(
|
|
model,
|
|
arguments=arguments,
|
|
headers=request_headers,
|
|
)
|
|
|
|
tools/image_generation_tool.py:425:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1139: in __call__
|
|
return self._mock_call(*args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1143: in _mock_call
|
|
return self._execute_mock_call(*args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <MagicMock name='mock.submit' id='133379798171376'>
|
|
args = ('fal-ai/flux-2-pro',)
|
|
kwargs = {'arguments': {'prompt': 'x'}, 'headers': {'x-idempotency-key': 'bf77c206-ea29-491a-8f58-be72865e6644'}}
|
|
effect = _MockHttpxError('Bad Gateway')
|
|
|
|
def _execute_mock_call(self, /, *args, **kwargs):
|
|
# separate from _increment_mock_call so that awaited functions are
|
|
# executed separately from their call, also AsyncMock overrides this method
|
|
|
|
effect = self.side_effect
|
|
if effect is not None:
|
|
if _is_exception(effect):
|
|
> raise effect
|
|
E tests.tools.test_image_generation._MockHttpxError: Bad Gateway
|
|
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1198: _MockHttpxError
|
|
|
|
During handling of the above exception, another exception occurred:
|
|
|
|
self = <tests.tools.test_image_generation.TestManagedGatewayErrorTranslation object at 0x794ee7af2c00>
|
|
image_tool = <module 'tools.image_generation_tool' from '/home/ari/src/hermes-agent/main/tools/image_generation_tool.py'>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x794ee780a270>
|
|
|
|
def test_5xx_is_not_translated(self, image_tool, monkeypatch):
|
|
"""500s are real outages, not model-availability issues — don't rewrite them."""
|
|
from unittest.mock import MagicMock
|
|
|
|
managed_gateway = MagicMock()
|
|
monkeypatch.setattr(image_tool, "_resolve_managed_fal_gateway",
|
|
lambda: managed_gateway)
|
|
|
|
server_error = _MockHttpxError(502, "Bad Gateway")
|
|
mock_managed_client = MagicMock()
|
|
mock_managed_client.submit.side_effect = server_error
|
|
monkeypatch.setattr(image_tool, "_get_managed_fal_client",
|
|
lambda gw: mock_managed_client)
|
|
|
|
with pytest.raises(_MockHttpxError):
|
|
> image_tool._submit_fal_request("fal-ai/flux-2-pro", {"prompt": "x"})
|
|
|
|
tests/tools/test_image_generation.py:463:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
model = 'fal-ai/flux-2-pro', arguments = {'prompt': 'x'}
|
|
|
|
def _submit_fal_request(model: str, arguments: Dict[str, Any]):
|
|
"""Submit a FAL request using direct credentials or the managed queue gateway."""
|
|
# Trigger the lazy import on first call. Idempotent.
|
|
_load_fal_client()
|
|
_resolve_fal_provider()
|
|
request_headers = {"x-idempotency-key": str(uuid.uuid4())}
|
|
managed_gateway = _resolve_managed_fal_gateway()
|
|
if managed_gateway is None:
|
|
return fal_client.submit(model, arguments=arguments, headers=request_headers)
|
|
|
|
managed_client = _get_managed_fal_client(managed_gateway)
|
|
try:
|
|
return managed_client.submit(
|
|
model,
|
|
arguments=arguments,
|
|
headers=request_headers,
|
|
)
|
|
except Exception as exc:
|
|
# 4xx from the managed gateway typically means the portal doesn't
|
|
# currently proxy this model (allowlist miss, billing gate, etc.)
|
|
# — surface a clearer message with actionable remediation instead
|
|
# of a raw HTTP error from httpx.
|
|
> status = _extract_http_status(exc)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E TypeError: 'NoneType' object is not callable
|
|
|
|
tools/image_generation_tool.py:435: TypeError
|
|
_ TestManagedGatewayErrorTranslation.test_non_http_exception_from_managed_bubbles_up _
|
|
|
|
model = 'fal-ai/flux-2-pro', arguments = {'prompt': 'x'}
|
|
|
|
def _submit_fal_request(model: str, arguments: Dict[str, Any]):
|
|
"""Submit a FAL request using direct credentials or the managed queue gateway."""
|
|
# Trigger the lazy import on first call. Idempotent.
|
|
_load_fal_client()
|
|
_resolve_fal_provider()
|
|
request_headers = {"x-idempotency-key": str(uuid.uuid4())}
|
|
managed_gateway = _resolve_managed_fal_gateway()
|
|
if managed_gateway is None:
|
|
return fal_client.submit(model, arguments=arguments, headers=request_headers)
|
|
|
|
managed_client = _get_managed_fal_client(managed_gateway)
|
|
try:
|
|
> return managed_client.submit(
|
|
model,
|
|
arguments=arguments,
|
|
headers=request_headers,
|
|
)
|
|
|
|
tools/image_generation_tool.py:425:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1139: in __call__
|
|
return self._mock_call(*args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1143: in _mock_call
|
|
return self._execute_mock_call(*args, **kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <MagicMock name='mock.submit' id='133379798346512'>
|
|
args = ('fal-ai/flux-2-pro',)
|
|
kwargs = {'arguments': {'prompt': 'x'}, 'headers': {'x-idempotency-key': '4588543a-f60c-4d25-8962-f8d6173ecc93'}}
|
|
effect = ConnectionError('network down')
|
|
|
|
def _execute_mock_call(self, /, *args, **kwargs):
|
|
# separate from _increment_mock_call so that awaited functions are
|
|
# executed separately from their call, also AsyncMock overrides this method
|
|
|
|
effect = self.side_effect
|
|
if effect is not None:
|
|
if _is_exception(effect):
|
|
> raise effect
|
|
E ConnectionError: network down
|
|
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:1198: ConnectionError
|
|
|
|
During handling of the above exception, another exception occurred:
|
|
|
|
self = <tests.tools.test_image_generation.TestManagedGatewayErrorTranslation object at 0x794ee7af18e0>
|
|
image_tool = <module 'tools.image_generation_tool' from '/home/ari/src/hermes-agent/main/tools/image_generation_tool.py'>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x794ee77bbfb0>
|
|
|
|
def test_non_http_exception_from_managed_bubbles_up(self, image_tool, monkeypatch):
|
|
"""Connection errors, timeouts, etc. from managed mode aren't 4xx —
|
|
they should bubble up unchanged so callers can retry or diagnose."""
|
|
from unittest.mock import MagicMock
|
|
|
|
managed_gateway = MagicMock()
|
|
monkeypatch.setattr(image_tool, "_resolve_managed_fal_gateway",
|
|
lambda: managed_gateway)
|
|
|
|
conn_error = ConnectionError("network down")
|
|
mock_managed_client = MagicMock()
|
|
mock_managed_client.submit.side_effect = conn_error
|
|
monkeypatch.setattr(image_tool, "_get_managed_fal_client",
|
|
lambda gw: mock_managed_client)
|
|
|
|
with pytest.raises(ConnectionError):
|
|
> image_tool._submit_fal_request("fal-ai/flux-2-pro", {"prompt": "x"})
|
|
|
|
tests/tools/test_image_generation.py:498:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
model = 'fal-ai/flux-2-pro', arguments = {'prompt': 'x'}
|
|
|
|
def _submit_fal_request(model: str, arguments: Dict[str, Any]):
|
|
"""Submit a FAL request using direct credentials or the managed queue gateway."""
|
|
# Trigger the lazy import on first call. Idempotent.
|
|
_load_fal_client()
|
|
_resolve_fal_provider()
|
|
request_headers = {"x-idempotency-key": str(uuid.uuid4())}
|
|
managed_gateway = _resolve_managed_fal_gateway()
|
|
if managed_gateway is None:
|
|
return fal_client.submit(model, arguments=arguments, headers=request_headers)
|
|
|
|
managed_client = _get_managed_fal_client(managed_gateway)
|
|
try:
|
|
return managed_client.submit(
|
|
model,
|
|
arguments=arguments,
|
|
headers=request_headers,
|
|
)
|
|
except Exception as exc:
|
|
# 4xx from the managed gateway typically means the portal doesn't
|
|
# currently proxy this model (allowlist miss, billing gate, etc.)
|
|
# — surface a clearer message with actionable remediation instead
|
|
# of a raw HTTP error from httpx.
|
|
> status = _extract_http_status(exc)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E TypeError: 'NoneType' object is not callable
|
|
|
|
tools/image_generation_tool.py:435: TypeError
|
|
=========================== short test summary info ============================
|
|
FAILED tests/tools/test_image_generation.py::TestManagedGatewayErrorTranslation::test_4xx_translates_to_value_error_with_remediation
|
|
FAILED tests/tools/test_image_generation.py::TestManagedGatewayErrorTranslation::test_5xx_is_not_translated
|
|
FAILED tests/tools/test_image_generation.py::TestManagedGatewayErrorTranslation::test_non_http_exception_from_managed_bubbles_up
|
|
========================= 3 failed, 52 passed in 2.61s =========================
|
|
|
|
--- tests/tools/test_local_background_child_hang.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 8 items
|
|
|
|
tests/tools/test_local_background_child_hang.py ......FF [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
___ TestBackgroundChildDoesNotHang.test_utf8_multibyte_across_read_boundary ____
|
|
|
|
self = <tests.tools.test_local_background_child_hang.TestBackgroundChildDoesNotHang object at 0x772fea8c8410>
|
|
local_env = <tools.environments.local.LocalEnvironment object at 0x772fe9451940>
|
|
|
|
def test_utf8_multibyte_across_read_boundary(self, local_env):
|
|
"""Multibyte UTF-8 characters straddling a 4096-byte ``os.read()`` boundary
|
|
must be decoded correctly via the incremental decoder — not lost to a
|
|
``UnicodeDecodeError`` fallback. Regression for a bug in the first draft
|
|
of the fix where a strict ``bytes.decode('utf-8')`` on each raw chunk
|
|
wiped the entire buffer as soon as any chunk split a multi-byte char.
|
|
"""
|
|
# 10000 "日" chars = 30000 bytes — guaranteed to cross multiple 4096
|
|
# read boundaries, and most boundaries will land in the middle of the
|
|
# 3-byte UTF-8 encoding of U+65E5.
|
|
cmd = (
|
|
'python3 -c \'import sys; '
|
|
'sys.stdout.buffer.write(chr(0x65e5).encode("utf-8") * 10000); '
|
|
'sys.stdout.buffer.write(b"\\n")\''
|
|
)
|
|
result = local_env.execute(cmd, timeout=10)
|
|
> assert result["returncode"] == 0
|
|
E assert 127 == 0
|
|
|
|
tests/tools/test_local_background_child_hang.py:129: AssertionError
|
|
_ TestBackgroundChildDoesNotHang.test_invalid_utf8_uses_replacement_not_fallback _
|
|
|
|
self = <tests.tools.test_local_background_child_hang.TestBackgroundChildDoesNotHang object at 0x772fea8c9c70>
|
|
local_env = <tools.environments.local.LocalEnvironment object at 0x772fe946d070>
|
|
|
|
def test_invalid_utf8_uses_replacement_not_fallback(self, local_env):
|
|
"""Truly invalid byte sequences must be substituted with U+FFFD (matching
|
|
the pre-fix ``errors='replace'`` behaviour of the old ``TextIOWrapper``
|
|
drain), not clobber the entire buffer with a fallback placeholder.
|
|
"""
|
|
# Write a deliberate invalid UTF-8 lead byte sandwiched between valid ASCII
|
|
cmd = (
|
|
'python3 -c \'import sys; '
|
|
'sys.stdout.buffer.write(b"before "); '
|
|
'sys.stdout.buffer.write(b"\\xff\\xfe"); '
|
|
'sys.stdout.buffer.write(b" after\\n")\''
|
|
)
|
|
result = local_env.execute(cmd, timeout=5)
|
|
> assert result["returncode"] == 0
|
|
E assert 127 == 0
|
|
|
|
tests/tools/test_local_background_child_hang.py:151: AssertionError
|
|
=========================== short test summary info ============================
|
|
FAILED tests/tools/test_local_background_child_hang.py::TestBackgroundChildDoesNotHang::test_utf8_multibyte_across_read_boundary
|
|
FAILED tests/tools/test_local_background_child_hang.py::TestBackgroundChildDoesNotHang::test_invalid_utf8_uses_replacement_not_fallback
|
|
========================= 2 failed, 6 passed in 4.71s ==========================
|
|
|
|
--- tests/tools/test_process_registry.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 64 items
|
|
|
|
tests/tools/test_process_registry.py ..................F................ [ 54%]
|
|
............................. [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
____ TestStdinHelpers.test_close_stdin_allows_eof_driven_process_to_finish _____
|
|
|
|
self = <tests.tools.test_process_registry.TestStdinHelpers object at 0x7272c3a67a70>
|
|
registry = <tools.process_registry.ProcessRegistry object at 0x7272c37f2030>
|
|
tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-43067/test_close_stdin_allows_eof_dr0')
|
|
|
|
def test_close_stdin_allows_eof_driven_process_to_finish(self, registry, tmp_path):
|
|
"""PTY mode: writing data + sending EOF lets an EOF-driven child finish.
|
|
|
|
Background non-PTY mode used to expose subprocess stdin via a pipe,
|
|
but PR #214b95392 detached non-PTY stdin to DEVNULL to fix keyboard
|
|
lockout (#17959). For interactive stdin → PTY mode is now the only
|
|
supported path.
|
|
"""
|
|
session = registry.spawn_local(
|
|
'python3 -c "import sys; print(sys.stdin.read().strip())"',
|
|
cwd=str(tmp_path),
|
|
use_pty=True,
|
|
)
|
|
|
|
try:
|
|
time.sleep(0.5)
|
|
> assert registry.submit_stdin(session.id, "hello")["status"] == "ok"
|
|
E AssertionError: assert 'already_exited' == 'ok'
|
|
E
|
|
E - ok
|
|
E + already_exited
|
|
|
|
tests/tools/test_process_registry.py:314: AssertionError
|
|
=========================== short test summary info ============================
|
|
FAILED tests/tools/test_process_registry.py::TestStdinHelpers::test_close_stdin_allows_eof_driven_process_to_finish
|
|
========================= 1 failed, 63 passed in 3.27s =========================
|
|
|
|
--- tests/tools/test_vercel_sandbox_environment.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 16 items
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py EEEEEEEEEEEEEEEE [100%]
|
|
|
|
==================================== ERRORS ====================================
|
|
_ ERROR at setup of TestStartup.test_default_cwd_tracks_remote_workspace_root __
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb4707d0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb359520>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
__ ERROR at setup of TestStartup.test_tilde_cwd_resolves_against_remote_home ___
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb035730>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb1ed100>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestStartup.test_pending_sandbox_timeout_raises_descriptive_error _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb03fb90>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb358f50>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestFileSync.test_initial_sync_uploads_managed_files_under_remote_home _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb06e0f0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb0361e0>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
__ ERROR at setup of TestFileSync.test_execute_resyncs_changed_managed_files ___
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb0352b0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb03f110>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestFileSync.test_cleanup_syncs_back_snapshots_closes_and_is_idempotent _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb470650>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb03e720>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestFileSync.test_cleanup_sync_back_failure_from_download_does_not_block_snapshot _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb08acc0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb034aa0>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestExecute.test_execute_recreates_unhealthy_sandbox_before_running_command[terminal-state] _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb045370>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb48c5f0>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestExecute.test_execute_recreates_unhealthy_sandbox_before_running_command[refresh-failure] _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb48dd90>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb08a510>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestExecute.test_run_bash_handle_uses_captured_sandbox_for_exec_and_cancel _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb036d80>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb089460>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestSnapshotPersistence.test_create_restores_from_saved_snapshot _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb045fa0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb089f70>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestSnapshotPersistence.test_restore_failure_prunes_snapshot_and_falls_back_to_fresh_sandbox _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb20c920>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb037440>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestSnapshotPersistence.test_cleanup_stops_when_snapshot_fails_without_storing_metadata _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb035580>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb047500>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestSnapshotPersistence.test_non_persistent_cleanup_stops_without_snapshot _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb434bf0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb046690>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
_ ERROR at setup of TestSnapshotPersistence.test_persistent_cleanup_without_task_id_stops_without_snapshot _
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb20d4c0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb0340b0>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
__ ERROR at setup of TestCleanup.test_cleanup_continues_when_sync_back_raises __
|
|
|
|
vercel_sdk = <tests.tools.test_vercel_sandbox_environment._FakeSDK object at 0x7b5adb0abd40>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7b5adb48f9e0>
|
|
|
|
@pytest.fixture()
|
|
def vercel_module(vercel_sdk, monkeypatch):
|
|
monkeypatch.setattr("tools.environments.base.is_interrupted", lambda: False)
|
|
monkeypatch.setattr("tools.credential_files.get_credential_file_mounts", lambda: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_skills_files", lambda **kwargs: [])
|
|
monkeypatch.setattr("tools.credential_files.iter_cache_files", lambda **kwargs: [])
|
|
|
|
> module = importlib.import_module("tools.environments.vercel_sandbox")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_vercel_sandbox_environment.py:223:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/importlib/__init__.py:90: in import_module
|
|
return _bootstrap._gcd_import(name[level:], package, level)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
<frozen importlib._bootstrap>:1387: in _gcd_import
|
|
???
|
|
<frozen importlib._bootstrap>:1360: in _find_and_load
|
|
???
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
name = 'tools.environments.vercel_sandbox'
|
|
import_ = <function _gcd_import at 0x7b5add7a00e0>
|
|
|
|
> ???
|
|
E ModuleNotFoundError: No module named 'tools.environments.vercel_sandbox'
|
|
|
|
<frozen importlib._bootstrap>:1324: ModuleNotFoundError
|
|
=========================== short test summary info ============================
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestStartup::test_default_cwd_tracks_remote_workspace_root
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestStartup::test_tilde_cwd_resolves_against_remote_home
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestStartup::test_pending_sandbox_timeout_raises_descriptive_error
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestFileSync::test_initial_sync_uploads_managed_files_under_remote_home
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestFileSync::test_execute_resyncs_changed_managed_files
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestFileSync::test_cleanup_syncs_back_snapshots_closes_and_is_idempotent
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestFileSync::test_cleanup_sync_back_failure_from_download_does_not_block_snapshot
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestExecute::test_execute_recreates_unhealthy_sandbox_before_running_command[terminal-state]
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestExecute::test_execute_recreates_unhealthy_sandbox_before_running_command[refresh-failure]
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestExecute::test_run_bash_handle_uses_captured_sandbox_for_exec_and_cancel
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestSnapshotPersistence::test_create_restores_from_saved_snapshot
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestSnapshotPersistence::test_restore_failure_prunes_snapshot_and_falls_back_to_fresh_sandbox
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestSnapshotPersistence::test_cleanup_stops_when_snapshot_fails_without_storing_metadata
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestSnapshotPersistence::test_non_persistent_cleanup_stops_without_snapshot
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestSnapshotPersistence::test_persistent_cleanup_without_task_id_stops_without_snapshot
|
|
ERROR tests/tools/test_vercel_sandbox_environment.py::TestCleanup::test_cleanup_continues_when_sync_back_raises
|
|
============================== 16 errors in 0.81s ==============================
|
|
|
|
--- tests/tools/test_voice_cli_integration.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 84 items
|
|
|
|
tests/tools/test_voice_cli_integration.py ..............s............... [ 35%]
|
|
...................................FF.F.F............. [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
______________ TestVoiceSpeakResponseReal.test_markdown_stripped _______________
|
|
|
|
self = <tests.tools.test_voice_cli_integration.TestVoiceSpeakResponseReal object at 0x70307b37c9b0>
|
|
mock_tts = <MagicMock name='text_to_speech_tool' id='123353477759920'>
|
|
_play = <MagicMock name='play_audio_file' id='123353485330240'>
|
|
_mkd = <MagicMock name='makedirs' id='123353485409840'>
|
|
_isf = <MagicMock name='isfile' id='123353485395248'>
|
|
_gsz = <MagicMock name='getsize' id='123353485403072'>
|
|
_unl = <MagicMock name='unlink' id='123353485410032'>
|
|
_cp = <MagicMock name='_cprint' id='123353531152240'>
|
|
|
|
@patch("cli._cprint")
|
|
@patch("cli.os.unlink")
|
|
@patch("cli.os.path.getsize", return_value=1000)
|
|
@patch("cli.os.path.isfile", return_value=True)
|
|
@patch("cli.os.makedirs")
|
|
@patch("tools.voice_mode.play_audio_file")
|
|
@patch("hermes_agent_tts.tts_tool.text_to_speech_tool", return_value='{"success": true}')
|
|
def test_markdown_stripped(self, mock_tts, _play, _mkd, _isf, _gsz, _unl, _cp):
|
|
cli = _make_voice_cli(_voice_tts=True)
|
|
cli._voice_speak_response("## Title\n**bold** and `code`")
|
|
> call_text = mock_tts.call_args.kwargs["text"]
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E AttributeError: 'NoneType' object has no attribute 'kwargs'
|
|
|
|
tests/tools/test_voice_cli_integration.py:1082: AttributeError
|
|
------------------------------ Captured log call -------------------------------
|
|
WARNING cli:cli.py:10906 Voice TTS playback failed: tts tool provider not registered
|
|
_____________ TestVoiceSpeakResponseReal.test_code_blocks_removed ______________
|
|
|
|
self = <tests.tools.test_voice_cli_integration.TestVoiceSpeakResponseReal object at 0x70307b37e330>
|
|
mock_tts = <MagicMock name='text_to_speech_tool' id='123353477763664'>
|
|
_mkd = <MagicMock name='makedirs' id='123353533823504'>
|
|
_cp = <MagicMock name='_cprint' id='123353533810592'>
|
|
|
|
@patch("cli._cprint")
|
|
@patch("cli.os.makedirs")
|
|
@patch("hermes_agent_tts.tts_tool.text_to_speech_tool", return_value='{"success": true}')
|
|
def test_code_blocks_removed(self, mock_tts, _mkd, _cp):
|
|
cli = _make_voice_cli(_voice_tts=True)
|
|
cli._voice_speak_response("```python\nprint('hi')\n```\nSome text")
|
|
> call_text = mock_tts.call_args.kwargs["text"]
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E AttributeError: 'NoneType' object has no attribute 'kwargs'
|
|
|
|
tests/tools/test_voice_cli_integration.py:1093: AttributeError
|
|
------------------------------ Captured log call -------------------------------
|
|
WARNING cli:cli.py:10906 Voice TTS playback failed: tts tool provider not registered
|
|
_____________ TestVoiceSpeakResponseReal.test_long_text_truncated ______________
|
|
|
|
self = <tests.tools.test_voice_cli_integration.TestVoiceSpeakResponseReal object at 0x70307b37ebd0>
|
|
mock_tts = <MagicMock name='text_to_speech_tool' id='123353531922720'>
|
|
_mkd = <MagicMock name='makedirs' id='123353485740656'>
|
|
_cp = <MagicMock name='_cprint' id='123353485522944'>
|
|
|
|
@patch("cli._cprint")
|
|
@patch("cli.os.makedirs")
|
|
@patch("hermes_agent_tts.tts_tool.text_to_speech_tool", return_value='{"success": true}')
|
|
def test_long_text_truncated(self, mock_tts, _mkd, _cp):
|
|
cli = _make_voice_cli(_voice_tts=True)
|
|
cli._voice_speak_response("A" * 5000)
|
|
> call_text = mock_tts.call_args.kwargs["text"]
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E AttributeError: 'NoneType' object has no attribute 'kwargs'
|
|
|
|
tests/tools/test_voice_cli_integration.py:1112: AttributeError
|
|
------------------------------ Captured log call -------------------------------
|
|
WARNING cli:cli.py:10906 Voice TTS playback failed: tts tool provider not registered
|
|
______________ TestVoiceSpeakResponseReal.test_play_audio_called _______________
|
|
|
|
self = <tests.tools.test_voice_cli_integration.TestVoiceSpeakResponseReal object at 0x70307b37f470>
|
|
_tts = <MagicMock name='text_to_speech_tool' id='123353531909808'>
|
|
mock_play = <MagicMock name='play_audio_file' id='123353533938432'>
|
|
_mkd = <MagicMock name='makedirs' id='123353531265440'>
|
|
_isf = <MagicMock name='isfile' id='123353531254352'>
|
|
_gsz = <MagicMock name='getsize' id='123353531255792'>
|
|
_unl = <MagicMock name='unlink' id='123353531268176'>
|
|
_cp = <MagicMock name='_cprint' id='123353530256032'>
|
|
|
|
@patch("cli._cprint")
|
|
@patch("cli.os.unlink")
|
|
@patch("cli.os.path.getsize", return_value=1000)
|
|
@patch("cli.os.path.isfile", return_value=True)
|
|
@patch("cli.os.makedirs")
|
|
@patch("tools.voice_mode.play_audio_file")
|
|
@patch("hermes_agent_tts.tts_tool.text_to_speech_tool", return_value='{"success": true}')
|
|
def test_play_audio_called(self, _tts, mock_play, _mkd, _isf, _gsz, _unl, _cp):
|
|
cli = _make_voice_cli(_voice_tts=True)
|
|
cli._voice_speak_response("Hello world")
|
|
> mock_play.assert_called_once()
|
|
|
|
tests/tools/test_voice_cli_integration.py:1134:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
self = <MagicMock name='play_audio_file' id='123353533938432'>
|
|
|
|
def assert_called_once(self):
|
|
"""assert that the mock was called only once.
|
|
"""
|
|
if not self.call_count == 1:
|
|
msg = ("Expected '%s' to have been called once. Called %s times.%s"
|
|
% (self._mock_name or 'mock',
|
|
self.call_count,
|
|
self._calls_repr()))
|
|
> raise AssertionError(msg)
|
|
E AssertionError: Expected 'play_audio_file' to have been called once. Called 0 times.
|
|
|
|
/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/unittest/mock.py:928: AssertionError
|
|
------------------------------ Captured log call -------------------------------
|
|
WARNING cli:cli.py:10906 Voice TTS playback failed: tts tool provider not registered
|
|
=========================== short test summary info ============================
|
|
FAILED tests/tools/test_voice_cli_integration.py::TestVoiceSpeakResponseReal::test_markdown_stripped
|
|
FAILED tests/tools/test_voice_cli_integration.py::TestVoiceSpeakResponseReal::test_code_blocks_removed
|
|
FAILED tests/tools/test_voice_cli_integration.py::TestVoiceSpeakResponseReal::test_long_text_truncated
|
|
FAILED tests/tools/test_voice_cli_integration.py::TestVoiceSpeakResponseReal::test_play_audio_called
|
|
=================== 4 failed, 79 passed, 1 skipped in 3.44s ====================
|
|
|
|
--- tests/tools/test_voice_mode.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 62 items
|
|
|
|
tests/tools/test_voice_mode.py ..........F.F........sss....FFFFF..s..... [ 66%]
|
|
.ss..ssss...sssss.... [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
_____________ TestCheckVoiceRequirements.test_all_requirements_met _____________
|
|
|
|
self = <tests.tools.test_voice_mode.TestCheckVoiceRequirements object at 0x7867add92b70>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7867adbb2570>
|
|
|
|
def test_all_requirements_met(self, monkeypatch):
|
|
monkeypatch.setattr("tools.voice_mode._audio_available", lambda: True)
|
|
monkeypatch.setattr("tools.voice_mode.detect_audio_environment",
|
|
lambda: {"available": True, "warnings": []})
|
|
monkeypatch.setattr("hermes_agent_stt.transcription_tools._get_provider", lambda cfg: "openai")
|
|
|
|
from tools.voice_mode import check_voice_requirements
|
|
|
|
result = check_voice_requirements()
|
|
> assert result["available"] is True
|
|
E assert False is True
|
|
|
|
tests/tools/test_voice_mode.py:286: AssertionError
|
|
_____________ TestCheckVoiceRequirements.test_missing_stt_provider _____________
|
|
|
|
self = <tests.tools.test_voice_mode.TestCheckVoiceRequirements object at 0x7867add921b0>
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7867adb4ce00>
|
|
|
|
def test_missing_stt_provider(self, monkeypatch):
|
|
monkeypatch.setattr("tools.voice_mode._audio_available", lambda: True)
|
|
monkeypatch.setattr("tools.voice_mode.detect_audio_environment",
|
|
lambda: {"available": True, "warnings": []})
|
|
monkeypatch.setattr("hermes_agent_stt.transcription_tools._get_provider", lambda cfg: "none")
|
|
|
|
from tools.voice_mode import check_voice_requirements
|
|
|
|
result = check_voice_requirements()
|
|
assert result["available"] is False
|
|
assert result["stt_available"] is False
|
|
> assert "STT provider: MISSING" in result["details"]
|
|
E AssertionError: assert 'STT provider: MISSING' in 'Audio capture: OK\nSTT provider: DISABLED in config (stt.enabled: false)'
|
|
|
|
tests/tools/test_voice_mode.py:316: AssertionError
|
|
__________ TestTranscribeRecording.test_delegates_to_transcribe_audio __________
|
|
|
|
self = <tests.tools.test_voice_mode.TestTranscribeRecording object at 0x7867addfdd30>
|
|
|
|
def test_delegates_to_transcribe_audio(self):
|
|
mock_transcribe = MagicMock(return_value={
|
|
"success": True,
|
|
"transcript": "hello world",
|
|
})
|
|
|
|
with patch("hermes_agent_stt.transcription_tools.transcribe_audio", mock_transcribe):
|
|
from tools.voice_mode import transcribe_recording
|
|
> result = transcribe_recording("/tmp/test.wav", model="whisper-1")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_voice_mode.py:576:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
wav_path = '/tmp/test.wav', model = 'whisper-1'
|
|
|
|
def transcribe_recording(wav_path: str, model: Optional[str] = None) -> Dict[str, Any]:
|
|
"""Transcribe a WAV recording using the existing Whisper pipeline.
|
|
|
|
Delegates to ``tools.transcription_tools.transcribe_audio()``.
|
|
Filters out known Whisper hallucinations on silent audio.
|
|
|
|
Args:
|
|
wav_path: Path to the WAV file.
|
|
model: Whisper model name (default: from config or ``whisper-1``).
|
|
|
|
Returns:
|
|
Dict with ``success``, ``transcript``, and optionally ``error``.
|
|
"""
|
|
# Registry lookup (hermes_agent_stt is a plugin)
|
|
from agent.plugin_registries import registries
|
|
_stt = registries.get_tool_provider("stt")
|
|
if _stt:
|
|
transcribe_audio = _stt.tool_functions.get("transcribe_audio")
|
|
MAX_FILE_SIZE = _stt.constants.get("MAX_FILE_SIZE", 25 * 1024 * 1024)
|
|
else:
|
|
transcribe_audio = None
|
|
MAX_FILE_SIZE = 25 * 1024 * 1024
|
|
|
|
if _should_chunk_for_transcription(wav_path, MAX_FILE_SIZE):
|
|
result = _transcribe_wav_in_chunks(wav_path, model=model, max_file_size=MAX_FILE_SIZE)
|
|
else:
|
|
> result = transcribe_audio(wav_path, model=model)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E TypeError: 'NoneType' object is not callable
|
|
|
|
tools/voice_mode.py:816: TypeError
|
|
__________ TestTranscribeRecording.test_filters_whisper_hallucination __________
|
|
|
|
self = <tests.tools.test_voice_mode.TestTranscribeRecording object at 0x7867addfe1b0>
|
|
|
|
def test_filters_whisper_hallucination(self):
|
|
mock_transcribe = MagicMock(return_value={
|
|
"success": True,
|
|
"transcript": "Thank you.",
|
|
})
|
|
|
|
with patch("hermes_agent_stt.transcription_tools.transcribe_audio", mock_transcribe):
|
|
from tools.voice_mode import transcribe_recording
|
|
> result = transcribe_recording("/tmp/test.wav")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_voice_mode.py:590:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
wav_path = '/tmp/test.wav', model = None
|
|
|
|
def transcribe_recording(wav_path: str, model: Optional[str] = None) -> Dict[str, Any]:
|
|
"""Transcribe a WAV recording using the existing Whisper pipeline.
|
|
|
|
Delegates to ``tools.transcription_tools.transcribe_audio()``.
|
|
Filters out known Whisper hallucinations on silent audio.
|
|
|
|
Args:
|
|
wav_path: Path to the WAV file.
|
|
model: Whisper model name (default: from config or ``whisper-1``).
|
|
|
|
Returns:
|
|
Dict with ``success``, ``transcript``, and optionally ``error``.
|
|
"""
|
|
# Registry lookup (hermes_agent_stt is a plugin)
|
|
from agent.plugin_registries import registries
|
|
_stt = registries.get_tool_provider("stt")
|
|
if _stt:
|
|
transcribe_audio = _stt.tool_functions.get("transcribe_audio")
|
|
MAX_FILE_SIZE = _stt.constants.get("MAX_FILE_SIZE", 25 * 1024 * 1024)
|
|
else:
|
|
transcribe_audio = None
|
|
MAX_FILE_SIZE = 25 * 1024 * 1024
|
|
|
|
if _should_chunk_for_transcription(wav_path, MAX_FILE_SIZE):
|
|
result = _transcribe_wav_in_chunks(wav_path, model=model, max_file_size=MAX_FILE_SIZE)
|
|
else:
|
|
> result = transcribe_audio(wav_path, model=model)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E TypeError: 'NoneType' object is not callable
|
|
|
|
tools/voice_mode.py:816: TypeError
|
|
___________ TestTranscribeRecording.test_does_not_filter_real_speech ___________
|
|
|
|
self = <tests.tools.test_voice_mode.TestTranscribeRecording object at 0x7867addfe630>
|
|
|
|
def test_does_not_filter_real_speech(self):
|
|
mock_transcribe = MagicMock(return_value={
|
|
"success": True,
|
|
"transcript": "Thank you for helping me with this code.",
|
|
})
|
|
|
|
with patch("hermes_agent_stt.transcription_tools.transcribe_audio", mock_transcribe):
|
|
from tools.voice_mode import transcribe_recording
|
|
> result = transcribe_recording("/tmp/test.wav")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_voice_mode.py:604:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
wav_path = '/tmp/test.wav', model = None
|
|
|
|
def transcribe_recording(wav_path: str, model: Optional[str] = None) -> Dict[str, Any]:
|
|
"""Transcribe a WAV recording using the existing Whisper pipeline.
|
|
|
|
Delegates to ``tools.transcription_tools.transcribe_audio()``.
|
|
Filters out known Whisper hallucinations on silent audio.
|
|
|
|
Args:
|
|
wav_path: Path to the WAV file.
|
|
model: Whisper model name (default: from config or ``whisper-1``).
|
|
|
|
Returns:
|
|
Dict with ``success``, ``transcript``, and optionally ``error``.
|
|
"""
|
|
# Registry lookup (hermes_agent_stt is a plugin)
|
|
from agent.plugin_registries import registries
|
|
_stt = registries.get_tool_provider("stt")
|
|
if _stt:
|
|
transcribe_audio = _stt.tool_functions.get("transcribe_audio")
|
|
MAX_FILE_SIZE = _stt.constants.get("MAX_FILE_SIZE", 25 * 1024 * 1024)
|
|
else:
|
|
transcribe_audio = None
|
|
MAX_FILE_SIZE = 25 * 1024 * 1024
|
|
|
|
if _should_chunk_for_transcription(wav_path, MAX_FILE_SIZE):
|
|
result = _transcribe_wav_in_chunks(wav_path, model=model, max_file_size=MAX_FILE_SIZE)
|
|
else:
|
|
> result = transcribe_audio(wav_path, model=model)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E TypeError: 'NoneType' object is not callable
|
|
|
|
tools/voice_mode.py:816: TypeError
|
|
______ TestTranscribeRecording.test_oversized_wav_is_chunked_and_stitched ______
|
|
|
|
self = <tests.tools.test_voice_mode.TestTranscribeRecording object at 0x7867add938c0>
|
|
tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-43131/test_oversized_wav_is_chunked_0')
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7867ada6a270>
|
|
|
|
def test_oversized_wav_is_chunked_and_stitched(self, tmp_path, monkeypatch):
|
|
wav_path = tmp_path / "long.wav"
|
|
n_frames = 50000
|
|
audio = struct.pack(f"<{n_frames}h", *([1000] * n_frames))
|
|
with wave.open(str(wav_path), "wb") as wf:
|
|
wf.setnchannels(1)
|
|
wf.setsampwidth(2)
|
|
wf.setframerate(16000)
|
|
wf.writeframes(audio)
|
|
|
|
temp_dir = tmp_path / "chunks"
|
|
temp_dir.mkdir()
|
|
monkeypatch.setattr("tools.voice_mode._TEMP_DIR", str(temp_dir))
|
|
monkeypatch.setattr("hermes_agent_stt.transcription_tools.MAX_FILE_SIZE", 70 * 1024)
|
|
|
|
seen_paths = []
|
|
|
|
def fake_transcribe(path, model=None):
|
|
seen_paths.append(path)
|
|
assert model == "base"
|
|
assert path != str(wav_path)
|
|
assert os.path.getsize(path) <= 70 * 1024
|
|
return {
|
|
"success": True,
|
|
"transcript": f"part {len(seen_paths)}",
|
|
"provider": "local",
|
|
}
|
|
|
|
with patch("hermes_agent_stt.transcription_tools.transcribe_audio", side_effect=fake_transcribe):
|
|
from tools.voice_mode import transcribe_recording
|
|
> result = transcribe_recording(str(wav_path), model="base")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_voice_mode.py:639:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
wav_path = '/tmp/pytest-of-ethie/pytest-43131/test_oversized_wav_is_chunked_0/long.wav'
|
|
model = 'base'
|
|
|
|
def transcribe_recording(wav_path: str, model: Optional[str] = None) -> Dict[str, Any]:
|
|
"""Transcribe a WAV recording using the existing Whisper pipeline.
|
|
|
|
Delegates to ``tools.transcription_tools.transcribe_audio()``.
|
|
Filters out known Whisper hallucinations on silent audio.
|
|
|
|
Args:
|
|
wav_path: Path to the WAV file.
|
|
model: Whisper model name (default: from config or ``whisper-1``).
|
|
|
|
Returns:
|
|
Dict with ``success``, ``transcript``, and optionally ``error``.
|
|
"""
|
|
# Registry lookup (hermes_agent_stt is a plugin)
|
|
from agent.plugin_registries import registries
|
|
_stt = registries.get_tool_provider("stt")
|
|
if _stt:
|
|
transcribe_audio = _stt.tool_functions.get("transcribe_audio")
|
|
MAX_FILE_SIZE = _stt.constants.get("MAX_FILE_SIZE", 25 * 1024 * 1024)
|
|
else:
|
|
transcribe_audio = None
|
|
MAX_FILE_SIZE = 25 * 1024 * 1024
|
|
|
|
if _should_chunk_for_transcription(wav_path, MAX_FILE_SIZE):
|
|
result = _transcribe_wav_in_chunks(wav_path, model=model, max_file_size=MAX_FILE_SIZE)
|
|
else:
|
|
> result = transcribe_audio(wav_path, model=model)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E TypeError: 'NoneType' object is not callable
|
|
|
|
tools/voice_mode.py:816: TypeError
|
|
_______ TestTranscribeRecording.test_oversized_wav_reports_failing_chunk _______
|
|
|
|
self = <tests.tools.test_voice_mode.TestTranscribeRecording object at 0x7867add92300>
|
|
tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-43131/test_oversized_wav_reports_fai0')
|
|
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7867adc59730>
|
|
|
|
def test_oversized_wav_reports_failing_chunk(self, tmp_path, monkeypatch):
|
|
wav_path = tmp_path / "long.wav"
|
|
n_frames = 50000
|
|
audio = struct.pack(f"<{n_frames}h", *([1000] * n_frames))
|
|
with wave.open(str(wav_path), "wb") as wf:
|
|
wf.setnchannels(1)
|
|
wf.setsampwidth(2)
|
|
wf.setframerate(16000)
|
|
wf.writeframes(audio)
|
|
|
|
temp_dir = tmp_path / "chunks"
|
|
temp_dir.mkdir()
|
|
monkeypatch.setattr("tools.voice_mode._TEMP_DIR", str(temp_dir))
|
|
monkeypatch.setattr("hermes_agent_stt.transcription_tools.MAX_FILE_SIZE", 70 * 1024)
|
|
|
|
def fake_transcribe(path, model=None):
|
|
return {"success": False, "transcript": "", "error": "provider rejected audio"}
|
|
|
|
with patch("hermes_agent_stt.transcription_tools.transcribe_audio", side_effect=fake_transcribe):
|
|
from tools.voice_mode import transcribe_recording
|
|
> result = transcribe_recording(str(wav_path), model="base")
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
tests/tools/test_voice_mode.py:669:
|
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
|
wav_path = '/tmp/pytest-of-ethie/pytest-43131/test_oversized_wav_reports_fai0/long.wav'
|
|
model = 'base'
|
|
|
|
def transcribe_recording(wav_path: str, model: Optional[str] = None) -> Dict[str, Any]:
|
|
"""Transcribe a WAV recording using the existing Whisper pipeline.
|
|
|
|
Delegates to ``tools.transcription_tools.transcribe_audio()``.
|
|
Filters out known Whisper hallucinations on silent audio.
|
|
|
|
Args:
|
|
wav_path: Path to the WAV file.
|
|
model: Whisper model name (default: from config or ``whisper-1``).
|
|
|
|
Returns:
|
|
Dict with ``success``, ``transcript``, and optionally ``error``.
|
|
"""
|
|
# Registry lookup (hermes_agent_stt is a plugin)
|
|
from agent.plugin_registries import registries
|
|
_stt = registries.get_tool_provider("stt")
|
|
if _stt:
|
|
transcribe_audio = _stt.tool_functions.get("transcribe_audio")
|
|
MAX_FILE_SIZE = _stt.constants.get("MAX_FILE_SIZE", 25 * 1024 * 1024)
|
|
else:
|
|
transcribe_audio = None
|
|
MAX_FILE_SIZE = 25 * 1024 * 1024
|
|
|
|
if _should_chunk_for_transcription(wav_path, MAX_FILE_SIZE):
|
|
result = _transcribe_wav_in_chunks(wav_path, model=model, max_file_size=MAX_FILE_SIZE)
|
|
else:
|
|
> result = transcribe_audio(wav_path, model=model)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
E TypeError: 'NoneType' object is not callable
|
|
|
|
tools/voice_mode.py:816: TypeError
|
|
=============================== warnings summary ===============================
|
|
tests/tools/test_voice_mode.py::TestAudioRecorderStop::test_stop_writes_wav_file
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:446: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestAudioRecorderStop::test_stop_returns_none_for_very_short_recording
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:475: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestAudioRecorderStop::test_stop_returns_none_for_silent_recording
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:493: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestPlayAudioFile::test_play_wav_via_sounddevice
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:702: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestPlayBeep::test_beep_calls_sounddevice_play
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:798: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestPlayBeep::test_beep_double_produces_longer_audio
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:817: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestSilenceDetection::test_silence_callback_fires_after_speech_then_silence
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:853: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestSilenceDetection::test_silence_without_speech_does_not_fire
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:899: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestSilenceDetection::test_micro_pause_tolerance_during_speech
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:929: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestSilenceDetection::test_no_callback_means_no_silence_detection
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:969: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestContinuousModeFlow::test_continuous_restart_on_no_speech
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:1055: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestContinuousModeFlow::test_recorder_reusable_after_stop
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:1095: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestAudioLevelIndicator::test_rms_updates_with_audio_chunks
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:1128: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestAudioLevelIndicator::test_peak_rms_tracks_maximum
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:1154: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
tests/tools/test_voice_mode.py::TestConfigurableSilenceParams::test_custom_threshold_and_duration
|
|
/home/ari/src/hermes-agent/main/tests/tools/test_voice_mode.py:1190: PytestDeprecationWarning:
|
|
Module 'numpy' was found, but when imported by pytest it raised:
|
|
ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python 3.12 from "/home/ari/src/hermes-agent/main/.venv/bin/python"\n * The NumPy version is: "2.4.3"\n\nand make sure that they are the versions you expect.\n\nPlease carefully study the information and documentation linked above.\nThis is unlikely to be a NumPy issue but will be caused by a bad install\nor environment on your machine.\n\nOriginal error was: libstdc++.so.6: cannot open shared object file: No such file or directory\n')
|
|
In pytest 9.1 this warning will become an error by default.
|
|
You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly.
|
|
See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror
|
|
np = pytest.importorskip("numpy")
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
FAILED tests/tools/test_voice_mode.py::TestCheckVoiceRequirements::test_all_requirements_met
|
|
FAILED tests/tools/test_voice_mode.py::TestCheckVoiceRequirements::test_missing_stt_provider
|
|
FAILED tests/tools/test_voice_mode.py::TestTranscribeRecording::test_delegates_to_transcribe_audio
|
|
FAILED tests/tools/test_voice_mode.py::TestTranscribeRecording::test_filters_whisper_hallucination
|
|
FAILED tests/tools/test_voice_mode.py::TestTranscribeRecording::test_does_not_filter_real_speech
|
|
FAILED tests/tools/test_voice_mode.py::TestTranscribeRecording::test_oversized_wav_is_chunked_and_stitched
|
|
FAILED tests/tools/test_voice_mode.py::TestTranscribeRecording::test_oversized_wav_reports_failing_chunk
|
|
============ 7 failed, 40 passed, 15 skipped, 15 warnings in 4.16s =============
|
|
|
|
--- tests/tools/test_send_message_tool.py ---
|
|
============================= test session starts ==============================
|
|
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
|
|
rootdir: /home/ari/src/hermes-agent/main
|
|
configfile: pyproject.toml
|
|
plugins: asyncio-1.3.0, anyio-4.12.1, timeout-2.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
timeout: 30.0s
|
|
timeout method: signal
|
|
timeout func_only: False
|
|
collected 121 items
|
|
|
|
tests/tools/test_send_message_tool.py .....................F............ [ 28%]
|
|
........................................................................ [ 87%]
|
|
............... [100%]
|
|
|
|
=================================== FAILURES ===================================
|
|
____ TestSendToPlatformChunking.test_send_matrix_via_adapter_sends_document ____
|
|
|
|
self = <tests.tools.test_send_message_tool.TestSendToPlatformChunking object at 0x70194111c620>
|
|
tmp_path = PosixPath('/tmp/pytest-of-ethie/pytest-43084/test_send_matrix_via_adapter_s0')
|
|
|
|
def test_send_matrix_via_adapter_sends_document(self, tmp_path):
|
|
file_path = tmp_path / "report.pdf"
|
|
file_path.write_bytes(b"%PDF-1.4 test")
|
|
|
|
calls = []
|
|
|
|
class FakeAdapter:
|
|
def __init__(self, _config):
|
|
self.connected = False
|
|
|
|
async def connect(self):
|
|
self.connected = True
|
|
calls.append(("connect",))
|
|
return True
|
|
|
|
async def send(self, chat_id, message, metadata=None):
|
|
calls.append(("send", chat_id, message, metadata))
|
|
return SimpleNamespace(success=True, message_id="$text")
|
|
|
|
async def send_document(self, chat_id, file_path, metadata=None):
|
|
calls.append(("send_document", chat_id, file_path, metadata))
|
|
return SimpleNamespace(success=True, message_id="$file")
|
|
|
|
async def disconnect(self):
|
|
calls.append(("disconnect",))
|
|
|
|
fake_module = SimpleNamespace(MatrixAdapter=FakeAdapter)
|
|
|
|
with patch.dict(sys.modules, {"gateway.platforms.matrix": fake_module}):
|
|
result = asyncio.run(
|
|
_send_matrix_via_adapter(
|
|
SimpleNamespace(enabled=True, token="tok", extra={"homeserver": "https://matrix.example.com"}),
|
|
"!room:example.com",
|
|
"report attached",
|
|
media_files=[(str(file_path), False)],
|
|
)
|
|
)
|
|
|
|
> assert result == {
|
|
"success": True,
|
|
"platform": "matrix",
|
|
"chat_id": "!room:example.com",
|
|
"message_id": "$file",
|
|
}
|
|
E AssertionError: assert {'error': 'Ma...nnect failed'} == {'chat_id': '...uccess': True}
|
|
E
|
|
E Left contains 1 more item:
|
|
E {'error': 'Matrix connect failed'}
|
|
E Right contains 4 more items:
|
|
E {'chat_id': '!room:example.com',
|
|
E 'message_id': '$file',
|
|
E 'platform': 'matrix',
|
|
E 'success': True}
|
|
E Use -v to get more diff
|
|
|
|
tests/tools/test_send_message_tool.py:786: AssertionError
|
|
------------------------------ Captured log call -------------------------------
|
|
ERROR hermes_agent_matrix.adapter:adapter.py:661 Matrix: whoami failed — check MATRIX_ACCESS_TOKEN and MATRIX_HOMESERVER: Cannot connect to host matrix.example.com:443 ssl:default [Name or service not known]
|
|
Traceback (most recent call last):
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 1562, in _create_direct_connection
|
|
hosts = await self._resolve_host(host, port, traces=traces)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 1178, in _resolve_host
|
|
return await asyncio.shield(resolved_host_task)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 1209, in _resolve_host_with_throttle
|
|
addrs = await self._resolver.resolve(host, port, family=self._family)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/aiohttp/resolver.py", line 40, in resolve
|
|
infos = await self._loop.getaddrinfo(
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/asyncio/base_events.py", line 905, in getaddrinfo
|
|
return await self.run_in_executor(
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/concurrent/futures/thread.py", line 59, in run
|
|
result = self.fn(*self.args, **self.kwargs)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/nix/store/3437kliwcg0aq7h30alls8mvsv6laarf-python3-3.12.13/lib/python3.12/socket.py", line 978, in getaddrinfo
|
|
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
socket.gaierror: [Errno -2] Name or service not known
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/mautrix/api.py", line 425, in request
|
|
resp_data, resp = await self._send(
|
|
^^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/mautrix/api.py", line 255, in _send
|
|
async with request as response:
|
|
^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/aiohttp/client.py", line 1510, in __aenter__
|
|
self._resp: _RetType = await self._coro
|
|
^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/aiohttp/client.py", line 779, in _request
|
|
resp = await handler(req)
|
|
^^^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/aiohttp/client.py", line 734, in _connect_and_send_request
|
|
conn = await self._connector.connect(
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 672, in connect
|
|
proto = await self._create_connection(req, traces, timeout)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 1239, in _create_connection
|
|
_, proto = await self._create_direct_connection(req, traces, timeout)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 1568, in _create_direct_connection
|
|
raise ClientConnectorDNSError(req.connection_key, exc) from exc
|
|
aiohttp.client_exceptions.ClientConnectorDNSError: Cannot connect to host matrix.example.com:443 ssl:default [Name or service not known]
|
|
|
|
The above exception was the direct cause of the following exception:
|
|
|
|
Traceback (most recent call last):
|
|
File "/home/ari/src/hermes-agent/main/plugins/platforms/matrix/hermes_agent_matrix/adapter.py", line 643, in connect
|
|
resp = await client.whoami()
|
|
^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/mautrix/client/api/authentication.py", line 190, in whoami
|
|
resp = await self.api.request(Method.GET, Path.v3.account.whoami)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/mautrix/api.py", line 447, in request
|
|
raise MatrixConnectionError(str(e)) from e
|
|
mautrix.errors.base.MatrixConnectionError: Cannot connect to host matrix.example.com:443 ssl:default [Name or service not known]
|
|
=============================== warnings summary ===============================
|
|
.venv/lib/python3.12/site-packages/discord/player.py:30
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/discord/player.py:30: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13
|
|
import audioop
|
|
|
|
tests/tools/test_send_message_tool.py::TestSendMessageTool::test_cron_duplicate_target_is_skipped_and_explained
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/pb/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
|
|
_EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)
|
|
|
|
tests/tools/test_send_message_tool.py::TestSendMessageTool::test_cron_duplicate_target_is_skipped_and_explained
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/lark_oapi/ws/client.py:67: DeprecationWarning: websockets.InvalidStatusCode is deprecated
|
|
def _parse_ws_conn_exception(e: websockets.InvalidStatusCode):
|
|
|
|
tests/tools/test_send_message_tool.py::TestSendMessageTool::test_cron_duplicate_target_is_skipped_and_explained
|
|
/home/ari/src/hermes-agent/main/.venv/lib/python3.12/site-packages/websockets/legacy/__init__.py:6: DeprecationWarning: websockets.legacy is deprecated; see https://websockets.readthedocs.io/en/stable/howto/upgrade.html for upgrade instructions
|
|
warnings.warn( # deprecated in 14.0 - 2024-11-09
|
|
|
|
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
=========================== short test summary info ============================
|
|
FAILED tests/tools/test_send_message_tool.py::TestSendToPlatformChunking::test_send_matrix_via_adapter_sends_document
|
|
================== 1 failed, 120 passed, 4 warnings in 12.99s ==================
|
|
|
|
=== 16 files with test failures (49 tests failed) ===
|
|
plugins/platforms/slack/tests/test_slack_mention.py (2 tests failed)
|
|
plugins/model-providers/bedrock/tests/test_bedrock_integration.py (1 test failed)
|
|
plugins/platforms/slack/tests/test_slack.py (6 tests failed)
|
|
plugins/platforms/matrix/tests/test_matrix.py (12 tests failed)
|
|
tests/gateway/test_voice_command.py (1 test failed)
|
|
tests/gateway/test_stt_config.py (1 test failed)
|
|
tests/hermes_cli/test_codex_cli_model_picker.py (1 test failed)
|
|
tests/hermes_cli/test_gateway_platform_gating.py (1 test failed)
|
|
tests/hermes_cli/test_web_server.py (1 test failed)
|
|
tests/tools/test_managed_media_gateways.py (5 tests failed)
|
|
tests/tools/test_image_generation.py (3 tests failed)
|
|
tests/tools/test_local_background_child_hang.py (2 tests failed)
|
|
tests/tools/test_process_registry.py (1 test failed)
|
|
tests/tools/test_voice_cli_integration.py (4 tests failed)
|
|
tests/tools/test_voice_mode.py (7 tests failed)
|
|
tests/tools/test_send_message_tool.py (1 test failed)
|
|
=== 1 file where all tests passed but pytest exited non-zero (warnings-as-errors, hook failures, etc.) ===
|
|
plugins/platforms/feishu/tests/test_feishu_approval_buttons.py (20 passed)
|
|
=== 34 files where no tests ran (collection/import error, timeout before collection, etc.) ===
|
|
plugins/platforms/telegram/tests/test_telegram_channel_posts.py
|
|
plugins/platforms/telegram/tests/test_telegram_audio_vs_voice.py
|
|
plugins/platforms/telegram/tests/test_telegram_callback_auth_fail_closed.py
|
|
plugins/platforms/dingtalk/tests/test_dingtalk.py
|
|
plugins/platforms/telegram/tests/test_telegram_max_doc_bytes.py
|
|
plugins/platforms/telegram/tests/test_telegram_forum_commands.py
|
|
plugins/platforms/telegram/tests/test_telegram_conflict.py
|
|
plugins/platforms/telegram/tests/test_telegram_caption_merge.py
|
|
plugins/platforms/telegram/tests/test_telegram_model_picker.py
|
|
plugins/platforms/telegram/tests/test_telegram_reply_quote.py
|
|
plugins/platforms/telegram/tests/test_telegram_send_path_health.py
|
|
plugins/platforms/telegram/tests/test_telegram_clarify_buttons.py
|
|
plugins/platforms/telegram/tests/test_telegram_approval_buttons.py
|
|
plugins/platforms/telegram/tests/test_telegram_slash_confirm.py
|
|
plugins/platforms/telegram/tests/test_telegram_status_update.py
|
|
plugins/platforms/telegram/tests/test_telegram_network_reconnect.py
|
|
plugins/platforms/telegram/tests/test_telegram_text_batching.py
|
|
plugins/stt/tests/test_transcription.py
|
|
plugins/platforms/telegram/tests/test_telegram_mention_boundaries.py
|
|
plugins/stt/tests/test_transcription_tools.py
|
|
plugins/platforms/telegram/tests/test_telegram_webhook_secret.py
|
|
plugins/platforms/telegram/tests/test_telegram_text_batch_perf.py
|
|
plugins/platforms/telegram/tests/test_telegram_reactions.py
|
|
plugins/platforms/telegram/tests/test_telegram_progress_edit_transient.py
|
|
plugins/platforms/telegram/tests/test_telegram_documents.py
|
|
plugins/platforms/telegram/tests/test_telegram_group_gating.py
|
|
plugins/platforms/telegram/tests/test_telegram_photo_interrupts.py
|
|
plugins/platforms/telegram/tests/test_telegram_reply_mode.py
|
|
plugins/platforms/telegram/tests/test_telegram_network.py
|
|
plugins/platforms/telegram/tests/test_telegram_noise_filter.py
|
|
plugins/platforms/telegram/tests/test_telegram_thread_fallback.py
|
|
plugins/platforms/telegram/tests/test_telegram_topic_mode.py
|
|
plugins/platforms/telegram/tests/test_telegram_format.py
|
|
tests/tools/test_vercel_sandbox_environment.py
|