git-lfs/test/test-smudge.sh

153 lines
3.8 KiB
Bash
Raw Normal View History

2015-07-30 02:37:31 +00:00
#!/usr/bin/env bash
2015-05-26 21:29:58 +00:00
. "test/testlib.sh"
begin_test "smudge with temp file"
(
set -e
set -e
reponame="$(basename "$0" ".sh")-with-temp"
setup_remote_repo "$reponame"
clone_repo "$reponame" repo
git lfs track "*.dat"
echo "smudge a" > a.dat
git add .gitattributes a.dat
git commit -m "add a.dat"
git push origin master
rm -rf .git/lfs/objects
mkdir -p .git/lfs/tmp/objects
touch .git/lfs/tmp/objects/fcf5015df7a9089a7aa7fe74139d4b8f7d62e52d5a34f9a87aeffc8e8c668254-1
pointer fcf5015df7a9089a7aa7fe74139d4b8f7d62e52d5a34f9a87aeffc8e8c668254 9 | GIT_TRACE=5 git lfs smudge | tee smudge.log
[ "smudge a" = "$(cat smudge.log)" ] || {
git lfs logs last
exit 1
}
)
end_test
exit 0
2015-05-26 21:29:58 +00:00
begin_test "smudge"
(
set -e
reponame="$(basename "$0" ".sh")"
setup_remote_repo "$reponame"
clone_repo "$reponame" repo
git lfs track "*.dat"
echo "smudge a" > a.dat
git add .gitattributes a.dat
git commit -m "add a.dat"
# smudge works even though it hasn't been pushed, by reading from .git/lfs/objects
output="$(pointer fcf5015df7a9089a7aa7fe74139d4b8f7d62e52d5a34f9a87aeffc8e8c668254 9 | git lfs smudge)"
[ "smudge a" = "$output" ]
2015-05-26 21:29:58 +00:00
git push origin master
# download it from the git lfs server
rm -rf .git/lfs/objects
output="$(pointer fcf5015df7a9089a7aa7fe74139d4b8f7d62e52d5a34f9a87aeffc8e8c668254 9 | git lfs smudge)"
[ "smudge a" = "$output" ]
2015-05-26 21:29:58 +00:00
)
end_test
begin_test "smudge --info"
(
set -e
cd repo
output="$(pointer aaaaa15df7a9089a7aa7fe74139d4b8f7d62e52d5a34f9a87aeffc8e8c668254 123 | git lfs smudge --info)"
[ "123 --" = "$output" ]
2015-05-26 21:29:58 +00:00
)
end_test
begin_test "smudge with invalid pointer"
(
set -e
cd repo
[ "wat" = "$(echo "wat" | git lfs smudge)" ]
[ "not a git-lfs file" = "$(echo "not a git-lfs file" | git lfs smudge)" ]
[ "version " = "$(echo "version " | git lfs smudge)" ]
2015-05-26 21:29:58 +00:00
)
end_test
begin_test "smudge include/exclude"
(
set -e
reponame="$(basename "$0" ".sh")-includeexclude"
setup_remote_repo "$reponame"
clone_repo "$reponame" includeexclude
git lfs track "*.dat"
echo "smudge a" > a.dat
git add .gitattributes a.dat
git commit -m "add a.dat"
pointer="$(pointer fcf5015df7a9089a7aa7fe74139d4b8f7d62e52d5a34f9a87aeffc8e8c668254 9)"
# smudge works even though it hasn't been pushed, by reading from .git/lfs/objects
[ "smudge a" = "$(echo "$pointer" | git lfs smudge)" ]
git push origin master
# this WOULD download except we're going to prevent it with include/exclude
rm -rf .git/lfs/objects
git config "lfs.fetchexclude" "a*"
[ "$pointer" = "$(echo "$pointer" | git lfs smudge a.dat)" ]
)
end_test
2015-09-25 16:43:06 +00:00
begin_test "smudge with skip"
(
set -e
2015-09-25 16:43:06 +00:00
reponame="$(basename "$0" ".sh")-skip"
setup_remote_repo "$reponame"
2015-09-25 16:43:06 +00:00
clone_repo "$reponame" "skip"
git lfs track "*.dat"
echo "smudge a" > a.dat
git add .gitattributes a.dat
git commit -m "add a.dat"
pointer="$(pointer fcf5015df7a9089a7aa7fe74139d4b8f7d62e52d5a34f9a87aeffc8e8c668254 9)"
[ "smudge a" = "$(echo "$pointer" | git lfs smudge)" ]
[ "$pointer" = "$(echo "$pointer" | GIT_LFS_SKIP_SMUDGE=1 git lfs smudge)" ]
git push origin master
2015-09-23 18:20:30 +00:00
echo "test clone with env"
export GIT_LFS_SKIP_SMUDGE=1
env | grep LFS_SKIP
2015-09-25 16:43:06 +00:00
clone_repo "$reponame" "skip-clone-env"
[ "$pointer" = "$(cat a.dat)" ]
2015-09-23 19:30:10 +00:00
[ "0" = "$(grep -c "Downloading a.dat" clone.log)" ]
git lfs pull
2015-09-23 18:20:30 +00:00
[ "smudge a" = "$(cat a.dat)" ]
echo "test clone without env"
unset GIT_LFS_SKIP_SMUDGE
[ "$(env | grep LFS_SKIP)" == "" ]
2015-09-25 16:43:06 +00:00
clone_repo "$reponame" "no-skip"
[ "smudge a" = "$(cat a.dat)" ]
2015-09-23 19:30:10 +00:00
[ "1" = "$(grep -c "Downloading a.dat" clone.log)" ]
2015-09-23 18:20:30 +00:00
2015-09-25 16:43:06 +00:00
echo "test clone with init --skip-smudge"
git lfs init --skip-smudge
2015-09-25 16:43:06 +00:00
clone_repo "$reponame" "skip-clone-init"
2015-09-23 18:20:30 +00:00
[ "$pointer" = "$(cat a.dat)" ]
2015-09-23 19:30:10 +00:00
[ "0" = "$(grep -c "Downloading a.dat" clone.log)" ]
2015-09-23 18:20:30 +00:00
git lfs init --force
)
end_test