{
  "suite": "supplier-catalog-imports",
  "tests": 20,
  "passed": 20,
  "failures": 0,
  "errors": 0,
  "elapsed_seconds": 3.261,
  "cases": [
    "test_ambiguous_decimal_and_extra_precision_rejected (__main__.DatabaseTests.test_ambiguous_decimal_and_extra_precision_rejected)",
    "test_concurrent_reviews_one_wins_other_is_stale (__main__.DatabaseTests.test_concurrent_reviews_one_wins_other_is_stale)",
    "test_currency_and_unit_change_remain_explicit_in_diff (__main__.DatabaseTests.test_currency_and_unit_change_remain_explicit_in_diff)",
    "test_duplicate_headers_and_unclosed_quote_are_blocked (__main__.DatabaseTests.test_duplicate_headers_and_unclosed_quote_are_blocked)",
    "test_duplicate_normalized_keys_reject_both_and_block_batch (__main__.DatabaseTests.test_duplicate_normalized_keys_reject_both_and_block_batch)",
    "test_explicit_european_decimal_mapping (__main__.DatabaseTests.test_explicit_european_decimal_mapping)",
    "test_full_report_includes_all_pages (__main__.DatabaseTests.test_full_report_includes_all_pages)",
    "test_invalid_unicode_is_rejected_without_server_error (__main__.DatabaseTests.test_invalid_unicode_is_rejected_without_server_error)",
    "test_mid_batch_fault_rolls_back_items_version_and_audit (__main__.DatabaseTests.test_mid_batch_fault_rolls_back_items_version_and_audit)",
    "test_newlines_in_quoted_description_are_retained (__main__.DatabaseTests.test_newlines_in_quoted_description_are_retained)",
    "test_quoted_csv_aliases_diff_and_missing_rows (__main__.DatabaseTests.test_quoted_csv_aliases_diff_and_missing_rows)",
    "test_refresh_changes_review_digest_and_requires_new_review (__main__.DatabaseTests.test_refresh_changes_review_digest_and_requires_new_review)",
    "test_response_loss_retry_returns_committed_result_once (__main__.DatabaseTests.test_response_loss_retry_returns_committed_result_once)",
    "test_source_digest_is_idempotent_and_bytes_preserved (__main__.DatabaseTests.test_source_digest_is_idempotent_and_bytes_preserved)",
    "test_http_authentication_csrf_origin_and_host_checks (__main__.HttpTests.test_http_authentication_csrf_origin_and_host_checks)",
    "test_http_full_review_and_download_workflow (__main__.HttpTests.test_http_full_review_and_download_workflow)",
    "test_http_importer_cannot_approve (__main__.HttpTests.test_http_importer_cannot_approve)",
    "test_http_path_traversal_is_not_a_file_route (__main__.HttpTests.test_http_path_traversal_is_not_a_file_route)",
    "test_http_reader_cannot_stage_or_approve (__main__.HttpTests.test_http_reader_cannot_stage_or_approve)",
    "test_http_static_page_and_malformed_input (__main__.HttpTests.test_http_static_page_and_malformed_input)"
  ],
  "command": "python tests.py"
}
