fef4c0ff98
The base64(1) binary provided with macOS does not accept a bare input file name, unlike any of the GNU coreutils implementations of base64(1) or either the older Fourmilab or newer bintrans(1) BSD implementations. Instead, it appears to be a version unique to OS X which requires an -i option before a file name to be used for input. See, for reference: https://www.unix.com/man-page/osx/1/base64/ https://man7.org/linux/man-pages/man1/base64.1.html https://www.fourmilab.ch/webtools/base64/ https://man.freebsd.org/cgi/man.cgi?query=base64&manpath=FreeBSD+15.0-CURRENT With the Xcode developer tools for macOS installed, along with Go, Git, etc., our test suite mostly succeeds, but several tests fail because they expect to call base64(1) and pass the bare /dev/urandom file name. We can resolve this inconvenience for developers by adjusting those tests to use the technique we already use in the t/t-migrate-*.sh test suites where we redirect /dev/urandom into base64 as its standard input. This allows the test suites to function on both macOS as well as Linux systems which use one of the other base64(1) implementations.
90 lines
3.2 KiB
Bash
Executable File
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
|