Fixing the tests

pmeunier
Dec 6, 2021, 9:22 AM
55SCQOOHI4VRYNKPKDV5PVDXZIY4DG6URA2TMBLQGYLNI6YC7XHAC

Dependencies

  • [2] OEKRRU6O Fix test compilation
  • [3] AF5AKUTO Cleanup after the text changes refactoring
  • [4] TIPZ7UXN Started fixing the tests for parallel record/output
  • [5] MCAUAMZZ fix libpijul tests, and an unnecessary clone
  • [6] HOTQHK5U Fixing tests
  • [7] UN2M77YU Test new changes against the old code. Fix several small bugs.
  • [8] 3YDPHBAN address non-controversial clippy lints
  • [9] I24UEJQL Various post-fire fixes
  • [10] SPA2OL5I keep-changes feature (default) to avoid deleting problematic changes
  • [11] GHO6DWPI Refactoring iterators
  • [12] V4T4SC7O Testing binary diff
  • [13] RMDMAYRX Adding a root inode (aka supporting submodules)
  • [14] YN63NUZO Sanakirja 1.0
  • [15] NO2QPRFL Adding rollback test
  • [16] IIV3EL2X Cleanup, formatting, and fixing the Git feature
  • [17] SHSJ3Y53 Fixing more tests
  • [18] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [19] X7OHUPL5 Fixing a bug in unrecord, and fixing the tests
  • [20] I52XSRUH Massive cleanup, and simplification
  • [21] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [22] 3M7WBE24 Re-adding anyhow in the tests of libpijul
  • [23] FXEDPLRI Resurrecting tests, and type cleanup (no need for Arc<RwLock<…>> anymore)
  • [24] 5FI6SBEZ Re-implement change printing and parsing

