Signed-off-by: Chris Packham <judge.packham@xxxxxxxxx> --- t/t1430-alternate-cmd.sh | 154 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 154 insertions(+), 0 deletions(-) create mode 100644 t/t1430-alternate-cmd.sh diff --git a/t/t1430-alternate-cmd.sh b/t/t1430-alternate-cmd.sh new file mode 100644 index 0000000..ba27633 --- /dev/null +++ b/t/t1430-alternate-cmd.sh @@ -0,0 +1,154 @@ +#!/bin/sh +# +# Copyright (c) Chris Packham +# + +test_description='Test of git alternate command' + +. ./test-lib.sh + +test_expect_success 'setup for rest of the test' ' + + mkdir -p base && + ( + cd base && + git init && + echo test > a.txt && + echo test > b.txt && + echo test > c.txt && + git add *.txt && + git commit -a -m "Initial Commit" + ) + git clone base A && + git clone A B && + git clone A C && + git clone A D + testbase=$(pwd) +' + +test_expect_success 'can add alternate after clone' ' + + ( + cd B && + git alternate -a ../base/.git/objects && + + echo "$testbase/base/.git/objects" > expect && + cp .git/objects/info/alternates actual && + + test_cmp expect actual + + ) +' + +test_expect_success 'add same alternate fails (absolute path)' ' + + ( + cd B && + test_must_fail git alternate -a $(pwd)/base/.git/objects + ) +' + +test_expect_success 'add same alternate fails (relative path)' ' + + ( + cd B && + test_must_fail git alternate -a ../base/.git/objects + ) +' + +test_expect_success 'can add multiple alternates' ' + + ( + cd C && + git alternate -a ../base/.git/objects && + git alternate -a ../B/.git/objects && + + { + echo "$testbase/base/.git/objects" + echo "$testbase/B/.git/objects" + } > expect && + + cp .git/objects/info/alternates actual && + + test_cmp expect actual + ) +' + +test_expect_success 'can add recursive alternate' ' + + ( + cd D && + git alternate -a ../C/.git/objects + + echo "$testbase/C/.git/objects" > expect && + cp .git/objects/info/alternates actual && + + test_cmp expect actual + ) +' + +test_expect_success 'simple display' ' + + ( + cd B && + git alternate >actual && + { + echo "Object store $testbase/base/.git/objects" + echo " referenced via $testbase/B/.git" + } >expect && + + test_cmp expect actual + ) +' + +test_expect_success 'recursive display' ' + + ( + cd D && + git alternate -r >actual && + + { + echo "Object store $testbase/C/.git/objects" + echo " referenced via $testbase/D/.git" + echo "Object store $testbase/base/.git/objects" + echo " referenced via $testbase/C/.git" + echo "Object store $testbase/B/.git/objects" + echo " referenced via $testbase/C/.git" + echo "Object store $testbase/base/.git/objects" + echo " referenced via $testbase/B/.git" + } >expect && + + test_cmp expect actual + ) +' + +test_expect_success 'cannot delete unless --forced' ' + ( + cd C && + test_must_fail git alternate -d "$testbase/B/.git/objects" + ) +' + +test_expect_success 'can delete one alternate' ' + ( + cd C && + git alternate -f -d "$testbase/B/.git/objects" && + + echo "$testbase/base/.git/objects" > expect && + cp .git/objects/info/alternates actual && + + test_cmp expect actual + ) +' + +test_expect_success 'last alternate deleted removes file' ' + ( + cd C && + git alternate -f -d "$testbase/base/.git/objects" && + + test ! -e .git/objects/info/alternates + + ) +' + +test_done -- 1.7.0.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html