git-lfs/t/t-clean.sh

90 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
. "$(dirname "$0")/testlib.sh"
clean_setup () {
mkdir "$1"
cd "$1"
git init
}
begin_test "clean simple file"
(
set -e
clean_setup "simple"
echo "whatever" | git lfs clean | tee clean.log
[ "$(pointer cd293be6cea034bd45a0352775a219ef5dc7825ce55d1f7dae9762d80ce64411 9)" = "$(cat clean.log)" ]
)
end_test
begin_test "clean a pointer"
(
set -e
clean_setup "pointer"
pointer cd293be6cea034bd45a0352775a219ef5dc7825ce55d1f7dae9762d80ce64411 9 | git lfs clean | tee clean.log
[ "$(pointer cd293be6cea034bd45a0352775a219ef5dc7825ce55d1f7dae9762d80ce64411 9)" = "$(cat clean.log)" ]
)
end_test
begin_test "clean pseudo pointer"
(
set -e
clean_setup "pseudo"
echo "version https://git-lfs.github.com/spec/v1
oid sha256:7cd8be1d2cd0dd22cd9d229bb6b5785009a05e8b39d405615d882caac56562b5
size 1024
This is my test pointer. There are many like it, but this one is mine." | git lfs clean | tee clean.log
[ "$(pointer f492acbebb5faa22da4c1501c022af035469f624f426631f31936575873fefe1 202)" = "$(cat clean.log)" ]
)
end_test
begin_test "clean pseudo pointer with extra data"
(
set -e
clean_setup "extra-data"
# pointer includes enough extra data to fill the 'git lfs clean' buffer
printf "version https://git-lfs.github.com/spec/v1
oid sha256:7cd8be1d2cd0dd22cd9d229bb6b5785009a05e8b39d405615d882caac56562b5
size 1024
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
This is my test pointer. There are many like it, but this one is mine.\n" | git lfs clean | tee clean.log
[ "$(pointer c2f909f6961bf85a92e2942ef3ed80c938a3d0ebaee6e72940692581052333be 586)" = "$(cat clean.log)" ]
)
end_test
begin_test "clean stdin"
(
set -e
# git-lfs-clean(1) writes to .git/lfs/objects, and therefore must be executed
# within a repository.
reponame="clean-over-stdin"
git init "$reponame"
cd "$reponame"
base64 /dev/urandom | head -c 1024 > small.dat
base64 /dev/urandom | head -c 2048 > large.dat
expected_small="$(calc_oid_file "small.dat")"
expected_large="$(calc_oid_file "large.dat")"
actual_small="$(git lfs clean < "small.dat" | grep "oid" | cut -d ':' -f 2)"
actual_large="$(git lfs clean < "large.dat" | grep "oid" | cut -d ':' -f 2)"
if [ "$expected_small" != "$actual_small" ]; then
echo >&2 "fatal: expected small OID of: $expected_small, got: $actual_small"
exit 1
fi
if [ "$expected_large" != "$actual_large" ]; then
echo >&2 "fatal: expected large OID of: $expected_large, got: $actual_large"
exit 1
fi
)
end_test