diff options
Diffstat (limited to 'third_party/git/t/interop')
-rw-r--r-- | third_party/git/t/interop/.gitignore | 4 | ||||
-rw-r--r-- | third_party/git/t/interop/Makefile | 16 | ||||
-rw-r--r-- | third_party/git/t/interop/README | 85 | ||||
-rwxr-xr-x | third_party/git/t/interop/i0000-basic.sh | 27 | ||||
-rwxr-xr-x | third_party/git/t/interop/i5500-git-daemon.sh | 40 | ||||
-rwxr-xr-x | third_party/git/t/interop/i5700-protocol-transition.sh | 68 | ||||
-rw-r--r-- | third_party/git/t/interop/interop-lib.sh | 92 |
7 files changed, 0 insertions, 332 deletions
diff --git a/third_party/git/t/interop/.gitignore b/third_party/git/t/interop/.gitignore deleted file mode 100644 index 49c78d3dba9d..000000000000 --- a/third_party/git/t/interop/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/trash directory*/ -/test-results/ -/.prove/ -/build/ diff --git a/third_party/git/t/interop/Makefile b/third_party/git/t/interop/Makefile deleted file mode 100644 index 31a4bbc716aa..000000000000 --- a/third_party/git/t/interop/Makefile +++ /dev/null @@ -1,16 +0,0 @@ --include ../../config.mak -export GIT_TEST_OPTIONS - -SHELL_PATH ?= $(SHELL) -SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) -T = $(sort $(wildcard i[0-9][0-9][0-9][0-9]-*.sh)) - -all: $(T) - -$(T): - @echo "*** $@ ***"; '$(SHELL_PATH_SQ)' $@ $(GIT_TEST_OPTS) - -clean: - rm -rf build "trash directory".* test-results - -.PHONY: all clean $(T) diff --git a/third_party/git/t/interop/README b/third_party/git/t/interop/README deleted file mode 100644 index 72d42bd85622..000000000000 --- a/third_party/git/t/interop/README +++ /dev/null @@ -1,85 +0,0 @@ -Git version interoperability tests -================================== - -This directory has interoperability tests for git. Each script is -similar to the normal test scripts found in t/, but with the added twist -that two special versions of git, "git.a" and "git.b", are available in -the PATH. Individual tests can then check the interaction between the -two versions. - -When you add a feature that handles backwards compatibility between git -versions, it's encouraged to add a test here to make sure it behaves as -you expect. - - -Running Tests -------------- - -The easiest way to run tests is to say "make". This runs all -the tests against their default versions. - -You can run a single test like: - - $ ./i0000-basic.sh - ok 1 - bare git is forbidden - ok 2 - git.a version (v1.6.6.3) - ok 3 - git.b version (v2.11.1) - # passed all 3 test(s) - 1..3 - -Each test contains default versions to run against. You may override -these by setting `GIT_TEST_VERSION_A` and `GIT_TEST_VERSION_B` in the -environment. Note that not all combinations will give sensible outcomes -for all tests (e.g., a test checking for a specific old/new interaction -may want something "old" enough" and something "new" enough; see -individual tests for details). - -Version names should be resolvable as revisions in the current -repository. They will be exported and built as needed using the -config.mak files found at the root of your working tree. - -The exception is the special version "." which uses the currently-built -contents of your working tree. - -You can set the following variables (in the environment or in your config.mak): - - GIT_INTEROP_MAKE_OPTS - Options to pass to `make` when building a git version (e.g., - `-j8`). - -You can also pass any command-line options taken by ordinary git tests (e.g., -"-v"). - - -Naming Tests ------------- - -The interop test files are named like: - - iNNNN-short-description.sh - -where N is a decimal digit. The same conventions for choosing NNNN as -for normal tests apply. - - -Writing Tests -------------- - -An interop test script starts like a normal script, declaring a few -variables and then including interop-lib.sh (which includes test-lib.sh). -Besides test_description, you should also set the $VERSION_A and $VERSION_B -variables to give the default versions to test against. See t0000-basic.sh for -an example. - -You can then use test_expect_success as usual, with a few differences: - - 1. The special commands "git.a" and "git.b" correspond to the - two versions. - - 2. You cannot call a bare "git". This is to prevent accidents where - you meant "git.a" or "git.b". - - 3. The trash directory is _not_ a git repository by default. You - should create one with the appropriate version of git. - -At the end of the script, call test_done as usual. diff --git a/third_party/git/t/interop/i0000-basic.sh b/third_party/git/t/interop/i0000-basic.sh deleted file mode 100755 index 903e9193f8c3..000000000000 --- a/third_party/git/t/interop/i0000-basic.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -# Note that this test only works on real version numbers, -# as it depends on matching the output to "git version". -VERSION_A=v1.6.6.3 -VERSION_B=v2.11.1 - -test_description='sanity test interop library' -. ./interop-lib.sh - -test_expect_success 'bare git is forbidden' ' - test_must_fail git version -' - -test_expect_success "git.a version ($VERSION_A)" ' - echo git version ${VERSION_A#v} >expect && - git.a version >actual && - test_cmp expect actual -' - -test_expect_success "git.b version ($VERSION_B)" ' - echo git version ${VERSION_B#v} >expect && - git.b version >actual && - test_cmp expect actual -' - -test_done diff --git a/third_party/git/t/interop/i5500-git-daemon.sh b/third_party/git/t/interop/i5500-git-daemon.sh deleted file mode 100755 index 4d22e42f8422..000000000000 --- a/third_party/git/t/interop/i5500-git-daemon.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh - -VERSION_A=. -VERSION_B=v1.0.0 - -: ${LIB_GIT_DAEMON_PORT:=5500} -LIB_GIT_DAEMON_COMMAND='git.a daemon' - -test_description='clone and fetch by older client' -. ./interop-lib.sh -. "$TEST_DIRECTORY"/lib-git-daemon.sh - -start_git_daemon --export-all - -repo=$GIT_DAEMON_DOCUMENT_ROOT_PATH/repo - -test_expect_success "create repo served by $VERSION_A" ' - git.a init "$repo" && - git.a -C "$repo" commit --allow-empty -m one -' - -test_expect_success "clone with $VERSION_B" ' - git.b clone "$GIT_DAEMON_URL/repo" child && - echo one >expect && - git.a -C child log -1 --format=%s >actual && - test_cmp expect actual -' - -test_expect_success "fetch with $VERSION_B" ' - git.a -C "$repo" commit --allow-empty -m two && - ( - cd child && - git.b fetch - ) && - echo two >expect && - git.a -C child log -1 --format=%s FETCH_HEAD >actual && - test_cmp expect actual -' - -test_done diff --git a/third_party/git/t/interop/i5700-protocol-transition.sh b/third_party/git/t/interop/i5700-protocol-transition.sh deleted file mode 100755 index 97e8e580efeb..000000000000 --- a/third_party/git/t/interop/i5700-protocol-transition.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh - -VERSION_A=. -VERSION_B=v2.0.0 - -: ${LIB_GIT_DAEMON_PORT:=5700} -LIB_GIT_DAEMON_COMMAND='git.b daemon' - -test_description='clone and fetch by client who is trying to use a new protocol' -. ./interop-lib.sh -. "$TEST_DIRECTORY"/lib-git-daemon.sh - -start_git_daemon --export-all - -repo=$GIT_DAEMON_DOCUMENT_ROOT_PATH/repo - -test_expect_success "create repo served by $VERSION_B" ' - git.b init "$repo" && - git.b -C "$repo" commit --allow-empty -m one -' - -test_expect_success "git:// clone with $VERSION_A and protocol v1" ' - GIT_TRACE_PACKET=1 git.a -c protocol.version=1 clone "$GIT_DAEMON_URL/repo" child 2>log && - git.a -C child log -1 --format=%s >actual && - git.b -C "$repo" log -1 --format=%s >expect && - test_cmp expect actual && - grep "version=1" log -' - -test_expect_success "git:// fetch with $VERSION_A and protocol v1" ' - git.b -C "$repo" commit --allow-empty -m two && - git.b -C "$repo" log -1 --format=%s >expect && - - GIT_TRACE_PACKET=1 git.a -C child -c protocol.version=1 fetch 2>log && - git.a -C child log -1 --format=%s FETCH_HEAD >actual && - - test_cmp expect actual && - grep "version=1" log && - ! grep "version 1" log -' - -stop_git_daemon - -test_expect_success "create repo served by $VERSION_B" ' - git.b init parent && - git.b -C parent commit --allow-empty -m one -' - -test_expect_success "file:// clone with $VERSION_A and protocol v1" ' - GIT_TRACE_PACKET=1 git.a -c protocol.version=1 clone --upload-pack="git.b upload-pack" parent child2 2>log && - git.a -C child2 log -1 --format=%s >actual && - git.b -C parent log -1 --format=%s >expect && - test_cmp expect actual && - ! grep "version 1" log -' - -test_expect_success "file:// fetch with $VERSION_A and protocol v1" ' - git.b -C parent commit --allow-empty -m two && - git.b -C parent log -1 --format=%s >expect && - - GIT_TRACE_PACKET=1 git.a -C child2 -c protocol.version=1 fetch --upload-pack="git.b upload-pack" 2>log && - git.a -C child2 log -1 --format=%s FETCH_HEAD >actual && - - test_cmp expect actual && - ! grep "version 1" log -' - -test_done diff --git a/third_party/git/t/interop/interop-lib.sh b/third_party/git/t/interop/interop-lib.sh deleted file mode 100644 index 3e0a2911d4f9..000000000000 --- a/third_party/git/t/interop/interop-lib.sh +++ /dev/null @@ -1,92 +0,0 @@ -# Interoperability testing framework. Each script should source -# this after setting default $VERSION_A and $VERSION_B variables. - -. ../../GIT-BUILD-OPTIONS -INTEROP_ROOT=$(pwd) -BUILD_ROOT=$INTEROP_ROOT/build - -build_version () { - if test -z "$1" - then - echo >&2 "error: test script did not set default versions" - return 1 - fi - - if test "$1" = "." - then - git rev-parse --show-toplevel - return 0 - fi - - sha1=$(git rev-parse "$1^{tree}") || return 1 - dir=$BUILD_ROOT/$sha1 - - if test -e "$dir/.built" - then - echo "$dir" - return 0 - fi - - echo >&2 "==> Building $1..." - - mkdir -p "$dir" || return 1 - - (cd "$(git rev-parse --show-cdup)" && git archive --format=tar "$sha1") | - (cd "$dir" && tar x) || - return 1 - - for config in config.mak config.mak.autogen config.status - do - if test -e "$INTEROP_ROOT/../../$config" - then - cp "$INTEROP_ROOT/../../$config" "$dir/" || return 1 - fi - done - - ( - cd "$dir" && - make $GIT_INTEROP_MAKE_OPTS >&2 && - touch .built - ) || return 1 - - echo "$dir" -} - -# Old versions of git don't have bin-wrappers, so let's give a rough emulation. -wrap_git () { - write_script "$1" <<-EOF - GIT_EXEC_PATH="$2" - export GIT_EXEC_PATH - PATH="$2:\$PATH" - export GIT_EXEC_PATH - exec git "\$@" - EOF -} - -generate_wrappers () { - mkdir -p .bin && - wrap_git .bin/git.a "$DIR_A" && - wrap_git .bin/git.b "$DIR_B" && - write_script .bin/git <<-\EOF && - echo >&2 fatal: test tried to run generic git - exit 1 - EOF - PATH=$(pwd)/.bin:$PATH -} - -VERSION_A=${GIT_TEST_VERSION_A:-$VERSION_A} -VERSION_B=${GIT_TEST_VERSION_B:-$VERSION_B} - -if ! DIR_A=$(build_version "$VERSION_A") || - ! DIR_B=$(build_version "$VERSION_B") -then - echo >&2 "fatal: unable to build git versions" - exit 1 -fi - -TEST_DIRECTORY=$INTEROP_ROOT/.. -TEST_OUTPUT_DIRECTORY=$INTEROP_ROOT -TEST_NO_CREATE_REPO=t -. "$TEST_DIRECTORY"/test-lib.sh - -generate_wrappers || die "unable to set up interop test environment" |