Change contents

  • replacement in libpijul/src/tests/unrecord.rs at line 24
    [4.3868][4.3868:3930]()
    repo.write_file("dir/file")?.write_all(b"a\nx\nb\nd\n")?;
    [4.3868]
    [4.249573]
    repo.write_file("dir/file", Inode::ROOT)?
    .write_all(b"a\nx\nb\nd\n")?;
  • replacement in libpijul/src/tests/unrecord.rs at line 62
    [4.250818][4.4746:4808]()
    repo.write_file("dir/file")?.write_all(b"a\nx\ny\nd\n")?;
    [4.250818]
    [4.250919]
    repo.write_file("dir/file", Inode::ROOT)?
    .write_all(b"a\nx\ny\nd\n")?;
  • replacement in libpijul/src/tests/unrecord.rs at line 183
    [4.254929][4.7588:7644]()
    repo.write_file("file")?.write_all(b"a\nd\n")?;
    [4.254929]
    [4.255036]
    repo.write_file("file", Inode::ROOT)?.write_all(b"a\nd\n")?;
  • replacement in libpijul/src/tests/unrecord.rs at line 188
    [4.255132][4.7782:7844]()
    repo2.write_file("file")?.write_all(b"a\nb\nx\nc\nd\n")?;
    [4.255132]
    [4.3770]
    repo2
    .write_file("file", Inode::ROOT)?
    .write_all(b"a\nb\nx\nc\nd\n")?;
  • replacement in libpijul/src/tests/unrecord.rs at line 193
    [4.255312][4.7932:7997]()
    repo2.write_file("file")?.write_all(b"a\nb\nx\nc\ny\nd\n")?;
    [4.255312]
    [4.3837]
    repo2
    .write_file("file", Inode::ROOT)?
    .write_all(b"a\nb\nx\nc\ny\nd\n")?;
  • replacement in libpijul/src/tests/unrecord.rs at line 242
    [4.257055][4.9449:9500]()
    repo.write_file("file")?.write_all(file)?;
    [4.257055]
    [4.257157]
    repo.write_file("file", Inode::ROOT)?.write_all(file)?;
  • replacement in libpijul/src/tests/unrecord.rs at line 250
    [4.257356][4.9711:9773]()
    repo2.write_file("file")?.write_all(b"a\nb\nx\nc\nd\n")?;
    [4.257356]
    [4.4875]
    repo2
    .write_file("file", Inode::ROOT)?
    .write_all(b"a\nb\nx\nc\nd\n")?;
  • replacement in libpijul/src/tests/unrecord.rs at line 280
    [4.258535][4.5162:5243]()
    let (alive_, reachable_) = check_alive(&*txn.read(), &channel.read().graph);
    [4.258535]
    [4.258593]
    let (alive_, reachable_) = check_alive(&*txn.read(), &channel.read());
  • replacement in libpijul/src/tests/unrecord.rs at line 350
    [4.261132][4.6131:6212]()
    let (alive_, reachable_) = check_alive(&*txn.read(), &channel.read().graph);
    [4.261132]
    [4.261190]
    let (alive_, reachable_) = check_alive(&*txn.read(), &channel.read());
  • replacement in libpijul/src/tests/unrecord.rs at line 380
    [4.261933][4.12512:12574]()
    repo.write_file("dir/file")?.write_all(b"a\nx\nb\nd\n")?;
    [4.261933]
    [4.262034]
    repo.write_file("dir/file", Inode::ROOT)?
    .write_all(b"a\nx\nb\nd\n")?;
  • replacement in libpijul/src/tests/unrecord.rs at line 494
    [4.266093][4.15305:15360]()
    repo.write_file("file")?.write_all(b"a\nx\nb\n")?;
    [4.266093]
    [4.8419]
    repo.write_file("file", Inode::ROOT)?
    .write_all(b"a\nx\nb\n")?;
  • replacement in libpijul/src/tests/unrecord.rs at line 497
    [4.8473][4.15435:15490](),[4.15435][4.15435:15490]()
    repo.write_file("file")?.write_all(b"a\ny\nb\n")?;
    [4.8473]
    [4.8474]
    repo.write_file("file", Inode::ROOT)?
    .write_all(b"a\ny\nb\n")?;
  • replacement in libpijul/src/tests/unrecord.rs at line 519
    [4.15988][4.15988:16034]()
    let mut w = repo.write_file("file")?;
    [4.15988]
    [4.267007]
    let mut w = repo.write_file("file", Inode::ROOT)?;
  • replacement in libpijul/src/tests/unrecord.rs at line 594
    [4.269093][4.16773:16829]()
    repo.write_file("file")?.write_all(b"a\nd\n")?;
    [4.269093]
    [4.269200]
    repo.write_file("file", Inode::ROOT)?.write_all(b"a\nd\n")?;
  • replacement in libpijul/src/tests/unrecord.rs at line 667
    [4.18031][4.18031:18077]()
    let mut w = repo.write_file("file")?;
    [4.18031]
    [4.218]
    let mut w = repo.write_file("file", Inode::ROOT)?;
  • replacement in libpijul/src/tests/unrecord.rs at line 719
    [4.19418][4.19418:19464]()
    let mut w = repo.write_file("file")?;
    [4.19418]
    [4.273700]
    let mut w = repo.write_file("file", Inode::ROOT)?;
  • replacement in libpijul/src/tests/unrecord.rs at line 727
    [4.19626][4.19626:19672]()
    let mut w = repo.write_file("file")?;
    [4.19626]
    [4.214]
    let mut w = repo.write_file("file", Inode::ROOT)?;
  • edit in libpijul/src/tests/text_changes.rs at line 29
    [4.3725][4.3725:3775]()
    let change0 = store.get_change(&h0).unwrap();
  • replacement in libpijul/src/tests/text_changes.rs at line 30
    [4.115][4.3775:3874](),[4.3775][4.3775:3874]()
    text_test(&store, &change0, h0);
    write!(repo.write_file("file")?, "a\nx\nc\ne\ny\nf\n")?;
    [4.115]
    [4.3874]
    write!(repo.write_file("file", Inode::ROOT)?, "a\nx\nc\ne\ny\nf\n")?;
  • replacement in libpijul/src/tests/text_changes.rs at line 33
    [4.3936][4.3936:4023]()
    let change1 = store.get_change(&h1).unwrap();
    text_test(&store, &change1, h1);
    [4.3936]
    [4.4023]
    let _change1 = store.get_change(&h1).unwrap();
  • replacement in libpijul/src/tests/text_changes.rs at line 37
    [4.4124][4.4124:4211]()
    let change2 = store.get_change(&h2).unwrap();
    text_test(&store, &change2, h2);
    [4.4124]
    [4.4211]
    let _change2 = store.get_change(&h2).unwrap();
  • replacement in libpijul/src/tests/text_changes.rs at line 42
    [4.4356][4.4356:4443]()
    let change3 = store.get_change(&h3).unwrap();
    text_test(&store, &change3, h3);
    [4.4356]
    [4.4443]
    let _change3 = store.get_change(&h3).unwrap();
  • replacement in libpijul/src/tests/text_changes.rs at line 60
    [4.5423][4.5423:5510]()
    let solution = store.get_change(&h).unwrap();
    text_test(&store, &solution, h);
    [4.5423]
    [4.5510]
    let _solution = store.get_change(&h).unwrap();
  • edit in libpijul/src/tests/text_changes.rs at line 63
    [4.5522][4.5522:5618](),[4.5618][4.116:148](),[4.148][4.5618:5657](),[4.5618][4.5618:5657](),[4.5657][4.149:211](),[4.211][4.5657:5712](),[4.5657][4.5657:5712](),[4.5712][4.212:265](),[4.265][4.5761:5849](),[4.5761][4.5761:5849](),[4.5849][3.91:203](),[3.203][4.5849:7407](),[4.370][4.5849:7407](),[4.5849][4.5849:7407](),[4.7407][4.371:405]()
    }
    fn text_test<C: ChangeStore>(c: &C, change0: &Change, h: Hash) {
    let mut v = Vec::new();
    let mut v_old = Vec::new();
    // let channel = channel.borrow();
    change0.write_old(c, Some(h), true, &mut v_old).unwrap();
    change0.write(c, Some(h), true, &mut v).unwrap();
    println!("{}", String::from_utf8_lossy(&v_old));
    for i in std::str::from_utf8(&v).unwrap().lines() {
    debug!("{}", i);
    }
    let change0 =
    Change::read_old(std::io::Cursor::new(&v_old[..]), &mut HashMap::default()).unwrap();
    let change1 = Change::read(std::io::Cursor::new(&v[..]), &mut HashMap::default()).unwrap();
    if change0.header != change1.header {
    error!("header: {:#?} != {:#?}", change0.header, change1.header);
    }
    if change0.dependencies != change1.dependencies {
    error!(
    "deps: {:#?} != {:#?}",
    change0.dependencies, change1.dependencies
    );
    }
    if change0.extra_known != change1.extra_known {
    error!(
    "extra: {:#?} != {:#?}",
    change0.extra_known, change1.extra_known
    );
    }
    if change0.metadata != change1.metadata {
    error!("meta: {:#?} != {:#?}", change0.metadata, change1.metadata);
    }
    if change0.changes != change1.changes {
    if change0.changes.len() != change1.changes.len() {
    trace!("change0.changes = {:#?}", change0.changes);
    trace!("change1.changes = {:#?}", change1.changes);
    } else {
    for (a, b) in change0.changes.iter().zip(change1.changes.iter()) {
    trace!("change0: {:#?}", a);
    trace!("change1: {:#?}", b);
    for (a, b) in a.iter().zip(b.iter()) {
    if a != b {
    error!("change0 -> {:#?}", a);
    error!("change1 -> {:#?}", b);
    }
    }
    }
    }
    }
    if change0.contents != change1.contents {
    error!("change0.contents = {:?}", change0.contents);
    error!("change1.contents = {:?}", change1.contents);
    }
    assert_eq!(change0, change1);
  • replacement in libpijul/src/tests/text.rs at line 66
    [4.673][4.673:736]()
    repo.write_file("file").unwrap().write_all(&buf).unwrap();
    [4.673]
    [4.12620]
    repo.write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(&buf)
    .unwrap();
  • replacement in libpijul/src/tests/rollback.rs at line 25
    [4.906][4.13024:13052]()
    repo.write_file("file")
    [4.906]
    [4.13052]
    repo.write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/rollback.rs at line 31
    [4.1101][4.13195:13223]()
    repo.write_file("file")
    [4.1101]
    [4.13223]
    repo.write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/rollback.rs at line 49
    [4.13630][4.13630:13684]()
    let mut w = repo.write_file("file").unwrap();
    [4.13630]
    [4.1726]
    let mut w = repo.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/rollback.rs at line 96
    [4.3226][4.14033:14061]()
    repo.write_file("file")
    [4.3226]
    [4.14061]
    repo.write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/rollback.rs at line 102
    [4.3421][4.14196:14259]()
    repo.write_file("file").unwrap().write_all(b"a\ny\nb\n")?;
    [4.3421]
    [4.14259]
    repo.write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(b"a\ny\nb\n")?;
  • replacement in libpijul/src/tests/rollback.rs at line 118
    [4.14555][4.14555:14609]()
    let mut w = repo.write_file("file").unwrap();
    [4.14555]
    [4.4241]
    let mut w = repo.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/performance.rs at line 25
    [4.278957][4.15940:15994]()
    let mut w = repo.write_file("file").unwrap();
    [4.278957]
    [4.15994]
    let mut w = repo.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/performance.rs at line 36
    [4.16250][4.16250:16304]()
    let mut w = repo.write_file("file").unwrap();
    [4.16250]
    [4.279443]
    let mut w = repo.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/performance.rs at line 47
    [4.279819][2.269:312]()
    let graph = &channel.read().graph;
    [4.279819]
    [4.6005]
    let graph = channel.read();
  • replacement in libpijul/src/tests/performance.rs at line 49
    [4.6028][2.313:461]()
    let mut cursor = txn.read().graph_cursor(graph, None).unwrap();
    while let Some(Ok(_)) = txn.read().next_graph(graph, &mut cursor) {
    [4.6028]
    [4.6164]
    let mut cursor = txn.read().graph_cursor(&*graph, None).unwrap();
    while let Some(Ok(_)) = txn.read().next_graph(&*graph, &mut cursor) {
  • replacement in libpijul/src/tests/performance.rs at line 83
    [4.280798][4.16803:16857]()
    let mut w = repo.write_file("file").unwrap();
    [4.280798]
    [4.16857]
    let mut w = repo.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/performance.rs at line 95
    [4.17205][4.17205:17259]()
    let mut w = repo.write_file("file").unwrap();
    [4.17205]
    [4.281336]
    let mut w = repo.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/performance.rs at line 109
    [4.17292][4.17292:17409]()
    &[
    txn.read().graph(&channel.read()),
    txn.read().graph(&channel2.read()),
    ],
    [4.17292]
    [4.4133]
    &[&channel.read().graph, &channel2.read().graph],
  • replacement in libpijul/src/tests/performance.rs at line 115
    [4.17416][4.17416:17470]()
    let mut w = repo.write_file("file").unwrap();
    [4.17416]
    [4.281743]
    let mut w = repo.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/performance.rs at line 136
    [4.282400][2.462:505]()
    let graph = &channel.read().graph;
    [4.282400]
    [4.6615]
    let graph = &channel.read();
  • replacement in libpijul/src/tests/performance.rs at line 149
    [4.282696][2.655:699]()
    let graph = &channel2.read().graph;
    [4.282696]
    [4.6804]
    let graph = &channel2.read();
  • replacement in libpijul/src/tests/partial.rs at line 70
    [4.19277][4.19277:19413]()
    repo.write_file("a/b/c/d").unwrap().write_all(b"edits\n")?;
    repo.write_file("e/f/g/h").unwrap().write_all(b"edits\n")?;
    [4.19277]
    [4.19413]
    repo.write_file("a/b/c/d", Inode::ROOT)
    .unwrap()
    .write_all(b"edits\n")?;
    repo.write_file("e/f/g/h", Inode::ROOT)
    .unwrap()
    .write_all(b"edits\n")?;
  • replacement in libpijul/src/tests/missing_context.rs at line 52
    [4.293258][4.21584:21650]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.293258]
    [4.21650]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/missing_context.rs at line 60
    [4.13476][4.21737:21765]()
    .write_file("file")
    [4.13476]
    [4.21765]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/missing_context.rs at line 69
    [4.21916][4.21916:21948]()
    .write_file("file")
    [4.21916]
    [4.21948]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/missing_context.rs at line 130
    [4.22999][4.22999:23059]()
    let mut w = repo_alice.write_file("file").unwrap();
    [4.22999]
    [4.295011]
    let mut w = repo_alice.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/missing_context.rs at line 186
    [4.23552][4.23552:23610]()
    let mut w = repo_bob.write_file("file").unwrap();
    [4.23552]
    [4.296568]
    let mut w = repo_bob.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/missing_context.rs at line 240
    [4.298481][4.24364:24430]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.298481]
    [4.24430]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/missing_context.rs at line 250
    [4.24524][4.24524:24552]()
    .write_file("file")
    [4.24524]
    [4.24552]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/filesystem.rs at line 16
    [4.300768][4.25133:25165]()
    repo.write_file("dir/file")
    [4.300768]
    [4.25165]
    repo.write_file("dir/file", Inode::ROOT)
  • replacement in libpijul/src/tests/filesystem.rs at line 52
    [4.301962][4.25810:25842]()
    repo.write_file("dir/file")
    [4.301962]
    [4.25842]
    repo.write_file("dir/file", Inode::ROOT)
  • replacement in libpijul/src/tests/filesystem.rs at line 122
    [4.304454][4.27097:27129]()
    repo.write_file("dir/file")
    [4.304454]
    [4.27129]
    repo.write_file("dir/file", Inode::ROOT)
  • edit in libpijul/src/tests/file_conflicts.rs at line 130
    [4.309360]
    [4.29185]
    {
    let txn_ = txn_bob.write();
    let mut f = std::fs::File::create("/tmp/conflict0")?;
    crate::pristine::debug(&*txn_, &txn_.graph(&*channel_bob.read()), &mut f)?;
    }
    info!("recording resolution");
  • edit in libpijul/src/tests/file_conflicts.rs at line 149
    [4.309685]
    [4.309685]
    let txn_ = txn_bob.write();
    let mut f = std::fs::File::create("/tmp/conflict1")?;
    crate::pristine::debug(&*txn_, &txn_.graph(&*channel_bob.read()), &mut f)?;
  • replacement in libpijul/src/tests/file_conflicts.rs at line 511
    [4.34872][4.34872:34906]()
    .write_file("a/b/c/file")
    [4.34872]
    [4.34906]
    .write_file("a/b/c/file", Inode::ROOT)
  • replacement in libpijul/src/tests/file_conflicts.rs at line 631
    [4.36315][4.36315:36350]()
    .write_file("a/b/c/file2")
    [4.36315]
    [4.36350]
    .write_file("a/b/c/file2", Inode::ROOT)
  • replacement in libpijul/src/tests/file_conflicts.rs at line 756
    [4.37790][4.37790:37824]()
    .write_file("a/b/d/file")
    [4.37790]
    [4.37824]
    .write_file("a/b/d/file", Inode::ROOT)
  • replacement in libpijul/src/tests/file_conflicts.rs at line 891
    [4.39974][4.39974:40008]()
    .write_file("a/b/c/file")
    [4.39974]
    [4.40008]
    .write_file("a/b/c/file", Inode::ROOT)
  • replacement in libpijul/src/tests/file_conflicts.rs at line 898
    [4.40162][4.40162:40196]()
    .write_file("a/b/c/file")
    [4.40162]
    [4.40196]
    .write_file("a/b/c/file", Inode::ROOT)
  • replacement in libpijul/src/tests/file_conflicts.rs at line 941
    [4.41035][4.41035:41101]()
    let mut w = repo_alice.write_file("a/b/c/file").unwrap();
    [4.41035]
    [4.336218]
    let mut w = repo_alice.write_file("a/b/c/file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/file_conflicts.rs at line 1387
    [4.47265][4.47265:47293]()
    .write_file("file")
    [4.47265]
    [4.47293]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/file_conflicts.rs at line 1394
    [4.351662][4.47425:47489]()
    repo_bob.write_file("file").unwrap().write_all(b"a\nd\n")?;
    [4.351662]
    [4.47489]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(b"a\nd\n")?;
  • replacement in libpijul/src/tests/file_conflicts.rs at line 1414
    [4.352588][4.47825:47916]()
    let (alive, reachable) = check_alive(&*txn_alice.read(), &channel_alice.read().graph);
    [4.352588]
    [4.352656]
    let (alive, reachable) = check_alive(&*txn_alice.read(), &channel_alice.read());
  • edit in libpijul/src/tests/file_conflicts.rs at line 1573
    [4.357337]
    [4.357337]
    }
    Ok(())
    }
    #[test]
    fn move_back_noundel_test() -> Result<(), anyhow::Error> {
    env_logger::try_init().unwrap_or(());
    let repo_alice = working_copy::memory::Memory::new();
    let changes = changestore::memory::Memory::new();
    let env_alice = pristine::sanakirja::Pristine::new_anon()?;
    let txn_alice = env_alice.arc_txn_begin().unwrap();
    let channel_alice = txn_alice.write().open_or_create_channel("main")?;
    repo_alice.add_file("a", b"a\n".to_vec());
    txn_alice.write().add_file("a", 0)?;
    let _init = record_all(&repo_alice, &changes, &txn_alice, &channel_alice, "")?;
    repo_alice.rename("a", "b").unwrap_or(());
    txn_alice.write().move_file("a", "b", 0)?;
    let _mv = record_all(&repo_alice, &changes, &txn_alice, &channel_alice, "")?;
    repo_alice.rename("b", "a").unwrap_or(());
    txn_alice.write().move_file("b", "a", 0)?;
    info!("MOVE BACK");
    {
    let txn_ = txn_alice.write();
    let mut f = std::fs::File::create("/tmp/moveback")?;
    crate::pristine::debug(&*txn_, &txn_.graph(&*channel_alice.read()), &mut f)?;
  • edit in libpijul/src/tests/file_conflicts.rs at line 1604
    [4.357343]
    [4.357343]
    let back = record_all(&repo_alice, &changes, &txn_alice, &channel_alice, "")?;
  • edit in libpijul/src/tests/file_conflicts.rs at line 1606
    [4.357344]
    [4.357344]
    let back = changes.get_change(&back).unwrap();
    match back.hashed.changes[0] {
    crate::change::Hunk::FileMove { .. } => {}
    ref x => {
    panic!("{:#?}", x);
    }
    }
  • replacement in libpijul/src/tests/diff.rs at line 35
    [4.1330][4.1330:1362]()
    repo.write_file("file")
    [4.1330]
    [4.1362]
    repo.write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 52
    [4.358774][4.50369:50435]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.358774]
    [4.50435]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 61
    [4.50525][4.50525:50553]()
    .write_file("file")
    [4.50525]
    [4.50553]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 117
    [4.50919][4.50919:50979]()
    let mut w = repo_alice.write_file("file").unwrap();
    [4.50919]
    [4.360803]
    let mut w = repo_alice.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 262
    [4.364464][4.52629:52695]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.364464]
    [4.52695]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 271
    [4.52787][4.52787:52815]()
    .write_file("file")
    [4.52787]
    [4.52815]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 279
    [4.52982][4.52982:53010]()
    .write_file("file")
    [4.52982]
    [4.53010]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 334
    [4.53376][4.53376:53436]()
    let mut w = repo_alice.write_file("file").unwrap();
    [4.53376]
    [4.366835]
    let mut w = repo_alice.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 413
    [4.54133][4.54133:54191]()
    let mut w = repo_bob.write_file("file").unwrap();
    [4.54133]
    [4.368646]
    let mut w = repo_bob.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 500
    [4.371225][4.55299:55365]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.371225]
    [4.55365]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 509
    [4.55455][4.55455:55483]()
    .write_file("file")
    [4.55455]
    [4.55483]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 535
    [4.55788][4.55788:55848]()
    let mut w = repo_alice.write_file("file").unwrap();
    [4.55788]
    [4.372468]
    let mut w = repo_alice.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 624
    [4.375120][4.56707:56769]()
    repo.write_file("file").unwrap().write_all(bob).unwrap();
    [4.375120]
    [4.56769]
    repo.write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 631
    [4.375509][4.56840:56904]()
    repo.write_file("file").unwrap().write_all(alice).unwrap();
    [4.375509]
    [4.56904]
    repo.write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(alice)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 656
    [4.57134][4.57134:57188]()
    let mut w = repo.write_file("file").unwrap();
    [4.57134]
    [4.376240]
    let mut w = repo.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 758
    [4.379318][4.58063:58125]()
    repo.write_file("file").unwrap().write_all(bob).unwrap();
    [4.379318]
    [4.58125]
    repo.write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 765
    [4.379707][4.58196:58260]()
    repo.write_file("file").unwrap().write_all(alice).unwrap();
    [4.379707]
    [4.58260]
    repo.write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(alice)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 790
    [4.58490][4.58490:58544]()
    let mut w = repo.write_file("file").unwrap();
    [4.58490]
    [4.380438]
    let mut w = repo.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 887
    [4.383330][4.59374:59444]()
    repo.write_file("file").unwrap().write_all(bob).unwrap();
    [4.383330]
    [4.59444]
    repo.write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 900
    [4.383758][4.59518:59590]()
    repo.write_file("file").unwrap().write_all(alice).unwrap();
    [4.383758]
    [4.59590]
    repo.write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(alice)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 929
    [4.59824][4.59824:59878]()
    let mut w = repo.write_file("file").unwrap();
    [4.59824]
    [4.384560]
    let mut w = repo.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1033
    [4.387750][4.60735:60801]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.387750]
    [4.60801]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1042
    [4.60891][4.60891:60919]()
    .write_file("file")
    [4.60891]
    [4.60919]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 1088
    [4.61224][4.61224:61284]()
    let mut w = repo_alice.write_file("file").unwrap();
    [4.61224]
    [4.389624]
    let mut w = repo_alice.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1174
    [4.392201][4.62128:62194]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.392201]
    [4.62194]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1183
    [4.62284][4.62284:62312]()
    .write_file("file")
    [4.62284]
    [4.62312]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 1237
    [4.394057][4.62730:62791]()
    repo_alice.write_file("file").unwrap().write_all(b"x")?;
    [4.394057]
    [4.394146]
    repo_alice
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(b"x")?;
  • replacement in libpijul/src/tests/conflict.rs at line 1425
    [4.399819][4.63646:63712]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.399819]
    [4.63712]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1434
    [4.63802][4.63802:63830]()
    .write_file("file")
    [4.63802]
    [4.63830]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 1460
    [4.64135][4.64135:64195]()
    let mut w = repo_alice.write_file("file").unwrap();
    [4.64135]
    [4.400982]
    let mut w = repo_alice.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1551
    [4.403679][4.65171:65237]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.403679]
    [4.65237]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1561
    [4.65327][4.65327:65355]()
    .write_file("file")
    [4.65327]
    [4.65355]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 1586
    [4.65660][4.65660:65720]()
    let mut w = repo_alice.write_file("file").unwrap();
    [4.65660]
    [4.404878]
    let mut w = repo_alice.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1611
    [4.65983][4.65983:66041]()
    let mut w = repo_bob.write_file("file").unwrap();
    [4.65983]
    [4.405605]
    let mut w = repo_bob.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1684
    [4.407969][4.66836:66910]()
    repo_alice.write_file("file").unwrap().write_all(c).unwrap();
    [4.407969]
    [4.66910]
    repo_alice
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(c)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1710
    [4.408873][4.67246:67310]()
    repo_bob.write_file("file").unwrap().write_all(b"x\nc\n")?;
    [4.408873]
    [4.408968]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(b"x\nc\n")?;
  • replacement in libpijul/src/tests/conflict.rs at line 1744
    [4.409911][4.67562:67626]()
    repo_bob.write_file("file").unwrap().write_all(b"x\nc\n")?;
    [4.409911]
    [4.67626]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(b"x\nc\n")?;
  • replacement in libpijul/src/tests/conflict.rs at line 1823
    [4.412374][4.68520:68594]()
    repo_alice.write_file("file").unwrap().write_all(c).unwrap();
    [4.412374]
    [4.68594]
    repo_alice
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(c)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1850
    [4.68943][4.68943:68971]()
    .write_file("file")
    [4.68943]
    [4.68971]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 1879
    [4.69317][4.69317:69345]()
    .write_file("file")
    [4.69317]
    [4.69345]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 1978
    [4.70712][4.70712:70740]()
    .write_file("file")
    [4.70712]
    [4.70740]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 1985
    [4.417345][4.70884:70950]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.417345]
    [4.70950]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 1994
    [4.71042][4.71042:71070]()
    .write_file("file")
    [4.71042]
    [4.71070]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 2019
    [4.71376][4.71376:71404]()
    .write_file("file")
    [4.71376]
    [4.71404]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 2113
    [4.72836][4.72836:72864]()
    .write_file("file")
    [4.72836]
    [4.72864]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 2126
    [4.422082][4.73016:73082]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.422082]
    [4.73082]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 2135
    [4.73172][4.73172:73200]()
    .write_file("file")
    [4.73172]
    [4.73200]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 2161
    [4.73505][4.73505:73565]()
    let mut w = repo_alice.write_file("file").unwrap();
    [4.73505]
    [4.423350]
    let mut w = repo_alice.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 2189
    [4.73829][4.73829:73887]()
    let mut w = repo_bob.write_file("file").unwrap();
    [4.73829]
    [4.424259]
    let mut w = repo_bob.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 2223
    [4.74237][4.74237:74295]()
    let mut w = repo_bob.write_file("file").unwrap();
    [4.74237]
    [4.425481]
    let mut w = repo_bob.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 2324
    [4.428215][4.75077:75143]()
    repo_bob.write_file("file").unwrap().write_all(bob).unwrap();
    [4.428215]
    [4.75143]
    repo_bob
    .write_file("file", Inode::ROOT)
    .unwrap()
    .write_all(bob)
    .unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 2331
    [4.75231][4.75231:75259]()
    .write_file("file")
    [4.75231]
    [4.75259]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 2337
    [4.75409][4.75409:75437]()
    .write_file("file")
    [4.75409]
    [4.75437]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 2345
    [4.75590][4.75590:75618]()
    .write_file("file")
    [4.75590]
    [4.75618]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 2351
    [4.75777][4.75777:75805]()
    .write_file("file")
    [4.75777]
    [4.75805]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 2357
    [4.75965][4.75965:75993]()
    .write_file("file")
    [4.75965]
    [4.75993]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 2385
    [4.76443][4.76443:76503]()
    let mut w = repo_alice.write_file("file").unwrap();
    [4.76443]
    [4.430272]
    let mut w = repo_alice.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 2416
    [4.76835][4.76835:76893]()
    let mut w = repo_bob.write_file("file").unwrap();
    [4.76835]
    [4.431346]
    let mut w = repo_bob.write_file("file", Inode::ROOT).unwrap();
  • replacement in libpijul/src/tests/conflict.rs at line 2449
    [4.77743][4.77743:77771]()
    .write_file("file")
    [4.77743]
    [4.77771]
    .write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/conflict.rs at line 2475
    [4.78172][4.78172:78257]()
    let (alive_, reachable_) = check_alive(&*txn.read(), &channel_bob.read().graph);
    [4.78172]
    [4.433556]
    let (alive_, reachable_) = check_alive(&*txn.read(), &channel_bob.read());
  • replacement in libpijul/src/tests/conflict.rs at line 2494
    [4.433926][4.78338:78421]()
    let (alive, reachable) = check_alive(&*txn.read(), &channel_bob.read().graph);
    [4.433926]
    [4.434046]
    let (alive, reachable) = check_alive(&*txn.read(), &channel_bob.read());
  • replacement in libpijul/src/tests/conflict.rs at line 2510
    [4.78604][4.78604:78691]()
    let (alive, reachable) = check_alive(&*txn.read(), &channel_charlie.read().graph);
    [4.78604]
    [4.434801]
    let (alive, reachable) = check_alive(&*txn.read(), &channel_charlie.read());
  • replacement in libpijul/src/tests/conflict.rs at line 2529
    [4.435224][4.78780:78867]()
    let (alive, reachable) = check_alive(&*txn.read(), &channel_charlie.read().graph);
    [4.435224]
    [4.435288]
    let (alive, reachable) = check_alive(&*txn.read(), &channel_charlie.read());
  • replacement in libpijul/src/tests/conflict.rs at line 2600
    [4.437747][4.80029:80120]()
    let (alive, reachable) = check_alive(&*txn_alice.read(), &channel_alice.read().graph);
    [4.437747]
    [4.437815]
    let (alive, reachable) = check_alive(&*txn_alice.read(), &channel_alice.read());
  • replacement in libpijul/src/tests/clone.rs at line 24
    [4.81569][4.81569:81601]()
    repo.write_file("file")
    [4.81569]
    [4.81601]
    repo.write_file("file", Inode::ROOT)
  • replacement in libpijul/src/tests/clone.rs at line 90
    [4.82573][4.82573:82709]()
    repo.write_file("a/b/c/d").unwrap().write_all(b"edits\n")?;
    repo.write_file("e/f/g/h").unwrap().write_all(b"edits\n")?;
    [4.82573]
    [4.82709]
    repo.write_file("a/b/c/d", Inode::ROOT)
    .unwrap()
    .write_all(b"edits\n")?;
    repo.write_file("e/f/g/h", Inode::ROOT)
    .unwrap()
    .write_all(b"edits\n")?;
  • replacement in libpijul/src/tests/change.rs at line 115
    [4.450786][4.84303:84364]()
    write!(repo.write_file("file")?, "a\nx\nc\ne\ny\nf\n")?;
    [4.450786]
    [4.84364]
    write!(repo.write_file("file", Inode::ROOT)?, "a\nx\nc\ne\ny\nf\n")?;
  • replacement in libpijul/src/tests/add_file.rs at line 38
    [4.30223][4.30223:30324]()
    crate::fs::iter_graph_children(&txn, &changes, &channel.graph, Position::ROOT).unwrap();
    [4.30223]
    [4.43517]
    crate::fs::iter_graph_children(&txn, &changes, &channel, Position::ROOT).unwrap();
  • replacement in libpijul/src/tests/add_file.rs at line 43
    [4.455516][4.30386:30485]()
    let mut it = crate::fs::iter_graph_children(&txn, &changes, &channel.graph, key).unwrap();
    [4.455516]
    [4.43582]
    let mut it = crate::fs::iter_graph_children(&txn, &changes, &channel, key).unwrap();
  • replacement in libpijul/src/tests/add_file.rs at line 45
    [4.43645][4.35918:35989]()
    crate::fs::iter_paths(&txn, &channel.graph, file_key, |path| {
    [4.43645]
    [4.455717]
    crate::fs::iter_paths(&txn, &channel, file_key, |path| {
  • replacement in libpijul/src/tests/add_file.rs at line 55
    [4.455960][4.30658:30752]()
    let mut it = crate::fs::iter_basenames(&txn, &changes, &channel.graph, key).unwrap();
    [4.455960]
    [4.568]
    let mut it = crate::fs::iter_basenames(&txn, &changes, &channel, key).unwrap();
  • replacement in libpijul/src/tests/add_file.rs at line 206
    [4.459870][4.39049:39081]()
    repo.write_file("dir/file")
    [4.88016]
    [4.39081]
    repo.write_file("dir/file", Inode::ROOT)
  • replacement in libpijul/src/tests/add_file.rs at line 234
    [4.460858][4.25721:25786]()
    repo.write_file("dir/file")?.write_all(b"a\nb\nc\ne\nf\n")?;
    [4.460858]
    [4.88394]
    repo.write_file("dir/file", Inode::ROOT)?
    .write_all(b"a\nb\nc\ne\nf\n")?;
  • replacement in libpijul/src/tests/add_file.rs at line 237
    [4.88462][4.25922:25984](),[4.25922][4.25922:25984]()
    repo.write_file("dir/file")?.write_all(b"a\nb\nc\nf\n")?;
    [4.88462]
    [4.88463]
    repo.write_file("dir/file", Inode::ROOT)?
    .write_all(b"a\nb\nc\nf\n")?;
  • replacement in libpijul/src/tests/add_file.rs at line 240
    [4.88531][4.26262:26321](),[4.26262][4.26262:26321]()
    repo.write_file("dir/file")?.write_all(b"a\nb\nc\n")?;
    [4.88531]
    [4.88532]
    repo.write_file("dir/file", Inode::ROOT)?
    .write_all(b"a\nb\nc\n")?;
  • replacement in libpijul/src/tests/add_file.rs at line 718
    [4.476642][4.94356:94441]()
    let (alive, reachable) = check_alive(&*txn_alice.read(), &channel.read().graph);
    [4.476642]
    [4.476704]
    let (alive, reachable) = check_alive(&*txn_alice.read(), &channel.read());