diff --git a/gix/src/status/iter/mod.rs b/gix/src/status/iter/mod.rs index f4d58b2a7af..971297f6ee7 100644 --- a/gix/src/status/iter/mod.rs +++ b/gix/src/status/iter/mod.rs @@ -53,7 +53,7 @@ where crate::head::peel::to_object::Error::Unborn { .. }, ), ), - )) => None, + )) => Some(gix_hash::ObjectId::empty_tree(self.repo.object_hash())), Err(err) => return Err(err.into()), }, Some(Some(tree_id)) => Some(tree_id), diff --git a/gix/tests/fixtures/generated-archives/make_status_repos.tar b/gix/tests/fixtures/generated-archives/make_status_repos.tar index e8789ea33c0..7cdb86119dd 100644 Binary files a/gix/tests/fixtures/generated-archives/make_status_repos.tar and b/gix/tests/fixtures/generated-archives/make_status_repos.tar differ diff --git a/gix/tests/fixtures/make_status_repos.sh b/gix/tests/fixtures/make_status_repos.sh index e5828cde625..d006b453de4 100755 --- a/gix/tests/fixtures/make_status_repos.sh +++ b/gix/tests/fixtures/make_status_repos.sh @@ -34,4 +34,10 @@ git init racy-git git init untracked-unborn (cd untracked-unborn touch untracked -) \ No newline at end of file +) + +git init untracked-added +(cd untracked-added + echo content >added + git add added +) diff --git a/gix/tests/gix/status.rs b/gix/tests/gix/status.rs index be32c667382..5b9805abd97 100644 --- a/gix/tests/gix/status.rs +++ b/gix/tests/gix/status.rs @@ -113,6 +113,16 @@ mod into_iter { Ok(()) } + #[test] + fn untracked_added() -> crate::Result { + let repo = repo("untracked-added")?; + let mut status = repo.status(gix::progress::Discard)?.into_iter(None)?; + let mut items: Vec<_> = status.by_ref().filter_map(Result::ok).collect(); + items.sort_by(|a, b| a.location().cmp(b.location())); + insta::assert_debug_snapshot!(items, @r#""#); + Ok(()) + } + #[test] fn error_during_tree_traversal_causes_failure() -> crate::Result { let repo = repo("untracked-only")?;