[PATCH v2 0/2] commit: fix duplication regression in permission error output
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Oct 12, 2021, 14:30 UTC
- Message-ID
- <cover-v2-0.2-00000000000-20211012T142950Z-avarab@gmail.com>
- In-Reply-To
- <patch-2.2-56b20f6024b-20211009T133354Z-avarab@gmail.com>
A v2 of a series that fixes duplicate permission output whe we write trees. Before:
$ git commit -m"add another one"
error: insufficient permission for adding an object to repository database .git/objects
error: insufficient permission for adding an object to repository database .git/objects
error: Error building treesAfter we only emit that "insufficient permission" line once.
The only change since v1 is to make 1/2 and 2/2 flip a "test_expect_failure" to a "test_expect_success".
Ævar Arnfjörð Bjarmason (2): unwritable tests: assert exact error output commit: fix duplication regression in permission error output
cache-tree.c | 5 +++-- cache.h | 1 + object-file.c | 20 ++++++++++-------- object-store.h | 10 +++++++-- t/t0004-unwritable.sh | 47 +++++++++++++++++++++++++++++++++++++++---- 5 files changed, 67 insertions(+), 16 deletions(-)
Range-diff against v1:
1: a5ef8ea47f4 ! 1: 74bc5568c88 unwritable tests: assert exact error output
@@ Commit message
of these error messages twice, let's assert what the output from "git
commit" and friends is now in the case of permission errors.
+ As noted in [1] using test_expect_failure to mark up a TODO test has
+ some unexpected edge cases, e.g. we don't want to break --run=3 by
+ skipping the "test_lazy_prereq" here. This pattern allows us to test
+ just the test_cmp (and the "cat", which shouldn't fail) with the added
+ "test_expect_failure", we'll flip that to a "test_expect_success" in
+ the next commit.
+
+ 1. https://lore.kernel.org/git/87tuhmk19c.fsf@evledraar.gmail.com/T/#u
+
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## t/t0004-unwritable.sh ##
@@ t/t0004-unwritable.sh: test_expect_success setup '
test_when_finished "chmod 775 .git/objects .git/objects/??" &&
chmod a-w .git/objects .git/objects/?? &&
- test_must_fail git write-tree
++ test_must_fail git write-tree 2>out.write-tree
++'
+
++test_lazy_prereq WRITE_TREE_OUT 'test -e "$TRASH_DIRECTORY"/out.write-tree'
++test_expect_success WRITE_TREE_OUT 'write-tree output on unwritable repository' '
+ cat >expect <<-\EOF &&
+ error: insufficient permission for adding an object to repository database .git/objects
+ fatal: git-write-tree: error building trees
+ EOF
-+ test_must_fail git write-tree 2>actual &&
-+ test_cmp expect actual
++ test_cmp expect out.write-tree
'
- test_expect_success POSIXPERM,SANITY 'commit should notice unwritable repository' '
+ test_expect_success POSIXPERM,SANITY,!SANITIZE_LEAK 'commit should notice unwritable repository' '
test_when_finished "chmod 775 .git/objects .git/objects/??" &&
chmod a-w .git/objects .git/objects/?? &&
- test_must_fail git commit -m second
++ test_must_fail git commit -m second 2>out.commit
++'
+
++test_lazy_prereq COMMIT_OUT 'test -e "$TRASH_DIRECTORY"/out.commit'
++test_expect_failure COMMIT_OUT 'commit output on unwritable repository' '
+ cat >expect <<-\EOF &&
+ error: insufficient permission for adding an object to repository database .git/objects
-+ error: insufficient permission for adding an object to repository database .git/objects
+ error: Error building trees
+ EOF
-+ test_must_fail git commit -m second 2>actual &&
-+ test_cmp expect actual
++ test_cmp expect out.commit
'
test_expect_success POSIXPERM,SANITY 'update-index should notice unwritable repository' '
@@ t/t0004-unwritable.sh: test_expect_success setup '
echo 6O >file &&
chmod a-w .git/objects .git/objects/?? &&
- test_must_fail git update-index file
++ test_must_fail git update-index file 2>out.update-index
++'
+
++test_lazy_prereq UPDATE_INDEX_OUT 'test -e "$TRASH_DIRECTORY"/out.update-index'
++test_expect_success UPDATE_INDEX_OUT 'update-index output on unwritable repository' '
+ cat >expect <<-\EOF &&
+ error: insufficient permission for adding an object to repository database .git/objects
+ error: file: failed to insert into database
+ fatal: Unable to process path file
+ EOF
-+ test_must_fail git update-index file 2>actual &&
-+ test_cmp expect actual
++ test_cmp expect out.update-index
'
test_expect_success POSIXPERM,SANITY 'add should notice unwritable repository' '
@@ t/t0004-unwritable.sh: test_expect_success setup '
echo b >file &&
chmod a-w .git/objects .git/objects/?? &&
- test_must_fail git add file
++ test_must_fail git add file 2>out.add
++'
+
++test_lazy_prereq ADD_OUT 'test -e "$TRASH_DIRECTORY"/out.add'
++test_expect_success ADD_OUT 'add output on unwritable repository' '
+ cat >expect <<-\EOF &&
+ error: insufficient permission for adding an object to repository database .git/objects
+ error: file: failed to insert into database
+ error: unable to index file '\''file'\''
+ fatal: updating files failed
+ EOF
-+ test_must_fail git add file 2>actual &&
-+ test_cmp expect actual
++ test_cmp expect out.add
'
test_done
2: 56b20f6024b ! 2: e6cd47355d5 commit: fix duplication regression in permission error output
@@ object-store.h: int hash_object_file(const struct git_hash_algo *algo, const voi
const char *type, struct object_id *oid,
## t/t0004-unwritable.sh ##
-@@ t/t0004-unwritable.sh: test_expect_success POSIXPERM,SANITY 'commit should notice unwritable repository
+@@ t/t0004-unwritable.sh: test_expect_success POSIXPERM,SANITY,!SANITIZE_LEAK 'commit should notice unwrit
+ '
+ test_lazy_prereq COMMIT_OUT 'test -e "$TRASH_DIRECTORY"/out.commit'
+-test_expect_failure COMMIT_OUT 'commit output on unwritable repository' '
++test_expect_success COMMIT_OUT 'commit output on unwritable repository' '
cat >expect <<-\EOF &&
error: insufficient permission for adding an object to repository database .git/objects
-- error: insufficient permission for adding an object to repository database .git/objects
error: Error building trees
- EOF
- test_must_fail git commit -m second 2>actual &&-- 2.33.0.1567.g7b23ce7ed9e