// file: crates/ksp-app-backfill-desk/tests/release_completeness.rs // version: 1 //! Final V1 completeness canaries for the KSP Backfill desktop application. #![forbid(unsafe_code)] #![deny(unreachable_pub)] #![warn(missing_docs)] fn app_root() -> std::path::PathBuf { return std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")); } fn read_text(path: &std::path::Path) -> String { let source = std::fs::read_to_string(path); assert!(source.is_ok(), "unable to read {}", path.display()); return match source { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => String::new(), }; } #[test] fn pre_013_production_module_inventory_is_exact() { let lib = read_text(app_root().join("src/lib.rs").as_path()); let modules = lib .lines() .filter_map(|line| { let line = line.trim(); if !line.starts_with("mod ") || !line.ends_with(';') { return std::option::Option::None; } return std::option::Option::Some(line.trim_start_matches("mod ").trim_end_matches(';')); }) .collect::>(); assert_eq!( modules, std::collections::BTreeSet::from([ "app_state", "backfill_request", "backfill_run", "backfill_status", "bootstrap", "constants", "dto_backfill", "dto_common", "errors", "frontend_logging", "logging_runtime", "splash", "store_runtime", "tauri", "transport_runtime", "tw_main", "tw_splash", ]) ); } #[test] fn pre_013_integration_suite_inventory_closes_v1_contracts() { let tests_root = app_root().join("tests"); let entries = std::fs::read_dir(tests_root.as_path()); assert!(entries.is_ok(), "Backfill Desk tests directory should be readable"); let entries = match entries { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return, }; let files = entries .flatten() .filter_map(|entry| { let path = entry.path(); if path.extension().and_then(std::ffi::OsStr::to_str) != std::option::Option::Some("rs") { return std::option::Option::None; } return path.file_name().and_then(std::ffi::OsStr::to_str).map(str::to_owned); }) .collect::>(); assert_eq!( files, std::collections::BTreeSet::from([ "config_composition.rs".to_owned(), "dependency_boundary.rs".to_owned(), "desktop_contract.rs".to_owned(), "desktop_security.rs".to_owned(), "public_api.rs".to_owned(), "release_completeness.rs".to_owned(), ]) ); } #[test] fn pre_013_final_surface_contains_every_planned_v1_capability_without_deferred_extensions() { let tauri = read_text(app_root().join("src/tauri.rs").as_path()); for required in ["backfill_start", "backfill_status", "backfill_cancel", "backfill_resume"] { assert!(tauri.contains(required), "missing final V1 capability marker {required}"); } let options = read_text(app_root().join("src/dto_common.rs").as_path()); assert!(options.contains("program_id_options")); assert!(options.contains("program_id_autocomplete_options")); let status = read_text(app_root().join("src/backfill_status.rs").as_path()); for required in ["checkpoint_present", "contiguous_completed", "failure_code", "failure_domain"] { assert!(status.contains(required), "missing final monitoring marker {required}"); } for forbidden in ["Grpc", "Yellowstone", "WebSocketBackfill", "scheduler", "job_history"] { assert!(!tauri.contains(forbidden), "deferred capability leaked into V1 Tauri surface via {forbidden}"); } } #[test] fn pre_013_shared_autocomplete_dto_remains_exported_and_consumed_through_crate_root() { let root = app_root(); let lib = read_text(root.join("src/lib.rs").as_path()); assert!(lib.contains("pub(crate) use self::dto_common::ProgramIdAutocompleteOptionDto;")); let dto = read_text(root.join("src/dto_common.rs").as_path()); assert!(dto.contains("pub(crate) struct ProgramIdAutocompleteOptionDto")); assert!(dto.contains("std::vec::Vec")); assert!(dto.contains("crate::ProgramIdAutocompleteOptionDto {")); let bare_construction = dto.matches("\n ProgramIdAutocompleteOptionDto {").count(); assert_eq!(bare_construction, 0, "shared autocomplete DTO must not bypass the crate-root facade"); }