Running t6300 in an environment without gpg(1), we'll see those warnings: fatal: Not a valid object name refs/tags/signed-empty fatal: Not a valid object name refs/tags/signed-short fatal: Not a valid object name refs/tags/signed-long Because, those objects will be created only when GPG is satistified. This series try to clean those errors. Change from v1: * Make 1/2 as near pure-code-move; and * Use 2/2 as a code change to preserve status code for cat-file * Mention reasons that 1/2 couldn't be pure-code-move. Đoàn Trần Công Danh (2): t6300: don't run cat-file on non-existent object t6300: check for cat-file exit status code t/t6300-for-each-ref.sh | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) Range-diff against v1: 1: 6d36f3a8df ! 1: b813d6f2ad t6300: don't run cat-file on non-existent object @@ Commit message * skip their execution if prerequisites aren't satistified. * check their exit status code + The expected value for objects with type: commit needs to be + computed outside the test because we can't relies on "$3" there. + Furthermore, to prevent the accidental usage of that computed + expected value, BUG out on unknown object's type. + Signed-off-by: Đoàn Trần Công Danh <congdanhqx@xxxxxxxxx> ## t/t6300-for-each-ref.sh ## @@ t/t6300-for-each-ref.sh: test_atom() { - esac - # Leave $expect unquoted to lose possible leading whitespaces - echo $expect >expected ++ # for commit leg, $3 is changed there + expect=$(printf '%s' "$3" | wc -c) test_expect_${4:-success} $PREREQ "basic atom: $1 contents:size" ' + type=$(git cat-file -t "$ref") && + case $type in + tag) + # We cannot use $3 as it expects sanitize_pgp to run -+ git cat-file tag $ref >out && -+ expect=$(<out tail -n +6 | wc -c) ;; ++ expect=$(git cat-file tag $ref | tail -n +6 | wc -c) ;; + tree | blob) + expect="" ;; + commit) -: ---------- > 2: 68ee769121 t6300: check for cat-file exit status code -- 2.33.0.rc1