0.3.15-pre.014

This commit is contained in:
2026-09-17 13:02:10 +02:00
parent 6ee4e3bdf4
commit ad24cb36fa
10 changed files with 561 additions and 13 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-store-postgres-lib/unit_tests/raw_transaction.rs
// version: 7
// version: 8
fn network() -> ksp_store_api::RawNetworkId {
return match ksp_store_api::RawNetworkId::new("devnet") {
@@ -429,6 +429,52 @@ fn v0_3_15_pre_012_fix_004_content_conflict_diagnostic_collapses_unknown_meta_ke
return;
}
#[test]
fn v0_3_15_pre_014_log_messages_conflict_diagnostic_distinguishes_prefix_truncation_and_line_kind_without_text() {
let stored = raw_transaction(
9,
br#"{"transaction":["AQID","base64"],"meta":{"logMessages":["Program Vote111 invoke [1]","Program log: stable","Program Vote111 success"]},"version":0}"#,
7,
);
let incoming = raw_transaction(
9,
br#"{"transaction":["AQID","base64"],"meta":{"logMessages":["Program Vote111 invoke [1]","Program log: stable","Log truncated"]},"version":0}"#,
8,
);
let diagnostic = super::raw_transaction_content_conflict_diagnostic(&stored, &incoming);
assert!(diagnostic.log_messages.available);
assert_eq!(diagnostic.log_messages.stored_state, "array");
assert_eq!(diagnostic.log_messages.incoming_state, "array");
assert_eq!(diagnostic.log_messages.stored_count, 3);
assert_eq!(diagnostic.log_messages.incoming_count, 3);
assert_eq!(diagnostic.log_messages.first_mismatch_index, "2");
assert_eq!(diagnostic.log_messages.stored_first_kind, "program_success");
assert_eq!(diagnostic.log_messages.incoming_first_kind, "log_truncated");
assert!(!diagnostic.log_messages.stored_has_truncation_marker);
assert!(diagnostic.log_messages.incoming_has_truncation_marker);
assert!(!diagnostic.log_messages.stored_prefix_of_incoming);
assert!(!diagnostic.log_messages.incoming_prefix_of_stored);
return;
}
#[test]
fn v0_3_15_pre_014_log_messages_conflict_diagnostic_detects_strict_prefix_without_exposing_line_material() {
let stored = raw_transaction(
9,
br#"{"transaction":["AQID","base64"],"meta":{"logMessages":["Program Vote111 invoke [1]","Program Vote111 success"]},"version":0}"#,
7,
);
let incoming = raw_transaction(9, br#"{"transaction":["AQID","base64"],"meta":{"logMessages":["Program Vote111 invoke [1]"]},"version":0}"#, 8);
let diagnostic = super::raw_transaction_content_conflict_diagnostic(&stored, &incoming);
assert!(diagnostic.log_messages.available);
assert_eq!(diagnostic.log_messages.first_mismatch_index, "1");
assert_eq!(diagnostic.log_messages.stored_first_kind, "program_success");
assert_eq!(diagnostic.log_messages.incoming_first_kind, "missing");
assert!(!diagnostic.log_messages.stored_prefix_of_incoming);
assert!(diagnostic.log_messages.incoming_prefix_of_stored);
return;
}
#[test]
fn pre_005_observation_idempotence_compares_reference_and_complete_provenance() {
let incoming_transaction = raw_transaction(8, &[1, 2, 3], 4);