Files
orca/src/shared/local-build-compatibility.test.ts
T
Neil 10ca89ac8b feat(updater): switch to validated local mac builds (#10889)
* feat(updater): switch to validated local mac builds

* test(updater): cover local build recovery actions

* fix(types): keep local build contract in project sources
2026-07-27 16:36:39 -07:00

46 lines
1.5 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
getLocalBuildCompatibilityError,
parseLocalBuildCompatibility,
type LocalBuildCompatibility
} from './local-build-compatibility'
function target(overrides: Partial<LocalBuildCompatibility> = {}): LocalBuildCompatibility {
return {
formatVersion: 1,
appId: 'com.stablyai.orca',
buildId: '1.2.3-abc-arm64',
version: '1.2.3-local.1.abc',
commit: 'abc',
stateSchemaVersion: 1,
readableStateSchemaVersions: [1],
daemonProtocolVersion: 28,
attachableDaemonProtocolVersions: [27, 28],
platform: 'darwin',
architecture: 'arm64',
...overrides
}
}
describe('local build compatibility', () => {
it('rejects state and live-terminal protocol incompatibilities', () => {
expect(
getLocalBuildCompatibilityError(target({ readableStateSchemaVersions: [2] }), 1, [])
).toContain('cannot read Orca workspace state schema')
expect(getLocalBuildCompatibilityError(target(), 1, [26])).toContain(
'cannot reconnect terminal daemon protocol 26'
)
expect(getLocalBuildCompatibilityError(target(), 1, [27, 28])).toBeNull()
})
it('parses only bounded Orca compatibility contracts', () => {
expect(parseLocalBuildCompatibility(target())).toEqual(target())
expect(() => parseLocalBuildCompatibility(target({ appId: 'other.app' }))).toThrow(
'invalid compatibility metadata'
)
expect(() =>
parseLocalBuildCompatibility(target({ attachableDaemonProtocolVersions: [] }))
).toThrow('invalid compatibility metadata')
})
})