Files
git/t/t5305-include-tag.sh
Jeff King 948a7fd242 t5305: use "git -C"
This test unpacks objects into a separate repository, and
accesses it by setting GIT_DIR in a subshell. We can do the
same thing these days by using "git init <repo>" and "git
-C". In most cases this is shorter, though when there are
multiple commands, we may end up repeating the "-C".

However, this repetition can actually be a good thing. This
patch also fixes a bug introduced by 512477b (tests: use
"env" to run commands with temporary env-var settings,
2014-03-18). That commit essentially converted:

   (GIT_DIR=...; export GIT_DIR
    cmd1 &&
    cmd2)

into:

   (GIT_DIR=... cmd1 &&
    cmd2)

which obviously loses the GIT_DIR setting for cmd2 (we never
noticed the bug because it simply runs "cmd2" in the parent
repo, which means we were simply failing to test anything
interesting). By using "git -C" rather than a subshell, it
becomes quite obvious where each command is supposed to be
running.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-09-07 11:45:28 -07:00

67 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
test_description='git pack-object --include-tag'
. ./test-lib.sh
TRASH=$(pwd)
test_expect_success setup '
echo c >d &&
git update-index --add d &&
tree=$(git write-tree) &&
commit=$(git commit-tree $tree </dev/null) &&
echo "object $commit" >sig &&
echo "type commit" >>sig &&
echo "tag mytag" >>sig &&
echo "tagger $(git var GIT_COMMITTER_IDENT)" >>sig &&
echo >>sig &&
echo "our test tag" >>sig &&
tag=$(git mktag <sig) &&
rm d sig &&
git update-ref refs/tags/mytag $tag && {
echo $tree &&
echo $commit &&
git ls-tree $tree | sed -e "s/.* \\([0-9a-f]*\\) .*/\\1/"
} >obj-list
'
test_expect_success 'pack without --include-tag' '
packname_1=$(git pack-objects \
--window=0 \
test-1 <obj-list)
'
test_expect_success 'unpack objects' '
rm -rf clone.git &&
git init clone.git &&
git -C clone.git unpack-objects <test-1-${packname_1}.pack
'
test_expect_success 'check unpacked result (have commit, no tag)' '
git rev-list --objects $commit >list.expect &&
test_must_fail git -C clone.git cat-file -e $tag &&
git -C clone.git rev-list --objects $commit >list.actual &&
test_cmp list.expect list.actual
'
test_expect_success 'pack with --include-tag' '
packname_1=$(git pack-objects \
--window=0 \
--include-tag \
test-2 <obj-list)
'
test_expect_success 'unpack objects' '
rm -rf clone.git &&
git init clone.git &&
git -C clone.git unpack-objects <test-2-${packname_1}.pack
'
test_expect_success 'check unpacked result (have commit, have tag)' '
git rev-list --objects mytag >list.expect &&
git -C clone.git rev-list --objects $tag >list.actual &&
test_cmp list.expect list.actual
'
test_done