MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / code_auto_merge

Function code_auto_merge

atomic-core/src/merge/engine.rs:816–850  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

814
815 #[test]
816 fn code_auto_merge() {
817 let mut txn = MockTxn::new();
818 let store = MemoryChangeStore::new();
819
820 let base_hash = make_change(&store, b"fn main() { return 0; }");
821 let base_id = NodeId::new(1);
822 txn.register(base_id, base_hash);
823
824 let left_hash = make_change(&store, b"fn main() { return 1; }");
825 let left_id = NodeId::new(2);
826 txn.register(left_id, left_hash);
827
828 let right_hash = make_change(&store, b"fn run() { return 0; }");
829 let right_id = NodeId::new(3);
830 txn.register(right_id, right_hash);
831
832 let engine = SemanticMergeEngine::new(&txn, &store);
833
834 let v_base = GraphNode::new(base_id, ChangePosition::new(0), ChangePosition::new(23));
835 let v_left = GraphNode::new(left_id, ChangePosition::new(0), ChangePosition::new(23));
836 let v_right = GraphNode::new(right_id, ChangePosition::new(0), ChangePosition::new(22));
837
838 let group = ConflictGroup::new(vec![v_left, v_right]).with_ancestor(v_base);
839 let outcome = engine.try_merge(&group).unwrap();
840
841 assert!(
842 outcome.is_auto_merged(),
843 "expected AutoMerged, got {:?}",
844 outcome
845 );
846 assert_eq!(
847 std::str::from_utf8(outcome.content()).unwrap(),
848 "fn run() { return 1; }",
849 );
850 }
851}

Callers

nothing calls this directly

Calls 5

with_ancestorMethod · 0.80
make_changeFunction · 0.70
registerMethod · 0.45
unwrapMethod · 0.45
try_mergeMethod · 0.45

Tested by

no test coverage detected