commit
dac3f77e34
1
Makefile
1
Makefile
|
|
@ -93,6 +93,7 @@ bin/$(ARCH)/$(BIN): build-dirs
|
||||||
-v $$(pwd)/bin/$(ARCH):/go/bin/linux_$(ARCH) \
|
-v $$(pwd)/bin/$(ARCH):/go/bin/linux_$(ARCH) \
|
||||||
-v $$(pwd)/.go/std/$(ARCH):/usr/local/go/pkg/linux_$(ARCH)_static \
|
-v $$(pwd)/.go/std/$(ARCH):/usr/local/go/pkg/linux_$(ARCH)_static \
|
||||||
-w /go/src/$(PKG) \
|
-w /go/src/$(PKG) \
|
||||||
|
--rm \
|
||||||
$(BUILD_IMAGE) \
|
$(BUILD_IMAGE) \
|
||||||
/bin/sh -c " \
|
/bin/sh -c " \
|
||||||
ARCH=$(ARCH) \
|
ARCH=$(ARCH) \
|
||||||
|
|
|
||||||
79
test_e2e.sh
79
test_e2e.sh
|
|
@ -13,9 +13,8 @@ function testcase() {
|
||||||
|
|
||||||
function fail() {
|
function fail() {
|
||||||
echo "FAIL: " "$@"
|
echo "FAIL: " "$@"
|
||||||
sleep 2
|
sleep 3
|
||||||
pkill git-sync || true
|
remove_sync_container || true
|
||||||
ps auxw | grep git-sync
|
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -47,6 +46,16 @@ function assert_file_eq() {
|
||||||
fail "file $1 does not contain '$2': $(cat $1)"
|
fail "file $1 does not contain '$2': $(cat $1)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function finish() {
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "The directory $DIR was not removed as it contains"\
|
||||||
|
"log files useful for debugging"
|
||||||
|
remove_sync_container
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
trap finish INT EXIT
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
# main
|
# main
|
||||||
#########################
|
#########################
|
||||||
|
|
@ -65,16 +74,24 @@ if [[ -z "$DIR" ]]; then
|
||||||
fi
|
fi
|
||||||
echo "test root is $DIR"
|
echo "test root is $DIR"
|
||||||
|
|
||||||
|
CONTAINER_NAME=git-sync-$RANDOM
|
||||||
function GIT_SYNC() {
|
function GIT_SYNC() {
|
||||||
#./bin/amd64/git-sync "$@"
|
#./bin/amd64/git-sync "$@"
|
||||||
docker run \
|
docker run \
|
||||||
|
--name $CONTAINER_NAME \
|
||||||
-i \
|
-i \
|
||||||
-u $(id -u):$(id -g) \
|
-u $(id -u):$(id -g) \
|
||||||
-v "$DIR":"$DIR" \
|
-v "$DIR":"$DIR" \
|
||||||
|
--rm \
|
||||||
e2e/git-sync-amd64:$(make -s version) \
|
e2e/git-sync-amd64:$(make -s version) \
|
||||||
"$@"
|
"$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function remove_sync_container() {
|
||||||
|
# Verify the container is running using 'docker top' before removing
|
||||||
|
docker top $CONTAINER_NAME >/dev/null 2>&1 && docker rm -f $CONTAINER_NAME
|
||||||
|
}
|
||||||
|
|
||||||
REPO="$DIR/repo"
|
REPO="$DIR/repo"
|
||||||
mkdir "$REPO"
|
mkdir "$REPO"
|
||||||
|
|
||||||
|
|
@ -124,25 +141,25 @@ GIT_SYNC \
|
||||||
--repo="$REPO" \
|
--repo="$REPO" \
|
||||||
--root="$ROOT" \
|
--root="$ROOT" \
|
||||||
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
# Move forward
|
# Move forward
|
||||||
echo "$TESTCASE 2" > "$REPO"/file
|
echo "$TESTCASE 2" > "$REPO"/file
|
||||||
git -C "$REPO" commit -qam "$TESTCASE 2"
|
git -C "$REPO" commit -qam "$TESTCASE 2"
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
||||||
# Move backward
|
# Move backward
|
||||||
git -C "$REPO" reset -q --hard HEAD^
|
git -C "$REPO" reset -q --hard HEAD^
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
# Wrap up
|
# Wrap up
|
||||||
pkill git-sync
|
remove_sync_container
|
||||||
wait
|
wait
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
@ -160,25 +177,25 @@ GIT_SYNC \
|
||||||
--rev=HEAD \
|
--rev=HEAD \
|
||||||
--root="$ROOT" \
|
--root="$ROOT" \
|
||||||
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
# Move HEAD forward
|
# Move HEAD forward
|
||||||
echo "$TESTCASE 2" > "$REPO"/file
|
echo "$TESTCASE 2" > "$REPO"/file
|
||||||
git -C "$REPO" commit -qam "$TESTCASE 2"
|
git -C "$REPO" commit -qam "$TESTCASE 2"
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
||||||
# Move HEAD backward
|
# Move HEAD backward
|
||||||
git -C "$REPO" reset -q --hard HEAD^
|
git -C "$REPO" reset -q --hard HEAD^
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
# Wrap up
|
# Wrap up
|
||||||
pkill git-sync
|
remove_sync_container
|
||||||
wait
|
wait
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
@ -198,7 +215,7 @@ GIT_SYNC \
|
||||||
--branch="$BRANCH" \
|
--branch="$BRANCH" \
|
||||||
--root="$ROOT" \
|
--root="$ROOT" \
|
||||||
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
|
|
@ -207,7 +224,7 @@ git -C "$REPO" checkout -q "$BRANCH"
|
||||||
echo "$TESTCASE 2" > "$REPO"/file
|
echo "$TESTCASE 2" > "$REPO"/file
|
||||||
git -C "$REPO" commit -qam "$TESTCASE 2"
|
git -C "$REPO" commit -qam "$TESTCASE 2"
|
||||||
git -C "$REPO" checkout -q master
|
git -C "$REPO" checkout -q master
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
||||||
|
|
@ -215,12 +232,12 @@ assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
||||||
git -C "$REPO" checkout -q "$BRANCH"
|
git -C "$REPO" checkout -q "$BRANCH"
|
||||||
git -C "$REPO" reset -q --hard HEAD^
|
git -C "$REPO" reset -q --hard HEAD^
|
||||||
git -C "$REPO" checkout -q master
|
git -C "$REPO" checkout -q master
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
# Wrap up
|
# Wrap up
|
||||||
pkill git-sync
|
remove_sync_container
|
||||||
wait
|
wait
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
@ -239,7 +256,7 @@ GIT_SYNC \
|
||||||
--rev="$TAG" \
|
--rev="$TAG" \
|
||||||
--root="$ROOT" \
|
--root="$ROOT" \
|
||||||
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
|
|
@ -247,26 +264,26 @@ assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
echo "$TESTCASE 2" > "$REPO"/file
|
echo "$TESTCASE 2" > "$REPO"/file
|
||||||
git -C "$REPO" commit -qam "$TESTCASE 2"
|
git -C "$REPO" commit -qam "$TESTCASE 2"
|
||||||
git -C "$REPO" tag -af "$TAG" -m "$TESTCASE 2" >/dev/null
|
git -C "$REPO" tag -af "$TAG" -m "$TESTCASE 2" >/dev/null
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
||||||
# Move the tag backward
|
# Move the tag backward
|
||||||
git -C "$REPO" reset -q --hard HEAD^
|
git -C "$REPO" reset -q --hard HEAD^
|
||||||
git -C "$REPO" tag -af "$TAG" -m "$TESTCASE 3" >/dev/null
|
git -C "$REPO" tag -af "$TAG" -m "$TESTCASE 3" >/dev/null
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
# Add something after the tag
|
# Add something after the tag
|
||||||
echo "$TESTCASE 3" > "$REPO"/file
|
echo "$TESTCASE 3" > "$REPO"/file
|
||||||
git -C "$REPO" commit -qam "$TESTCASE 3"
|
git -C "$REPO" commit -qam "$TESTCASE 3"
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
# Wrap up
|
# Wrap up
|
||||||
pkill git-sync
|
remove_sync_container
|
||||||
wait
|
wait
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
@ -288,7 +305,7 @@ GIT_SYNC \
|
||||||
--rev="$TAG" \
|
--rev="$TAG" \
|
||||||
--root="$ROOT" \
|
--root="$ROOT" \
|
||||||
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
|
|
@ -298,7 +315,7 @@ echo "$TESTCASE 2" > "$REPO"/file
|
||||||
git -C "$REPO" commit -qam "$TESTCASE 2"
|
git -C "$REPO" commit -qam "$TESTCASE 2"
|
||||||
git -C "$REPO" tag -af "$TAG" -m "$TESTCASE 1" >/dev/null
|
git -C "$REPO" tag -af "$TAG" -m "$TESTCASE 1" >/dev/null
|
||||||
git -C "$REPO" checkout -q master
|
git -C "$REPO" checkout -q master
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 2"
|
||||||
|
|
@ -307,7 +324,7 @@ git -C "$REPO" checkout -q "$BRANCH"
|
||||||
git -C "$REPO" reset -q --hard HEAD^
|
git -C "$REPO" reset -q --hard HEAD^
|
||||||
git -C "$REPO" tag -af "$TAG" -m "$TESTCASE 1" >/dev/null
|
git -C "$REPO" tag -af "$TAG" -m "$TESTCASE 1" >/dev/null
|
||||||
git -C "$REPO" checkout -q master
|
git -C "$REPO" checkout -q master
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
|
|
@ -316,7 +333,7 @@ git -C "$REPO" checkout -q "$BRANCH"
|
||||||
echo "$TESTCASE 3" > "$REPO"/file
|
echo "$TESTCASE 3" > "$REPO"/file
|
||||||
git -C "$REPO" commit -qam "$TESTCASE 3"
|
git -C "$REPO" commit -qam "$TESTCASE 3"
|
||||||
git -C "$REPO" checkout -q master
|
git -C "$REPO" checkout -q master
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
|
|
@ -324,12 +341,12 @@ assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
git -C "$REPO" checkout -q "$BRANCH"
|
git -C "$REPO" checkout -q "$BRANCH"
|
||||||
git -C "$REPO" tag -af "$TAG" -m "$TESTCASE 3" >/dev/null
|
git -C "$REPO" tag -af "$TAG" -m "$TESTCASE 3" >/dev/null
|
||||||
git -C "$REPO" checkout -q master
|
git -C "$REPO" checkout -q master
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 3"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 3"
|
||||||
# Wrap up
|
# Wrap up
|
||||||
pkill git-sync
|
remove_sync_container
|
||||||
wait
|
wait
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
@ -347,25 +364,25 @@ GIT_SYNC \
|
||||||
--rev="$REV" \
|
--rev="$REV" \
|
||||||
--root="$ROOT" \
|
--root="$ROOT" \
|
||||||
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
--dest="link" > "$DIR"/log."$TESTCASE" 2>&1 &
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
# Commit something new
|
# Commit something new
|
||||||
echo "$TESTCASE 2" > "$REPO"/file
|
echo "$TESTCASE 2" > "$REPO"/file
|
||||||
git -C "$REPO" commit -qam "$TESTCASE 2"
|
git -C "$REPO" commit -qam "$TESTCASE 2"
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
# Revert the last change
|
# Revert the last change
|
||||||
git -C "$REPO" reset -q --hard HEAD^
|
git -C "$REPO" reset -q --hard HEAD^
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE 1"
|
||||||
# Wrap up
|
# Wrap up
|
||||||
pkill git-sync
|
remove_sync_container
|
||||||
wait
|
wait
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
@ -384,7 +401,7 @@ GIT_SYNC \
|
||||||
--root="$ROOT" \
|
--root="$ROOT" \
|
||||||
--dest="link" \
|
--dest="link" \
|
||||||
--one-time > "$DIR"/log."$TESTCASE" 2>&1
|
--one-time > "$DIR"/log."$TESTCASE" 2>&1
|
||||||
sleep 2
|
sleep 3
|
||||||
assert_link_exists "$ROOT"/link
|
assert_link_exists "$ROOT"/link
|
||||||
assert_file_exists "$ROOT"/link/file
|
assert_file_exists "$ROOT"/link/file
|
||||||
assert_file_eq "$ROOT"/link/file "$TESTCASE"
|
assert_file_eq "$ROOT"/link/file "$TESTCASE"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue