mirror of
https://github.com/nexu-io/open-design.git
synced 2026-09-20 06:15:06 +08:00
0bf1b6d6b8
* fix(tools-pack): use junctions for Windows standalone peer deps * fix(desktop): expose IPC during startup * fix(tools-pack): preserve Windows inspect diagnostics * fix(tools-pack): report Windows inspect status errors * fix(packaged): use Electron net fetch for app protocol * fix(packaged): load Windows renderer from web sidecar * fix(desktop): show Windows packaged window during startup * fix(packaged): disable Windows GPU startup * fix(tools-pack): keep Windows core smoke observable * fix(packaged): remove Windows startup probes * fix(tools-pack): trace Windows desktop IPC status * fix(tools-pack): add Windows IPC diagnose loop * fix(release): default beta-s Windows updater feed * chore: clean merged test eof * refactor(release): unify prerelease channel model * chore(release): close prerelease doc escape hatches * refactor(release): converge release channel workflows * fix(release): install toolchain in metadata jobs * fix(release): build release package before contracts * chore(release): bump development version to 0.10.1 * fix(e2e): seed windows packaged smoke runtime config * fix(release): install toolchain for metadata publish * fix(release): materialize betas metadata checkout * chore(release): bump development version to 0.10.2 * fix(release): allow betas metadata cold start from s3 * fix(e2e): support betas packaged update scenarios * fix(release): pass betas channel into packaged smoke * fix(release): set betas channel during self-hosted builds * fix(release): verify counted channel reservations * fix(release): use pnpm cmd for betas windows publish * fix(release): add betas manifest artifact fallback * fix(release): skip beta-s public metadata fetch * fix(release): read beta-s manifests from storage * fix(release): cache beta windows tools-pack builds * fix(release): inline beta mac tools-pack builds * fix(pack): deep sign unsigned mac bundles * docs(pack): document payload-first beta updater validation * fix(release): align preview tools-pack cache flow * fix(release): align prerelease tools-pack cache flow * fix(release): pass github token to prerelease metadata * fix(release): setup pnpm before feishu notify * fix(release): add stable dry-run prepublish flow * fix(release): accept completed prerelease metadata gate * fix(release): require stable release branches * fix(release): converge r2 access checks * fix(updater): use release channel parser for defaults * fix(updater): harden windows payload relaunch * fix(release): converge updater smoke fixture contract * test(e2e): require silent updater fixture output * fix(release): align stable windows smoke build path * fix(ci): include release workspace in validation * fix(ci): repair release validation lanes Generated-By: looper 0.9.10+codex.autoclean (runner=fixer, agent=codex) * fix(ci): restore zero-install Feishu notification Generated-By: looper 0.9.10+codex.autoclean (runner=fixer, agent=codex) --------- Co-authored-by: Looper <looper@noreply.github.com>
89 lines
2.9 KiB
TypeScript
89 lines
2.9 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
APP_VERSION_FALLBACK,
|
|
isPackagedRuntime,
|
|
resolveAppVersionInfo,
|
|
} from '../src/app-version.js';
|
|
|
|
describe('app version helpers', () => {
|
|
it('resolves version info from package metadata', () => {
|
|
expect(resolveAppVersionInfo({
|
|
packageMetadata: { version: '1.2.3' },
|
|
env: {},
|
|
resourcesPath: undefined,
|
|
execPath: '/usr/local/bin/node',
|
|
platform: 'linux',
|
|
arch: 'x64',
|
|
})).toEqual({
|
|
version: '1.2.3',
|
|
channel: 'development',
|
|
packaged: false,
|
|
platform: 'linux',
|
|
arch: 'x64',
|
|
});
|
|
});
|
|
|
|
it('uses a safe fallback when package metadata is missing', () => {
|
|
expect(resolveAppVersionInfo({ packageMetadata: null, env: {} }).version).toBe(APP_VERSION_FALLBACK);
|
|
});
|
|
|
|
it('prefers packaged app version metadata from the environment', () => {
|
|
expect(resolveAppVersionInfo({
|
|
packageMetadata: { version: '0.3.0' },
|
|
env: { OD_APP_VERSION: '0.3.1-beta.1' },
|
|
resourcesPath: '/Applications/Open Design.app/Contents/Resources',
|
|
execPath: '/Applications/Open Design.app/Contents/Resources/open-design/bin/node',
|
|
platform: 'darwin',
|
|
arch: 'arm64',
|
|
})).toEqual({
|
|
version: '0.3.1-beta.1',
|
|
channel: 'beta',
|
|
packaged: true,
|
|
platform: 'darwin',
|
|
arch: 'arm64',
|
|
});
|
|
});
|
|
|
|
it('detects packaged runtimes without sidecar protocol knowledge', () => {
|
|
expect(isPackagedRuntime({ resourcesPath: '/Applications/Open Design.app/Contents/Resources' })).toBe(true);
|
|
expect(isPackagedRuntime({
|
|
execPath: '/Applications/Open Design.app/Contents/Resources/open-design/bin/node',
|
|
platform: 'darwin',
|
|
})).toBe(true);
|
|
expect(isPackagedRuntime({
|
|
execPath: 'C:\\Users\\Ada\\AppData\\Local\\Programs\\Open Design\\resources\\open-design\\bin\\node.exe',
|
|
platform: 'win32',
|
|
})).toBe(true);
|
|
expect(isPackagedRuntime({
|
|
execPath: '/opt/Open Design/resources/open-design/bin/node',
|
|
platform: 'linux',
|
|
})).toBe(true);
|
|
expect(isPackagedRuntime({ execPath: '/usr/local/bin/node', platform: 'linux' })).toBe(false);
|
|
});
|
|
|
|
it('honors an explicit release channel', () => {
|
|
expect(resolveAppVersionInfo({
|
|
packageMetadata: { version: '1.2.3' },
|
|
env: { OD_RELEASE_CHANNEL: 'beta' },
|
|
}).channel).toBe('beta');
|
|
});
|
|
|
|
it('infers prerelease channel from semver metadata', () => {
|
|
expect(resolveAppVersionInfo({
|
|
packageMetadata: { version: '0.1.0-beta.6' },
|
|
env: {},
|
|
}).channel).toBe('beta');
|
|
});
|
|
|
|
it('infers prerelease and preview release channels from app versions', () => {
|
|
expect(resolveAppVersionInfo({
|
|
packageMetadata: { version: '0.8.0-prerelease.2' },
|
|
env: {},
|
|
}).channel).toBe('prerelease');
|
|
expect(resolveAppVersionInfo({
|
|
packageMetadata: { version: '0.8.0-preview.1' },
|
|
env: {},
|
|
}).channel).toBe('preview');
|
|
});
|
|
});
|