diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml new file mode 100644 index 0000000..4363518 --- /dev/null +++ b/.github/workflows/checks.yml @@ -0,0 +1,20 @@ +name: Checks + +on: + pull_request: + workflow_dispatch: + +permissions: + contents: read + +jobs: + bridge-contract: + runs-on: ubuntu-latest + timeout-minutes: 2 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Verify frozen assignment contract + run: node scripts/test-frozen-assignment-contract.mjs diff --git a/Editor/QonversionDependencies.xml b/Editor/QonversionDependencies.xml index 5add313..07a854c 100644 --- a/Editor/QonversionDependencies.xml +++ b/Editor/QonversionDependencies.xml @@ -1,11 +1,11 @@ - + - + diff --git a/Runtime/Scripts/Dto/RemoteConfigurationSource.cs b/Runtime/Scripts/Dto/RemoteConfigurationSource.cs index 9e80b92..a45f20b 100644 --- a/Runtime/Scripts/Dto/RemoteConfigurationSource.cs +++ b/Runtime/Scripts/Dto/RemoteConfigurationSource.cs @@ -33,6 +33,10 @@ public RemoteConfigurationAssignmentType FormatAssignmentType(object typeValue) { return RemoteConfigurationAssignmentType.Manual; } + else if (type == "frozen") + { + return RemoteConfigurationAssignmentType.Frozen; + } return RemoteConfigurationAssignmentType.Unknown; } @@ -70,7 +74,8 @@ public enum RemoteConfigurationAssignmentType { Unknown, Auto, - Manual + Manual, + Frozen } public enum RemoteConfigurationSourceType diff --git a/scripts/test-frozen-assignment-contract.mjs b/scripts/test-frozen-assignment-contract.mjs new file mode 100644 index 0000000..54c64ae --- /dev/null +++ b/scripts/test-frozen-assignment-contract.mjs @@ -0,0 +1,13 @@ +import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; + +const source = readFileSync("Runtime/Scripts/Dto/RemoteConfigurationSource.cs", "utf8"); +const dependencies = readFileSync("Editor/QonversionDependencies.xml", "utf8"); + +assert.match(source, /type\s*==\s*"frozen"[\s\S]*RemoteConfigurationAssignmentType\.Frozen/); +assert.match(source, /return\s+RemoteConfigurationAssignmentType\.Unknown/); +assert.match(source, /enum\s+RemoteConfigurationAssignmentType[\s\S]*Frozen/); +assert.match(dependencies, /io\.qonversion:sandwich:7\.13\.0/); +assert.match(dependencies, /QonversionSandwich" version="7\.13\.0"/); + +console.log("Frozen assignment bridge contract is intact.");