server-monitor-manager/tests/acceptance/test_previous_schema_contract.sh

42 lines
1.7 KiB
Bash

#!/usr/bin/env bash
set -Eeuo pipefail
IFS=$'\n\t'
root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)"
test_source="$root/tests/ServerMonitorManager.Control.Tests/SchemaCompatibilityTests.cs"
workflow="$root/.github/workflows/linux-control-agent.yml"
arm64_test="$root/tests/acceptance/test_previous_schema_arm64.sh"
fixture="$root/tests/fixtures/control-v0.1.0-alpha.7.db"
require_contains() {
local text="$1" file="$2"
grep -Fq "$text" "$file" || {
printf 'required compatibility evidence is missing from %s: %s\n' "$file" "$text" >&2
exit 1
}
}
[[ -s "$fixture" ]] || {
printf '%s\n' 'published previous-schema database fixture is missing' >&2
exit 1
}
require_contains 'PublishedAlpha7DatabaseRemainsReadableAndRestorable' "$test_source"
require_contains 'Assert.Equal(schemaVersionBefore, schemaVersionAfter);' "$test_source"
require_contains 'ListAgentsAsync' "$test_source"
require_contains 'ResolveIdentityAsync' "$test_source"
require_contains 'ListLinksAsync' "$test_source"
require_contains 'GetProvisioningJobAsync' "$test_source"
require_contains 'FROM audit' "$test_source"
require_contains 'CreateAsync' "$test_source"
require_contains 'RestoreAsync' "$test_source"
if grep -Fq 'if (!File.Exists' "$test_source" || grep -Fq 'Generate reference alpha.7' "$workflow"; then
printf '%s\n' 'previous-schema coverage is still skip- or generation-prone' >&2
exit 1
fi
require_contains 'Publish control arm64 compatibility binary' "$workflow"
require_contains 'Verify previous schema with arm64 published Control' "$workflow"
require_contains 'export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1' "$arm64_test"
printf '%s\n' 'PREVIOUS_SCHEMA_CONTRACT=PASS'