9e006ac4e2
Currently, our default branch in tests is "master". This is the Git default, but the Git default will likely change in the future, so it makes sense to update our testsuite to be explicit about the branch name. We'll ensure this continues by building against older versions of Git as well as newer versions. We use "main" for the new branch name, since that's the proposed value upstream. This commit was made entirely by automated means using the following command: git grep -l master t | xargs sed -i -e 's/master/main/g'
288 lines
9.3 KiB
Bash
Executable File
288 lines
9.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
. "$(dirname "$0")/testlib.sh"
|
|
|
|
begin_test "custom-transfer-wrong-path"
|
|
(
|
|
set -e
|
|
|
|
# this repo name is the indicator to the server to support custom transfer
|
|
reponame="test-custom-transfer-fail"
|
|
setup_remote_repo "$reponame"
|
|
|
|
clone_repo "$reponame" $reponame
|
|
|
|
# deliberately incorrect path
|
|
git config lfs.customtransfer.testcustom.path path-to-nothing
|
|
|
|
git lfs track "*.dat" 2>&1 | tee track.log
|
|
grep "Tracking \"\*.dat\"" track.log
|
|
|
|
contents="jksgdfljkgsdlkjafg lsjdgf alkjgsd lkfjag sldjkgf alkjsgdflkjagsd kljfg asdjgf kalsd"
|
|
contents_oid=$(calc_oid "$contents")
|
|
|
|
printf "%s" "$contents" > a.dat
|
|
git add a.dat
|
|
git add .gitattributes
|
|
git commit -m "add a.dat" 2>&1 | tee commit.log
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git push origin main 2>&1 | tee pushcustom.log
|
|
# use PIPESTATUS otherwise we get exit code from tee
|
|
res=${PIPESTATUS[0]}
|
|
grep "xfer: adapter \"testcustom\" Begin()" pushcustom.log
|
|
grep "xfer: Aborting worker process" pushcustom.log
|
|
if [ "$res" = "0" ]; then
|
|
echo "Push should have failed because of an incorrect custom transfer path."
|
|
exit 1
|
|
fi
|
|
|
|
)
|
|
end_test
|
|
|
|
begin_test "custom-transfer-upload-download"
|
|
(
|
|
set -e
|
|
|
|
# this repo name is the indicator to the server to support custom transfer
|
|
reponame="test-custom-transfer-1"
|
|
setup_remote_repo "$reponame"
|
|
|
|
clone_repo "$reponame" $reponame
|
|
|
|
# set up custom transfer adapter
|
|
git config lfs.customtransfer.testcustom.path lfstest-customadapter
|
|
|
|
git lfs track "*.dat" 2>&1 | tee track.log
|
|
grep "Tracking \"\*.dat\"" track.log
|
|
git add .gitattributes
|
|
git commit -m "Tracking"
|
|
|
|
# set up a decent amount of data so that there's work for multiple concurrent adapters
|
|
echo "[
|
|
{
|
|
\"CommitDate\":\"$(get_date -10d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"verify.dat\",\"Size\":18,\"Data\":\"send-verify-action\"},
|
|
{\"Filename\":\"file1.dat\",\"Size\":1024},
|
|
{\"Filename\":\"file2.dat\",\"Size\":750}]
|
|
},
|
|
{
|
|
\"CommitDate\":\"$(get_date -7d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"file1.dat\",\"Size\":1050},
|
|
{\"Filename\":\"file3.dat\",\"Size\":660},
|
|
{\"Filename\":\"file4.dat\",\"Size\":230}]
|
|
},
|
|
{
|
|
\"CommitDate\":\"$(get_date -5d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"file5.dat\",\"Size\":1200},
|
|
{\"Filename\":\"file6.dat\",\"Size\":300}]
|
|
},
|
|
{
|
|
\"CommitDate\":\"$(get_date -2d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"file3.dat\",\"Size\":120},
|
|
{\"Filename\":\"file5.dat\",\"Size\":450},
|
|
{\"Filename\":\"file7.dat\",\"Size\":520},
|
|
{\"Filename\":\"file8.dat\",\"Size\":2048}]
|
|
}
|
|
]" | lfstest-testutils addcommits
|
|
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git push origin main 2>&1 | tee pushcustom.log
|
|
# use PIPESTATUS otherwise we get exit code from tee
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
grep "xfer: started custom adapter process" pushcustom.log
|
|
grep "xfer\[lfstest-customadapter\]:" pushcustom.log
|
|
grep "Uploading LFS objects: 100% (12/12)" pushcustom.log
|
|
|
|
rm -rf .git/lfs/objects
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git lfs fetch --all 2>&1 | tee fetchcustom.log
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
grep "xfer: started custom adapter process" fetchcustom.log
|
|
grep "xfer\[lfstest-customadapter\]:" fetchcustom.log
|
|
|
|
grep "Terminating test custom adapter gracefully" fetchcustom.log
|
|
|
|
objectlist=`find .git/lfs/objects -type f`
|
|
[ "$(echo "$objectlist" | wc -l)" -eq 12 ]
|
|
)
|
|
end_test
|
|
|
|
begin_test "custom-transfer-standalone"
|
|
(
|
|
set -e
|
|
|
|
# setup a git repo to be used as a local repo, not remote
|
|
reponame="test-custom-transfer-standalone"
|
|
setup_remote_repo "$reponame"
|
|
|
|
# clone directly, not through lfstest-gitserver
|
|
clone_repo_url "$REMOTEDIR/$reponame.git" $reponame
|
|
|
|
# set up custom transfer adapter to use a specific transfer agent
|
|
git config lfs.customtransfer.testcustom.path lfstest-standalonecustomadapter
|
|
git config lfs.customtransfer.testcustom.args "--arg1 '--arg2 --arg3' --arg4"
|
|
git config lfs.customtransfer.testcustom.concurrent false
|
|
git config lfs.standalonetransferagent testcustom
|
|
export TEST_STANDALONE_BACKUP_PATH="$(pwd)/test-custom-transfer-standalone-backup"
|
|
mkdir -p $TEST_STANDALONE_BACKUP_PATH
|
|
rm -rf $TEST_STANDALONE_BACKUP_PATH/*
|
|
|
|
git lfs track "*.dat" 2>&1 | tee track.log
|
|
grep "Tracking \"\*.dat\"" track.log
|
|
git add .gitattributes
|
|
git commit -m "Tracking"
|
|
|
|
# set up a decent amount of data so that there's work for multiple concurrent adapters
|
|
echo "[
|
|
{
|
|
\"CommitDate\":\"$(get_date -10d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"verify.dat\",\"Size\":18,\"Data\":\"send-verify-action\"},
|
|
{\"Filename\":\"file1.dat\",\"Size\":1024},
|
|
{\"Filename\":\"file2.dat\",\"Size\":750}]
|
|
},
|
|
{
|
|
\"CommitDate\":\"$(get_date -7d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"file1.dat\",\"Size\":1050},
|
|
{\"Filename\":\"file3.dat\",\"Size\":660},
|
|
{\"Filename\":\"file4.dat\",\"Size\":230}]
|
|
},
|
|
{
|
|
\"CommitDate\":\"$(get_date -5d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"file5.dat\",\"Size\":1200},
|
|
{\"Filename\":\"file6.dat\",\"Size\":300}]
|
|
},
|
|
{
|
|
\"CommitDate\":\"$(get_date -2d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"file3.dat\",\"Size\":120},
|
|
{\"Filename\":\"file5.dat\",\"Size\":450},
|
|
{\"Filename\":\"file7.dat\",\"Size\":520},
|
|
{\"Filename\":\"file8.dat\",\"Size\":2048}]
|
|
}
|
|
]" | lfstest-testutils addcommits
|
|
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git push origin main 2>&1 | tee pushcustom.log
|
|
# use PIPESTATUS otherwise we get exit code from tee
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
# Make sure the lock verification is not attempted.
|
|
grep "locks/verify$" pushcustom.log && false
|
|
|
|
grep "xfer: started custom adapter process" pushcustom.log
|
|
grep "xfer\[lfstest-standalonecustomadapter\]:" pushcustom.log
|
|
grep "Uploading LFS objects: 100% (12/12)" pushcustom.log
|
|
|
|
rm -rf .git/lfs/objects
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git lfs fetch --all 2>&1 | tee fetchcustom.log
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
grep "xfer: started custom adapter process" fetchcustom.log
|
|
grep "xfer\[lfstest-standalonecustomadapter\]:" fetchcustom.log
|
|
|
|
grep "Terminating test custom adapter gracefully" fetchcustom.log
|
|
|
|
# Test argument parsing.
|
|
grep 'Saw argument "--arg1"' fetchcustom.log
|
|
grep 'Saw argument "--arg2 --arg3"' fetchcustom.log
|
|
grep 'Saw argument "--arg4"' fetchcustom.log
|
|
|
|
objectlist=`find .git/lfs/objects -type f`
|
|
[ "$(echo "$objectlist" | wc -l)" -eq 12 ]
|
|
|
|
git lfs fsck
|
|
)
|
|
end_test
|
|
|
|
begin_test "custom-transfer-standalone-urlmatch"
|
|
(
|
|
set -e
|
|
|
|
# setup a git repo to be used as a local repo, not remote
|
|
reponame="test-custom-transfer-standalone-urlmatch"
|
|
setup_remote_repo "$reponame"
|
|
|
|
# clone directly, not through lfstest-gitserver
|
|
clone_repo_url "$REMOTEDIR/$reponame.git" $reponame
|
|
|
|
# set up custom transfer adapter to use a specific transfer agent, using a URL prefix match
|
|
git config lfs.customtransfer.testcustom.path lfstest-standalonecustomadapter
|
|
git config lfs.customtransfer.testcustom.concurrent false
|
|
git config remote.origin.lfsurl https://git.example.com/example/path/to/repo
|
|
git config lfs.https://git.example.com/example/path/.standalonetransferagent testcustom
|
|
git config lfs.standalonetransferagent invalid-agent
|
|
|
|
# git config lfs.standalonetransferagent testcustom
|
|
export TEST_STANDALONE_BACKUP_PATH="$(pwd)/test-custom-transfer-standalone-urlmatch-backup"
|
|
mkdir -p $TEST_STANDALONE_BACKUP_PATH
|
|
rm -rf $TEST_STANDALONE_BACKUP_PATH/*
|
|
|
|
git lfs track "*.dat" 2>&1 | tee track.log
|
|
grep "Tracking \"\*.dat\"" track.log
|
|
git add .gitattributes
|
|
git commit -m "Tracking"
|
|
|
|
# set up a decent amount of data so that there's work for multiple concurrent adapters
|
|
echo "[
|
|
{
|
|
\"CommitDate\":\"$(get_date -10d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"verify.dat\",\"Size\":18,\"Data\":\"send-verify-action\"},
|
|
{\"Filename\":\"file1.dat\",\"Size\":1024},
|
|
{\"Filename\":\"file2.dat\",\"Size\":750}]
|
|
},
|
|
{
|
|
\"CommitDate\":\"$(get_date -7d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"file1.dat\",\"Size\":1050},
|
|
{\"Filename\":\"file3.dat\",\"Size\":660},
|
|
{\"Filename\":\"file4.dat\",\"Size\":230}]
|
|
},
|
|
{
|
|
\"CommitDate\":\"$(get_date -5d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"file5.dat\",\"Size\":1200},
|
|
{\"Filename\":\"file6.dat\",\"Size\":300}]
|
|
},
|
|
{
|
|
\"CommitDate\":\"$(get_date -2d)\",
|
|
\"Files\":[
|
|
{\"Filename\":\"file3.dat\",\"Size\":120},
|
|
{\"Filename\":\"file5.dat\",\"Size\":450},
|
|
{\"Filename\":\"file7.dat\",\"Size\":520},
|
|
{\"Filename\":\"file8.dat\",\"Size\":2048}]
|
|
}
|
|
]" | lfstest-testutils addcommits
|
|
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git push origin main 2>&1 | tee pushcustom.log
|
|
# use PIPESTATUS otherwise we get exit code from tee
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
# Make sure the lock verification is not attempted.
|
|
grep "locks/verify$" pushcustom.log && false
|
|
|
|
grep "xfer: started custom adapter process" pushcustom.log
|
|
grep "xfer\[lfstest-standalonecustomadapter\]:" pushcustom.log
|
|
grep "Uploading LFS objects: 100% (12/12)" pushcustom.log
|
|
|
|
rm -rf .git/lfs/objects
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git lfs fetch --all 2>&1 | tee fetchcustom.log
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
grep "xfer: started custom adapter process" fetchcustom.log
|
|
grep "xfer\[lfstest-standalonecustomadapter\]:" fetchcustom.log
|
|
|
|
grep "Terminating test custom adapter gracefully" fetchcustom.log
|
|
|
|
objectlist=`find .git/lfs/objects -type f`
|
|
[ "$(echo "$objectlist" | wc -l)" -eq 12 ]
|
|
|
|
git lfs fsck
|
|
)
|
|
end_test
|