mirror of
https://github.com/mgree/ffs.git
synced 2024-08-16 14:50:35 +03:00
49 lines
1.0 KiB
Bash
49 lines
1.0 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
fail() {
|
||
|
echo FAILED: $1
|
||
|
if [ "$MNT" ]
|
||
|
then
|
||
|
rm -r "$MNT"
|
||
|
rm -r "$EXP"
|
||
|
rm "$JSON"
|
||
|
fi
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
MNT=$(mktemp -d)
|
||
|
EXP=$(mktemp -d)
|
||
|
JSON=$(mktemp)
|
||
|
|
||
|
# generate files w/newlines
|
||
|
printf "Michael Greenberg" >"${EXP}/name"
|
||
|
printf "2" >"${EXP}/eyes"
|
||
|
printf "10" >"${EXP}/fingernails"
|
||
|
printf "true" >"${EXP}/human"
|
||
|
printf "hi\n" >"${EXP}/greeting"
|
||
|
printf "bye" >"${EXP}/farewell"
|
||
|
|
||
|
unpack --exact --into "$MNT" ../json/object.json || fail unpack1
|
||
|
|
||
|
echo hi >"$MNT"/greeting
|
||
|
printf "bye" >"$MNT"/farewell
|
||
|
|
||
|
pack --exact "$MNT" -o "$JSON" || fail pack1
|
||
|
rm -r "$MNT"
|
||
|
|
||
|
# remount w/ --exact, confirm that they're not there (except for greeting)
|
||
|
unpack --exact --into "$MNT" "$JSON" || fail unpack2
|
||
|
|
||
|
case $(ls "$MNT") in
|
||
|
(eyes*farewell*fingernails*greeting*human*name) ;;
|
||
|
(*) fail ls;;
|
||
|
esac
|
||
|
for x in "$EXP"/*
|
||
|
do
|
||
|
diff "$x" "$MNT/$(basename $x)" || fail "$(basename $x)"
|
||
|
done
|
||
|
|
||
|
pack "$MNT" || fail pack2
|
||
|
rm -r "$MNT" || fail mount
|
||
|
rm -r "$EXP"
|