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
130130 Greater => {
131131 add_entry_schedule_recursion(rhs, &mut state.trees, delegate)?;
132132 'inner_greater: loop {
133− match rhs_entries.next().transpose()? {
134− Some(rhs) => {
135− if lhs.filename == rhs.filename {
133+ match rhs_entries.peek() {
134+ Some(Ok(rhs)) => match lhs.filename.cmp(rhs.filename) {
135+ Equal => {
136+ let rhs =
137+ rhs_entries.next().transpose()?.expect("the peeked item tobe present");
136138 handle_lhs_and_rhs_with_equal_filenames(
137139 lhs,
138140 rhs,
@@ -140,11 +142,20 @@ impl<'a> visit::Changes<'a> { · 1 unmodified line
140142 delegate,
141143 )?;
142144 break 'inner_greater;
143− } else {
145+ }
146+ Greater => {
147+ let rhs =
148+ rhs_entries.next().transpose()?.expect("the peeked item tobe present");
144149 delegate.pop_path_component();
145150 add_entry_schedule_recursion(rhs, &mut state.trees, delegate)?;
146151 }
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())),
148159 None => {
149160 todo!("GREATER: catchup less: break inner depleted - it never caught up");
150161 // break 'inner;
git-diff/tests/fixtures/make_diff_repo.sh+5−0
@@ -79,3 +79,8 @@ touch g/aa · 78 unmodified lines
7979 git rm g/a
8080 git add g/aa
8181 git commit -qam 'rm g/a, add g/aa'
82+
83+git rm ff
84+touch f
85+git add f
86+git commit -qam 'rm /ff, add /f'
git-diff/tests/visit/mod.rs+17−0
@@ -340,6 +340,23 @@ mod changes { · 339 unmodified lines
340340 ":100644 000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 D g/a
341341 :000000 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 A g/aa"
342342 );
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+ );
343360 Ok(())
344361 }
345362 }