test_real_examples_and_active_ci_exist (test_acceptance.AcceptanceTests.test_real_examples_and_active_ci_exist) ... ok
test_runnable_entrypoint_and_documented_commands (test_acceptance.AcceptanceTests.test_runnable_entrypoint_and_documented_commands) ... ok
test_scanner_bootstrap_script_exists (test_acceptance.AcceptanceTests.test_scanner_bootstrap_script_exists) ... ok
test_cli_disables_tools_discovery_and_persistence (test_ai.AITests.test_cli_disables_tools_discovery_and_persistence) ... ok
test_code_upload_requires_explicit_consent (test_ai.AITests.test_code_upload_requires_explicit_consent) ... ok
test_duplicate_candidate_ids_rejected (test_ai.AITests.test_duplicate_candidate_ids_rejected) ... ok
test_envelope_requires_successful_structured_output (test_ai.AITests.test_envelope_requires_successful_structured_output) ... ok
test_hunter_output_paths_bound_to_packet (test_ai.AITests.test_hunter_output_paths_bound_to_packet) ... ok
test_packet_omits_files_with_detected_secrets (test_ai.AITests.test_packet_omits_files_with_detected_secrets) ... ok
test_packet_reports_budget_omissions (test_ai.AITests.test_packet_reports_budget_omissions) ... ok
test_verifier_must_cover_every_candidate (test_ai.AITests.test_verifier_must_cover_every_candidate) ... ok
test_environment_does_not_leak_credentials (test_core.CoreTests.test_environment_does_not_leak_credentials) ... ok
test_json_duplicate_keys_rejected (test_core.CoreTests.test_json_duplicate_keys_rejected) ... ok
test_json_nonfinite_rejected (test_core.CoreTests.test_json_nonfinite_rejected) ... ok
test_process_exit_code_and_stdout (test_core.CoreTests.test_process_exit_code_and_stdout) ... ok
test_safe_paths (test_core.CoreTests.test_safe_paths) ... ok
test_shell_metacharacters_are_data (test_core.CoreTests.test_shell_metacharacters_are_data) ... ok
test_timeout_is_not_success (test_core.CoreTests.test_timeout_is_not_success) ... ok
test_write_refuses_symlink (test_core.CoreTests.test_write_refuses_symlink) ... ok
test_archive_link_rejected (test_core.InstallerTests.test_archive_link_rejected) ... ok
test_archive_traversal_not_extracted (test_core.InstallerTests.test_archive_traversal_not_extracted) ... ok
test_bad_hash_rejected_before_use (test_core.InstallerTests.test_bad_hash_rejected_before_use) ... ok
test_pins_are_complete (test_core.InstallerTests.test_pins_are_complete) ... ok
test_platform_selection (test_core.InstallerTests.test_platform_selection) ... ok
test_verified_binary_extraction (test_core.InstallerTests.test_verified_binary_extraction) ... ok
test_calculator_keeps_allowed_arithmetic (test_demo_app.DemoApplicationTests.test_calculator_keeps_allowed_arithmetic) ... ok
test_fixed_calculator_rejects_function_calls (test_demo_app.DemoApplicationTests.test_fixed_calculator_rejects_function_calls) ... ok
test_fixed_calculator_rejects_large_inputs (test_demo_app.DemoApplicationTests.test_fixed_calculator_rejects_large_inputs) ... ok
test_fixed_diagnostics_reject_arbitrary_commands (test_demo_app.DemoApplicationTests.test_fixed_diagnostics_reject_arbitrary_commands) ... ok
test_fixed_fixture_blocks_cross_tenant_read (test_demo_app.DemoApplicationTests.test_fixed_fixture_blocks_cross_tenant_read) ... ok
test_fixed_fixture_does_not_distinguish_missing_from_unauthorized (test_demo_app.DemoApplicationTests.test_fixed_fixture_does_not_distinguish_missing_from_unauthorized) ... ok
test_fixed_fixture_preserves_authorized_access (test_demo_app.DemoApplicationTests.test_fixed_fixture_preserves_authorized_access) ... ok
test_vulnerable_fixture_demonstrates_cross_tenant_read (test_demo_app.DemoApplicationTests.test_vulnerable_fixture_demonstrates_cross_tenant_read) ... ok
test_gitleaks_non_object_candidate_is_rejected (test_reports.MalformedScannerOutputTests.test_gitleaks_non_object_candidate_is_rejected) ... ok
test_semgrep_non_object_candidate_is_rejected (test_reports.MalformedScannerOutputTests.test_semgrep_non_object_candidate_is_rejected) ... ok
test_semgrep_scanned_paths_must_be_an_array (test_reports.MalformedScannerOutputTests.test_semgrep_scanned_paths_must_be_an_array) ... ok
test_trivy_inventory_must_be_an_array (test_reports.MalformedScannerOutputTests.test_trivy_inventory_must_be_an_array) ... ok
test_trivy_non_object_target_is_rejected (test_reports.MalformedScannerOutputTests.test_trivy_non_object_target_is_rejected) ... ok
test_trivy_unknown_check_kind_is_rejected (test_reports.MalformedScannerOutputTests.test_trivy_unknown_check_kind_is_rejected) ... ok
test_empty_semgrep_payload_rejected (test_reports.ParserTests.test_empty_semgrep_payload_rejected) ... ok
test_invalid_trivy_schema_rejected (test_reports.ParserTests.test_invalid_trivy_schema_rejected) ... ok
test_outside_snapshot_path_rejected (test_reports.ParserTests.test_outside_snapshot_path_rejected) ... ok
test_secret_value_never_in_normalized_report (test_reports.ParserTests.test_secret_value_never_in_normalized_report) ... ok
test_semgrep_candidate (test_reports.ParserTests.test_semgrep_candidate) ... ok
test_semgrep_parse_error_recorded (test_reports.ParserTests.test_semgrep_parse_error_recorded) ... ok
test_trivy_misconfig_failure_only (test_reports.ParserTests.test_trivy_misconfig_failure_only) ... ok
test_trivy_vulnerability_and_inventory (test_reports.ParserTests.test_trivy_vulnerability_and_inventory) ... ok
test_ai_cannot_erase_scanner_findings (test_reports.ReportTests.test_ai_cannot_erase_scanner_findings) ... ok
test_clean_is_only_scanner_policy_pass (test_reports.ReportTests.test_clean_is_only_scanner_policy_pass) ... ok
test_duplicate_scanner_cannot_pass (test_reports.ReportTests.test_duplicate_scanner_cannot_pass) ... ok
test_high_finding_blocks (test_reports.ReportTests.test_high_finding_blocks) ... ok
test_iac_inline_suppression_requires_review (test_reports.ReportTests.test_iac_inline_suppression_requires_review) ... ok
test_markdown_and_sarif_escape_paths (test_reports.ReportTests.test_markdown_and_sarif_escape_paths) ... ok
test_missing_scanner_cannot_pass (test_reports.ReportTests.test_missing_scanner_cannot_pass) ... ok
test_no_targets_requires_reason (test_reports.ReportTests.test_no_targets_requires_reason) ... ok
test_requested_ai_failure_is_not_pass (test_reports.ReportTests.test_requested_ai_failure_is_not_pass) ... ok
test_timeout_or_partial_is_incomplete (test_reports.ReportTests.test_timeout_or_partial_is_incomplete) ... ok
test_unknown_severity_is_not_ignored (test_reports.ReportTests.test_unknown_severity_is_not_ignored) ... ok
test_bad_revision_rejected (test_snapshot.SnapshotTests.test_bad_revision_rejected) ... ok
test_dirty_tree_rejected (test_snapshot.SnapshotTests.test_dirty_tree_rejected) ... ok
test_export_ignore_does_not_hide_source (test_snapshot.SnapshotTests.test_export_ignore_does_not_hide_source) ... ok
test_git_fsmonitor_hook_is_disabled (test_snapshot.SnapshotTests.test_git_fsmonitor_hook_is_disabled) ... ok
test_pinned_snapshot_can_be_reexported_with_dirty_worktree (test_snapshot.SnapshotTests.test_pinned_snapshot_can_be_reexported_with_dirty_worktree) ... ok
test_scanner_ignore_file_not_trusted (test_snapshot.SnapshotTests.test_scanner_ignore_file_not_trusted) ... ok
test_snapshot_has_commit_content (test_snapshot.SnapshotTests.test_snapshot_has_commit_content) ... ok
test_snapshot_size_limit_rejected (test_snapshot.SnapshotTests.test_snapshot_size_limit_rejected) ... ok
test_symlink_commit_rejected (test_snapshot.SnapshotTests.test_symlink_commit_rejected) ... ok
test_untracked_files_rejected (test_snapshot.SnapshotTests.test_untracked_files_rejected) ... ok

----------------------------------------------------------------------
Ran 68 tests in 2.333s

OK
