You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
1.8 KiB
92 lines
1.8 KiB
# 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"
|
|
|