History

[tree-diff] another green test

Sebastian Thiel committed 5 years ago

Commit 2627df01 parent 05e8e4a3 files · +38 −5Browse files

Showing the changes to git-diff (3 of 3 files). Show all

Unified · Split

3 files
  1. git-diff/src/visit/changes.rs +16 −5
  2. git-diff/tests/fixtures/make_diff_repo.sh +5 −0
  3. git-diff/tests/visit/mod.rs +17 −0
git-diff/src/visit/changes.rs+16−5
@@ -130,9 +130,11 @@ impl<'a> visit::Changes<'a> { · 129 unmodified lines
130 Greater => {130 Greater => {
131 add_entry_schedule_recursion(rhs, &mut state.trees, delegate)?;131 add_entry_schedule_recursion(rhs, &mut state.trees, delegate)?;
132 'inner_greater: loop {132 'inner_greater: loop {
133 match rhs_entries.next().transpose()? {133 match rhs_entries.peek() {
134 Some(rhs) => {134 Some(Ok(rhs)) => match lhs.filename.cmp(rhs.filename) {
135 if lhs.filename == rhs.filename {135 Equal => {
136 let rhs =
137 rhs_entries.next().transpose()?.expect("the peeked item tobe present");
136 handle_lhs_and_rhs_with_equal_filenames(138 handle_lhs_and_rhs_with_equal_filenames(
137 lhs,139 lhs,
138 rhs,140 rhs,
@@ -140,11 +142,20 @@ impl<'a> visit::Changes<'a> { · 1 unmodified line
140 delegate,142 delegate,
141 )?;143 )?;
142 break 'inner_greater;144 break 'inner_greater;
143 } else {145 }
146 Greater => {
147 let rhs =
148 rhs_entries.next().transpose()?.expect("the peeked item tobe present");
144 delegate.pop_path_component();149 delegate.pop_path_component();
145 add_entry_schedule_recursion(rhs, &mut state.trees, delegate)?;150 add_entry_schedule_recursion(rhs, &mut state.trees, delegate)?;
146 }151 }
147 }152 Less => {
153 delegate.pop_path_component();
154 delete_entry_schedule_recursion(lhs, &mut state.trees, delegate)?;
155 break 'inner_greater;
156 }
157 },
158 Some(Err(err)) => return Err(Error::EntriesDecode(err.to_owned())),
148 None => {159 None => {
149 todo!("GREATER: catchup less: break inner depleted - it never caught up");160 todo!("GREATER: catchup less: break inner depleted - it never caught up");
150 // break 'inner;161 // break 'inner;
git-diff/tests/fixtures/make_diff_repo.sh+5−0
@@ -79,3 +79,8 @@ touch g/aa · 78 unmodified lines
79git rm g/a79git rm g/a
80git add g/aa80git add g/aa
81git commit -qam 'rm g/a, add g/aa'81git commit -qam 'rm g/a, add g/aa'
82
83git rm ff
84touch f
85git add f
86git commit -qam 'rm /ff, add /f'
git-diff/tests/visit/mod.rs+17−0
@@ -340,6 +340,23 @@ mod changes { · 339 unmodified lines
340 ":100644 000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 D g/a340 ":100644 000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 D g/a
341 :000000 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 A g/aa"341 :000000 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 A g/aa"
342 );342 );
343 assert_eq!(
344 diff_with_previous_commit_from(&db, &all_commits[18])?,
345 vec![
346 recorder::Change::Addition {
347 entry_mode: EntryMode::Blob,
348 oid: hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"),
349 path: "f".into()
350 },
351 recorder::Change::Deletion {
352 entry_mode: EntryMode::Blob,
353 oid: hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"),
354 path: "ff".into()
355 },
356 ],
357 ":100644 000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 D f
358 :000000 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 A ff"
359 );
343 Ok(())360 Ok(())
344 }361 }
345 }362 }