docs: move core.excludesFile from git-add to gitignore
[gitweb.git] / t / t6120-describe.sh
index a5d901502414f25616a474152ee0f5816465bd37..2b883d8174036b7d2246fcd89f239d7ecde049d4 100755 (executable)
@@ -121,10 +121,9 @@ test_expect_success 'describe --contains defaults to HEAD without commit-ish' '
        test_cmp expect actual
 '
 
-: >err.expect
 check_describe tags/A --all A^0
 test_expect_success 'no warning was displayed for A' '
-       test_cmp err.expect err.actual
+       test_must_be_empty err.actual
 '
 
 test_expect_success 'rename tag A to Q locally' '
@@ -144,16 +143,46 @@ test_expect_success 'rename tag Q back to A' '
 test_expect_success 'pack tag refs' 'git pack-refs'
 check_describe A-* HEAD
 
+test_expect_success 'describe works from outside repo using --git-dir' '
+       git clone --bare "$TRASH_DIRECTORY" "$TRASH_DIRECTORY/bare" &&
+       git --git-dir "$TRASH_DIRECTORY/bare" describe >out &&
+       grep -E "^A-[1-9][0-9]?-g[0-9a-f]+$" out
+'
+
 check_describe "A-*[0-9a-f]" --dirty
 
+test_expect_success 'describe --dirty with --work-tree' '
+       (
+               cd "$TEST_DIRECTORY" &&
+               git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --dirty >"$TRASH_DIRECTORY/out"
+       ) &&
+       grep -E "^A-[1-9][0-9]?-g[0-9a-f]+$" out
+'
+
 test_expect_success 'set-up dirty work tree' '
        echo >>file
 '
 
 check_describe "A-*[0-9a-f]-dirty" --dirty
 
+test_expect_success 'describe --dirty with --work-tree (dirty)' '
+       (
+               cd "$TEST_DIRECTORY" &&
+               git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --dirty >"$TRASH_DIRECTORY/out"
+       ) &&
+       grep -E "^A-[1-9][0-9]?-g[0-9a-f]+-dirty$" out
+'
+
 check_describe "A-*[0-9a-f].mod" --dirty=.mod
 
+test_expect_success 'describe --dirty=.mod with --work-tree (dirty)' '
+       (
+               cd "$TEST_DIRECTORY" &&
+               git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --dirty=.mod >"$TRASH_DIRECTORY/out"
+       ) &&
+       grep -E "^A-[1-9][0-9]?-g[0-9a-f]+.mod$" out
+'
+
 test_expect_success 'describe --dirty HEAD' '
        test_must_fail git describe --dirty HEAD
 '
@@ -304,8 +333,17 @@ test_expect_success 'describe chokes on severely broken submodules' '
        mv .git/modules/sub1/ .git/modules/sub_moved &&
        test_must_fail git describe --dirty
 '
+
 test_expect_success 'describe ignoring a broken submodule' '
        git describe --broken >out &&
+       grep broken out
+'
+
+test_expect_success 'describe with --work-tree ignoring a broken submodule' '
+       (
+               cd "$TEST_DIRECTORY" &&
+               git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --broken >"$TRASH_DIRECTORY/out"
+       ) &&
        test_when_finished "mv .git/modules/sub_moved .git/modules/sub1" &&
        grep broken out
 '
@@ -378,4 +416,12 @@ check_describe tags/A --all A
 check_describe tags/c --all c
 check_describe heads/branch_A --all --match='branch_*' branch_A
 
+test_expect_success 'describe complains about tree object' '
+       test_must_fail git describe HEAD^{tree}
+'
+
+test_expect_success 'describe complains about missing object' '
+       test_must_fail git describe $ZERO_OID
+'
+
 test_done