strix/tests
itzzdev09 a3d60a72a0 test: remove Unix-only and developer-specific assumptions from the suite
A full run on Windows 11 failed 31 tests, almost all because a fixture
assumed POSIX behaviour or read the developer's own Git configuration
rather than because Strix misbehaved. That noise hides real regressions.

- Resolve git with `shutil.which` instead of `/usr/bin/env git`, and skip
  the module when no git is present. This single line accounted for 19 of
  the 31 failures.
- Isolate every git subprocess from `GIT_CONFIG_GLOBAL`/`GIT_CONFIG_SYSTEM`
  and supply a commit identity, so a global `core.excludesFile`,
  `commit.gpgSign`, or `core.hooksPath` cannot change what a test sees.
- Create control-character filenames through a fixture that skips where
  the filesystem rejects them, instead of failing to build the fixture.
- Choose the protected system directory for the platform in the mount
  policy test. `check_mountable_dir` already handles both families, so on
  Windows this now exercises the real policy instead of failing early.
- Assert secret-file permissions through a fixture that keeps the POSIX
  0o600 check exact and, on Windows, skips with the reason stated rather
  than weakening the assertion. The device-identity test is split so its
  identity contract still runs everywhere.
- Pin mypy to `platform = "linux"` so type checking resolves the same
  APIs as CI and the container target. This removes the six
  `fcntl.flock`/`os.getuid`/`os.getgid` attribute errors reported on
  Windows without adding ignores that `warn_unused_ignores` would then
  flag on Linux.

Windows now reports 12 failures, all owned elsewhere: #1258 (7-8,
intermittent), #648/#652, #1288, and #1285.

