conductor/scripts/validate-schema.sh

33 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
schema="shared/schemas/conductor-project.schema.json"
validator="./node_modules/.bin/ajv"
valid_count=0
invalid_count=0
diagnostic_count=0
for fixture in examples/project-definitions/valid-*.json; do
"$validator" validate -s "$schema" -d "$fixture" --spec=draft2020 >/dev/null
valid_count=$((valid_count + 1))
done
for fixture in \
examples/project-definitions/invalid-dropdown-option-shape.json \
examples/project-definitions/invalid-missing-required.json; do
if "$validator" validate -s "$schema" -d "$fixture" --spec=draft2020 >/dev/null 2>&1; then
echo "Expected schema rejection but fixture passed: $fixture" >&2
exit 1
fi
invalid_count=$((invalid_count + 1))
done
for fixture in \
examples/project-definitions/invalid-template-malformed.json \
examples/project-definitions/invalid-template-missing-component.json; do
"$validator" validate -s "$schema" -d "$fixture" --spec=draft2020 >/dev/null
diagnostic_count=$((diagnostic_count + 1))
done
echo "Schema matrix passed: $valid_count valid, $invalid_count expected-invalid, $diagnostic_count diagnostic-invalid."