42 lines
1.7 KiB
Bash
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'
|