Refs #1259

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 09:28:49 +05:30
..
__init__.py Add configurable token / cost usage limits (#576) 2026-06-22 11:17:08 -04:00
conftest.py test: remove Unix-only and developer-specific assumptions from the suite 2026-09-12 09:28:49 +05:30
test_agent_factory_shell.py feat(context): spill oversized tool output into the sandbox workspace (#882) 2026-07-26 14:42:22 -07:00
test_agent_factory_tool_arguments.py Treat literal 'null'/'none' strings as absent for optional tool args (#1164) 2026-08-25 13:21:12 -04:00
test_agent_graph_coordination.py fix(agents): stop parents waiting on finished non-interactive children 2026-09-02 22:11:12 +03:00
test_agent_tool_registration.py Drop strict tool schemas on Claude routes 2026-08-20 23:12:23 +03:00
test_api_spec.py feat: support API specs and Postman collections as targets (#866) 2026-08-03 21:07:44 -07:00
test_api_spec_targets.py feat: support API specs and Postman collections as targets (#866) 2026-08-03 21:07:44 -07:00
test_auth_cli.py Sign in with a ChatGPT subscription for inference (#854) 2026-07-24 15:41:19 -07:00
test_caido_bootstrap.py perf: bootstrap Caido concurrently with the scan start (#1143) 2026-08-21 12:09:59 -07:00
test_caido_handle.py perf: bootstrap Caido concurrently with the scan start (#1143) 2026-08-21 12:09:59 -07:00
test_cli_mcp_config.py Add MCP server support (#1137) 2026-08-24 14:00:16 -04:00
test_cli_target_list.py feat(cli): strix cloud — managed platform CLI (login, scans, billing, and the rest of the API) (#1177) 2026-09-01 14:39:34 -04:00
test_cloud_cli.py fix(cloud): print top-up instructions on 402 and guide oversize or archive --source (#1242) 2026-09-02 15:26:37 -04:00
test_cloud_cli_runtime.py test: remove Unix-only and developer-specific assumptions from the suite 2026-09-12 09:28:49 +05:30
test_cloud_idempotency.py fix(ci): make the pre-commit mypy hook and the test suite pass on a fresh checkout 2026-09-02 15:15:51 +03:00
test_cloud_payment_proxy.py fix(ci): make the pre-commit mypy hook and the test suite pass on a fresh checkout 2026-09-02 15:15:51 +03:00
test_cloud_session.py test: remove Unix-only and developer-specific assumptions from the suite 2026-09-12 09:28:49 +05:30
test_cloud_source_upload.py fix(cloud): print top-up instructions on 402 and guide oversize or archive --source (#1242) 2026-09-02 15:26:37 -04:00
test_cloud_wallet.py Link CLI wallet (#1222) 2026-09-01 16:00:32 -04:00
test_codex_auth.py feat(tui): replace Textual with a Go/Bubble Tea interface (#941) 2026-08-03 19:23:07 -07:00
test_codex_streaming.py Sign in with a ChatGPT subscription for inference (#854) 2026-07-24 15:41:19 -07:00
test_compaction.py fix(llm): pass LLM_EXTRA_HEADERS through ModelSettings so they reach the agent loop (#937) 2026-07-29 19:38:06 -07:00
test_completions.py test: remove Unix-only and developer-specific assumptions from the suite 2026-09-12 09:28:49 +05:30
test_config_loader.py feat(web_search): add Exa as a web search provider alongside Perplexity (#1270) 2026-09-04 10:34:28 -07:00
test_context_budget.py perf: take heavy imports off the startup path and pre-warm them in the background (#1141) 2026-08-20 20:24:08 -07:00
test_cost_tracking.py Fix LiteLLM cost model resolution 2026-08-12 17:26:00 +03:00
test_coverage_tool.py feat(agents): evidence discipline, and coverage as a first-class artifact (#961) 2026-08-24 03:34:09 -07:00
test_dedupe_model.py fix(config): drop the stored LLM connection when a linked env var changes 2026-09-02 16:10:52 +03:00
test_disable_streaming.py fix(llm): cap the tool calls one assistant response may queue (#977) 2026-08-06 00:06:59 +03:00
test_docker_client_delete.py fix(ci): make the pre-commit mypy hook and the test suite pass on a fresh checkout 2026-09-02 15:15:51 +03:00
test_e2e_budget_lifecycle.py refactor(tools): split wait_for_message into respond_to_user + wait_for_agents 2026-08-02 02:15:51 +03:00
test_execution.py Fix user message retry lifecycle and TUI sync 2026-08-28 23:46:49 +03:00
test_execution_transient_retry.py fix: pre-v1-style lifecycle resilience — mailbox delivery, uniform revival, unexitable runner, waiting timeout, broader retries, crash-safe identity (#923) 2026-08-01 11:17:08 -07:00
test_fenced_code.py refactor: move strix/viewer under strix/interface 2026-07-26 13:11:14 -07:00
test_finish_coverage_gate.py feat(agents): evidence discipline, and coverage as a first-class artifact (#961) 2026-08-24 03:34:09 -07:00
test_go_tui_runtime.py feat(reporting): link HTTP exchange evidence (#1281) 2026-09-09 07:50:23 -07:00
test_hooks.py feat(runtime): graduated wrap-up warnings, budget reserve, and interactive budget pause/continue (#893) 2026-07-26 20:37:14 -07:00
test_import_warmup.py test(warmup): assert wait_for_import_warmup blocks until the thread finishes 2026-09-05 02:45:34 +03:00
test_inputs.py fix(llm): bind dedupe credentials to a provider; send reasoning=max via extra_body (#1187) 2026-08-28 09:27:57 -07:00
test_install_script.py Add Linux ARM64 standalone release support (#886) 2026-07-26 16:27:02 -07:00
test_list_reports.py report: add update_vulnerability_report so an agent can revise a filed finding (#1210) 2026-09-01 13:07:17 -07:00
test_llm_extra_headers.py fix(llm): apply LLM_EXTRA_HEADERS on native OpenAI route even without a custom base 2026-07-30 04:13:25 +03:00
test_local_sources.py test: remove Unix-only and developer-specific assumptions from the suite 2026-09-12 09:28:49 +05:30
test_mcp_client.py Make MCP connections survive transient transport failures (#1184) 2026-09-01 08:11:43 -07:00
test_mcp_resilience.py fix(mcp): keep the session on tool-call protocol errors and report quarantine truthfully (#1228) 2026-09-01 22:43:54 -04:00
test_model_retry.py Sign in with a ChatGPT subscription for inference (#854) 2026-07-24 15:41:19 -07:00
test_models.py fix(models): frontier model check matches the model name only, never the provider route (#1280) 2026-09-06 11:09:24 -07:00
test_notes.py Treat literal 'null'/'none' strings as absent for optional tool args (#1164) 2026-08-25 13:21:12 -04:00
test_optional_deps.py fix(ci): make the pre-commit mypy hook and the test suite pass on a fresh checkout 2026-09-02 15:15:51 +03:00
test_output_store.py feat(context): spill oversized tool output into the sandbox workspace (#882) 2026-07-26 14:42:22 -07:00
test_packaging.py feat(tui): replace Textual with a Go/Bubble Tea interface (#941) 2026-08-03 19:23:07 -07:00
test_pricing.py feat(cli): strix cloud — managed platform CLI (login, scans, billing, and the rest of the API) (#1177) 2026-09-01 14:39:34 -04:00
test_provider_hints.py fix(providers): match google submodule imports and walk full exception chain 2026-07-10 07:21:47 -07:00
test_proxy_client.py feat(reporting): link HTTP exchange evidence (#1281) 2026-09-09 07:50:23 -07:00
test_report_coverage.py feat(agents): evidence discipline, and coverage as a first-class artifact (#961) 2026-08-24 03:34:09 -07:00
test_report_pdf.py fix(viewer): harden PDF report rendering (#1192) 2026-08-31 20:22:33 -04:00
test_report_writer.py csv injection hardening (#1203) 2026-08-30 23:36:16 -04:00
test_reporting_fields.py feat(reporting): link HTTP exchange evidence (#1281) 2026-09-09 07:50:23 -07:00
test_reporting_tool.py fix: calibrate vulnerability severity to demonstrated impact 2026-08-03 23:40:32 +03:00
test_respond_to_user.py fix(agents): let an agent wait on what it already said (#1020) 2026-08-09 00:57:16 +03:00
test_runner_interrupt.py fix(runner): resume after a user interrupt instead of failing (#1023) 2026-08-08 16:44:12 -07:00
test_runner_mcp.py fix(ci): make the pre-commit mypy hook and the test suite pass on a fresh checkout 2026-09-02 15:15:51 +03:00
test_runner_rate_limit.py fix(core): recover from hallucinated tool names instead of ending the scan 2026-08-04 06:14:54 +03:00
test_runner_root_prompt.py Isolate MCP connections per task and surface connection status in the UIs (#1181) 2026-08-27 14:10:44 -07:00
test_runner_teardown.py fix(runner): settle child agents before closing sessions at wind-down (#1025) 2026-08-08 18:17:58 -07:00
test_sarif.py feat(agents): evidence discipline, and coverage as a first-class artifact (#961) 2026-08-24 03:34:09 -07:00
test_sarif_stride.py fix(ci): make the pre-commit mypy hook and the test suite pass on a fresh checkout 2026-09-02 15:15:51 +03:00
test_secret_files.py Create credential files with owner-only permissions (#945) 2026-08-03 19:36:59 -07:00
test_session_entries.py fix(runtime): remove the extra-file staging dir on cleanup and failed bring-up 2026-09-01 16:54:20 +03:00
test_session_fd.py fix(ci): make the pre-commit mypy hook and the test suite pass on a fresh checkout 2026-09-02 15:15:51 +03:00
test_skill_dir_extension.py feat(agents): evidence discipline, and coverage as a first-class artifact (#961) 2026-08-24 03:34:09 -07:00
test_state_coverage_artifact.py feat(agents): evidence discipline, and coverage as a first-class artifact (#961) 2026-08-24 03:34:09 -07:00
test_state_repo_context.py fix(report): omit SARIF provenance for multiple repos (#726) 2026-07-10 09:41:18 -04:00
test_stream_idle_timeout.py fix(llm): abandon a model stream that stops producing events (#978) 2026-08-06 00:07:14 +03:00
test_telemetry_errors.py feat(telemetry): classify error beacons by phase and exception class 2026-09-05 04:08:09 +03:00
test_telemetry_resume.py handle resume tokens gracefully (#1097) 2026-08-17 16:55:27 -04:00
test_threat_model_tool.py test: remove Unix-only and developer-specific assumptions from the suite 2026-09-12 09:28:49 +05:30
test_todo.py fix(todo): stop a todo plan failing on priority or duplicates (#1021) 2026-08-08 15:18:48 -07:00
test_tool_call_ids.py fix(llm): cap the tool calls one assistant response may queue (#977) 2026-08-06 00:06:59 +03:00
test_tool_call_limits.py fix(llm): cap the tool calls one assistant response may queue (#977) 2026-08-06 00:06:59 +03:00
test_tui_backend_controller.py fix(tui): run environment and model checks on the no-target start screen 2026-09-02 15:03:19 +03:00
test_tui_backend_server.py Fix user message retry lifecycle and TUI sync 2026-08-28 23:46:49 +03:00
test_tui_protocol_conformance.py feat(tui): replace Textual with a Go/Bubble Tea interface (#941) 2026-08-03 19:23:07 -07:00
test_tui_resume_history.py Fix user message retry lifecycle and TUI sync 2026-08-28 23:46:49 +03:00
test_unknown_tool_recovery.py fix(core): recover from hallucinated tool names instead of ending the scan 2026-08-04 06:14:54 +03:00
test_unraisable_filter.py feat(tui): replace Textual with a Go/Bubble Tea interface (#941) 2026-08-03 19:23:07 -07:00
test_update_check.py fix(update): re-exec runs the new binary after self-update (endless update-prompt loop) (#1168) 2026-08-25 15:13:35 -07:00
test_usage_subscription.py Sign in with a ChatGPT subscription for inference (#854) 2026-07-24 15:41:19 -07:00
test_viewer.py fix(viewer): show stopped run status 2026-09-04 01:10:10 +03:00
test_viewer_auth.py test: remove Unix-only and developer-specific assumptions from the suite 2026-09-12 09:28:49 +05:30
test_viewer_runs_gating.py refactor: move strix/viewer under strix/interface 2026-07-26 13:11:14 -07:00
test_wait_dedupe.py fix(agents): stop parents waiting on finished non-interactive children 2026-09-02 22:11:12 +03:00
test_web_search.py feat(web_search): add Exa as a web search provider alongside Perplexity (#1270) 2026-09-04 10:34:28 -07:00
test_workspace_files.py feat: place caller-provided files into the sandbox workspace (extra_files, --workspace-file) (#1085) 2026-08-14 16:43:08 -04:00