1
0
Fork 0
mirror of https://github.com/vbatts/go-mtree.git synced 2024-12-24 06:26:31 +00:00
go-mtree/test/cli/0001a.sh
Vincent Batts e19072ac1c
*: begin incorporating the "validate" subcommand
Update the README to show the validate subcommand by default.
This doesn't eliminate the default behavior of _not_ using the command,
but begins the visibility of using it by default.

Also copy one of the existing tests, to ensure the same behaviour works
as we add more subcommands and/or global flags.

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2023-10-24 10:25:18 -04:00

44 lines
1.4 KiB
Bash

#!/bin/bash
set -e
name=$(basename $0)
root="$(dirname $(dirname $(dirname $0)))"
gomtree=$(go run ${root}/test/realpath/main.go ${root}/gomtree)
t=$(mktemp -d -t go-mtree.XXXXXX)
echo "[${name}] Running in ${t}"
# This test is for basic running check of manifest, and check against tar and file system
#
pushd ${root}
git archive --format=tar -o "${t}/${name}.tar" HEAD^{tree}
prev_umask=$(umask)
umask 0 # this is so the tar command can set the mode's properly
mkdir -p ${t}/extract
tar -C ${t}/extract/ -xf "${t}/${name}.tar"
umask ${prev_umask}
# create manifest from tar
${gomtree} validate -K sha256digest -c -T "${t}/${name}.tar" > "${t}/${name}.mtree"
# check tar-manifest against the tar
${gomtree} validate -f ${t}/${name}.mtree -T "${t}/${name}.tar"
# check tar-manifest against the filesystem
# git archive makes the uid/gid as 0, so don't check them for this test
${gomtree} validate -k size,sha256digest,mode,type -f "${t}/${name}.mtree" -p ${t}/extract/
# create a manifest from filesystem
${gomtree} validate -K sha256digest -c -p "${t}/extract/" > "${t}/${name}.mtree"
# check filesystem-manifest against the filesystem
${gomtree} validate -f "${t}/${name}.mtree" -p "${t}/extract/"
# check filesystem-manifest against the tar
# git archive makes the uid/gid as 0, so don't check them for this test
${gomtree} validate -k size,sha256digest,mode,type -f "${t}/${name}.mtree" -T "${t}/${name}.tar"
popd
rm -rf ${t}