#!/usr/bin/env bash
set -Eeuo pipefail

TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT

POST="$TMP/post.txt"
cat >"$POST" <<'EOF'
HEAD_COMMIT=66a24ee69f186d27cab4ae73169fab6fab636d56
HEAD_TREE=6b16f8192262116a7a1ff77c333184e548446be7
TRACKED_COUNT=7
TRACKED_DIFF_BEGIN
TRACKED_DIFF_END
TRACKED_STATUS_BEGIN
TRACKED_STATUS_END
MANAGED_PATH_COUNT=32
RESULT=PASS_VM101_POST_MACHINE_GIT_VERIFY
EOF

value() {
    local key="$1" file="$2"
    awk -F= -v k="$key" '$1==k {v=substr($0,index($0,"=")+1)} END{print v}' "$file"
}

test "$(value HEAD_COMMIT "$POST")" = 66a24ee69f186d27cab4ae73169fab6fab636d56
test "$(value HEAD_TREE "$POST")" = 6b16f8192262116a7a1ff77c333184e548446be7
test "$(value TRACKED_COUNT "$POST")" = 7
test "$(value MANAGED_PATH_COUNT "$POST")" = 32
grep -q '^RESULT=PASS_VM101_POST_MACHINE_GIT_VERIFY$' "$POST"

awk '/TRACKED_DIFF_BEGIN/{f=1;next}/TRACKED_DIFF_END/{f=0}f' "$POST" |
    sed '/^$/d' >"$TMP/diff"
test ! -s "$TMP/diff"

awk '/TRACKED_STATUS_BEGIN/{f=1;next}/TRACKED_STATUS_END/{f=0}f' "$POST" |
    sed '/^$/d' >"$TMP/status"
test ! -s "$TMP/status"

# Synthetic exact clone with 32 tracked files.
SRC="$TMP/source"
BARE="$TMP/source.git"
CLONE="$TMP/clone"
git init --quiet "$SRC"
git -C "$SRC" config user.name fixture
git -C "$SRC" config user.email fixture@example.invalid
n=1
while [ "$n" -le 32 ]; do
    printf 'fixture-%02d\n' "$n" >"$SRC/file-$(printf '%02d' "$n").txt"
    n=$((n + 1))
done
git -C "$SRC" add .
git -C "$SRC" commit --quiet -m fixture
git clone --quiet --bare "$SRC" "$BARE"
git clone --quiet "$BARE" "$CLONE"
test "$(git -C "$CLONE" ls-tree -r --name-only HEAD | wc -l | tr -d ' ')" = 32

echo "VM101_DIAGNOSTIC_COUNT=7"
echo "VM101_MANAGED_PATH_COUNT=32"
echo "EXACT_CLONE_FILE_COUNT=32"
echo "NON_AUTHORITATIVE_COUNT_ASSERTION_REMOVED=PASS"
echo "AUTHORITATIVE_COUNTS_RETAINED=PASS"
echo "RESULT=PASS_R07_COUNT_AUTHORITY_FIXTURE"
