зеркало из https://github.com/microsoft/git.git
t6300: don't run cat-file on non-existent object
In t6300, some tests are guarded behind some prerequisites. Thus, objects created by those tests ain't available if those prerequisites are unsatistified. Attempting to run "cat-file" on those objects will run into failure. In fact, 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 Let's put those commands into the real tests, in order to: * 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 rely 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@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
225bc32a98
Коммит
597fa8cb43
|
@ -59,18 +59,23 @@ test_atom() {
|
|||
# Automatically test "contents:size" atom after testing "contents"
|
||||
if test "$2" = "contents"
|
||||
then
|
||||
case $(git cat-file -t "$ref") in
|
||||
# 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
|
||||
expect=$(git cat-file tag $ref | tail -n +6 | wc -c) ;;
|
||||
tree | blob)
|
||||
expect='' ;;
|
||||
expect="" ;;
|
||||
commit)
|
||||
expect=$(printf '%s' "$3" | wc -c) ;;
|
||||
esac
|
||||
: "use the calculated expect" ;;
|
||||
*)
|
||||
BUG "unknown object type" ;;
|
||||
esac &&
|
||||
# Leave $expect unquoted to lose possible leading whitespaces
|
||||
echo $expect >expected
|
||||
test_expect_${4:-success} $PREREQ "basic atom: $1 contents:size" '
|
||||
echo $expect >expected &&
|
||||
git for-each-ref --format="%(contents:size)" "$ref" >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
|
Загрузка…
Ссылка в новой задаче