Diff options
| -rw-r--r-- | README.txt | 5 | |
| -rwxr-xr-x | tests/t0001-git-version.sh | 42 |
2 files changed, 23 insertions, 24 deletions
@@ -359,8 +359,9 @@ prerequisites it cannot go without in CGIT_TEST_REQUIRE, separated by spaces, and a script that finds one missing then stops with an error rather than skip the tests that need it. The names are CGIT_LUA for a cgit built with Lua, CGIT_NOLUA for build/nolua, TIDY, STRACE and STRACE_DELAY, PYTHON, XMLLINT, -UNZIP, GZIP, BZIP2, LZIP, XZ, ZSTD, SANITY for an account other than root, and -the others the tests in a script name, such as CGIT_LUA_LPEG. +UNZIP, GZIP, BZIP2, LZIP, XZ, ZSTD, SANITY for an account other than root, +SUBMODULE for a vendor/git cloned as a submodule, and the others the tests in a +script name, such as CGIT_LUA_LPEG. $ make test CGIT_TEST_REQUIRE="CGIT_LUA TIDY STRACE SANITY" diff --git a/tests/t0001-git-version.sh b/tests/t0001-git-version.sh index 76b24db..552b2c6 100755 --- a/tests/t0001-git-version.sh +++ b/tests/t0001-git-version.sh @@ -5,20 +5,22 @@ # the same version. Set CGIT_TEST_NO_GIT_VERSION to YesPlease when Git comes # from elsewhere. -if test "$CGIT_TEST_NO_GIT_VERSION" = "YesPlease" -then - exit 0 -fi - test_description='Check Git version is correct' CGIT_TEST_NO_CREATE_REPOS=YesPlease . ./setup.sh +if test "$CGIT_TEST_NO_GIT_VERSION" = "YesPlease" +then + skip_all='Skipping the Git version checks: CGIT_TEST_NO_GIT_VERSION is set' + test_done +fi + test_expect_success 'extract Git version from Makefile' ' sed -n -e "/^GIT_VERSION[[:space:]]*=/ { s/^GIT_VERSION[[:space:]]*=[[:space:]]*// p - }" "$TEST_OUTPUT_DIRECTORY/../Makefile" >makefile_version + }" "$TEST_OUTPUT_DIRECTORY/../Makefile" >makefile_version && + test -s makefile_version ' # Git's GIT-VERSION-GEN script applies "s/-/./g" to the version string on its @@ -32,22 +34,18 @@ test_expect_success 'test Git version matches Makefile' ' test_cmp git_version makefile_git_version ' -# A tree unpacked from a tarball has no submodule pin to describe, so there is -# nothing to compare against and the test says so rather than failing. -test_expect_success 'test submodule version matches Makefile' ' - if ! test -e "$TEST_OUTPUT_DIRECTORY/../vendor/git/.git" - then - echo "vendor/git/ is not a Git repository" >&2 - else - ( - cd "$TEST_OUTPUT_DIRECTORY/.." && - submodule_oid=$(git ls-files --stage -- vendor/git | - sed -e "s/^[0-9]* \\([0-9a-f]*\\) [0-9][[:space:]].*$/\\1/") && - cd vendor/git && - git describe --match "v[0-9]*" $submodule_oid - ) | sed -e "s/^v//" -e "s/-/./" >submodule_version && - test_cmp submodule_version makefile_version - fi +# A tree unpacked from a tarball has no history to describe the submodule pin +# with, so the check is skipped there rather than passed. +test_lazy_prereq SUBMODULE 'test -e "$TEST_OUTPUT_DIRECTORY/../vendor/git/.git"' + +test_expect_success SUBMODULE 'test submodule version matches Makefile' ' + git -C "$TEST_OUTPUT_DIRECTORY/.." ls-files --stage -- vendor/git >gitlink && + submodule_oid=$(sed -n "s/^160000 \\([0-9a-f]*\\) .*/\\1/p" gitlink) && + test -n "$submodule_oid" && + git -C "$TEST_OUTPUT_DIRECTORY/../vendor/git" \ + describe --match "v[0-9]*" "$submodule_oid" >submodule_tag && + sed -e "s/^v//" -e "s/-/./" submodule_tag >submodule_version && + test_cmp makefile_version submodule_version ' test_done |
