#!/usr/bin/env python3 """Rust-independent structural checks; the Rust tests require Cargo.""" from pathlib import Path ROOT = Path(__file__).resolve().parents[2] source = (ROOT / 'src/proxy/forward/web_source.rs').read_text() helper = (ROOT / 'src/proxy/web_cache_revalidation.rs').read_text() tests = (ROOT / 'src/proxy/web_cache_revalidation/tests.rs').read_text() assert 'mod web_cache_revalidation;' in (ROOT / 'src/proxy/mod.rs').read_text() assert 'state.cache.revalidation_tiered(ticket).await' in source assert '!cached.reusable_for_request(&request_headers)' in source assert 'web_origin_request_headers(' in source assert 'revalidation_sent && response.status() == StatusCode::NOT_MODIFIED' in source assert 'finish_web_revalidation(' in source assert 'state.cache.discard(ticket)' in source assert 'cache.publish_revalidated(' in helper assert 'cache.ticket_current(ticket)' in helper assert 'cache.discard(ticket)' in helper assert 'origin_safe' in helper assert 'cached.apply_validators(&mut headers)' in helper assert 'headers.remove("if-none-match")' in helper assert 'headers.remove("if-modified-since")' in helper for name in ( 'browser_refresh_304_preserves_web_server_hit_counter', 'browser_conditional_refresh_returns_304_without_resetting_hits', 'mismatched_browser_validator_cannot_validate_different_cached_object', 'range_and_head_requests_use_validated_cached_body', 'changed_local_file_is_not_falsely_revalidated', '304_new_private_policy_discards_cached_representation', ): assert f'async fn {name}()' in tests print('PASS: RustProxy 0.32.2 Web Server revalidation wiring and Rust regression contracts (static only)')