37 lines
934 B
Bash
37 lines
934 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# DEVOPS-CLI-43-003: parity diff for CLI golden outputs
|
|
|
|
EXPECTED_DIR=${EXPECTED_DIR:-"tests/goldens"}
|
|
ACTUAL_DIR=${ACTUAL_DIR:-"out/cli-goldens"}
|
|
CLI=${CLI:-"dotnet run --project src/Cli/StellaOps.Cli/StellaOps.Cli.csproj --no-build --"}
|
|
|
|
mkdir -p "$ACTUAL_DIR"
|
|
|
|
run_case() {
|
|
local name=$1
|
|
local args=$2
|
|
local outfile="${ACTUAL_DIR}/${name}.txt"
|
|
echo "[parity] running ${name}: ${args}"
|
|
$CLI $args > "$outfile"
|
|
}
|
|
|
|
run_case "help" "--help"
|
|
run_case "scan-help" "scan --help"
|
|
|
|
diffs=0
|
|
for expected in $(find "$EXPECTED_DIR" -name '*.txt'); do
|
|
rel=${expected#$EXPECTED_DIR/}
|
|
actual="${ACTUAL_DIR}/${rel}"
|
|
if ! diff -u "$expected" "$actual" > "${ACTUAL_DIR}/${rel}.diff" 2>/dev/null; then
|
|
echo "[parity] diff for $rel"
|
|
diffs=$((diffs+1))
|
|
else
|
|
rm -f "${ACTUAL_DIR}/${rel}.diff"
|
|
fi
|
|
done
|
|
|
|
echo "[parity] total diffs: $diffs"
|
|
echo "$diffs" > "${ACTUAL_DIR}/summary.txt"
|