about summary refs log tree commit diff
path: root/third_party/git/t/interop
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-09-21T10·03+0300
committerVincent Ambo <mail@tazj.in>2021-09-21T11·29+0300
commit43b1791ec601732ac31195df96781a848360a9ac (patch)
treedaae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/t/interop
parent2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff)
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping
it in sync with cgit would be easier this way, but it has proven not
to be a big issue.

On the other hand, a vendored copy of git is an annoying maintenance
burden. It is much easier to rebase the single (dottime) patch that we
have.

This removes the vendored copy of git and instead passes the git
source code to cgit via `pkgs.srcOnly`, which includes the applied
patch so that cgit can continue rendering dottime.

Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/t/interop')
-rw-r--r--third_party/git/t/interop/.gitignore4
-rw-r--r--third_party/git/t/interop/Makefile16
-rw-r--r--third_party/git/t/interop/README85
-rwxr-xr-xthird_party/git/t/interop/i0000-basic.sh27
-rwxr-xr-xthird_party/git/t/interop/i5500-git-daemon.sh40
-rwxr-xr-xthird_party/git/t/interop/i5700-protocol-transition.sh68
-rw-r--r--third_party/git/t/interop/interop-lib.sh92
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"