diff --git a/crates/loro-internal/src/loro.rs b/crates/loro-internal/src/loro.rs index b16d7906d..2a55cce14 100644 --- a/crates/loro-internal/src/loro.rs +++ b/crates/loro-internal/src/loro.rs @@ -1325,8 +1325,7 @@ impl LoroDoc { } let frontiers = if to_shrink_frontiers { - shrink_frontiers(frontiers, &oplog.dag) - .map_err(|_| LoroError::SwitchToVersionBeforeShallowRoot)? + shrink_frontiers(frontiers, &oplog.dag).map_err(LoroError::FrontiersNotFound)? } else { frontiers.clone() }; diff --git a/crates/loro/tests/loro_rust_test.rs b/crates/loro/tests/loro_rust_test.rs index e578ae6c2..819212d32 100644 --- a/crates/loro/tests/loro_rust_test.rs +++ b/crates/loro/tests/loro_rust_test.rs @@ -3358,3 +3358,16 @@ fn test_from_shallow_snapshot() { .insert("text".into(), LoroValue::String("Hello".into())); assert_eq!(new_doc.get_deep_value(), LoroValue::Map(expected)); } + +#[test] +fn test_checkout_to_unknown_version() { + let doc = LoroDoc::new(); + doc.set_peer_id(1).unwrap(); + doc.get_text("text").insert(0, "Hello").unwrap(); + let result = doc.checkout(&Frontiers::from([ID::new(2, 2), ID::new(1, 1)])); + assert!(result.is_err()); + assert!(matches!( + result.err().unwrap(), + LoroError::FrontiersNotFound(..) + )); +}