cc-haha/scripts/pr/release-workflow.test.ts
程序员阿江(Relakkes) 1886d9c288 Keep Windows sidecar builds on the runner work drive
Windows GitHub runners keep the checkout and Bun install cache on different drives, which can trip Bun's baseline compile-target extraction before Tauri packaging starts. Point desktop sidecar builds at the runner temp cache so dev and release workflows can still use the Windows x64 baseline runtime needed for older CPUs.

Constraint: Bun upstream still has an open Windows cross-drive extraction issue for compile target downloads.
Rejected: Revert to bun-windows-x64 | would reintroduce the older-CPU Illegal Instruction failure class.
Confidence: high
Scope-risk: narrow
Directive: Keep desktop dev and release sidecar build cache handling aligned until Bun's Windows extraction fix is released and verified in Actions.
Tested: bun test scripts/pr/release-workflow.test.ts; cd desktop && bun run test -- --run scripts/build-sidecars.test.ts; bun run check:policy; cd desktop && BUN_INSTALL_CACHE_DIR=/tmp/cc-haha-bun-install-cache TAURI_ENV_TARGET_TRIPLE=x86_64-pc-windows-msvc bun run build:sidecars
Not-tested: GitHub Actions Windows runner rerun after push.
2026-05-19 01:46:17 +08:00

33 lines
1.2 KiB
TypeScript

import { describe, expect, test } from 'bun:test'
import { readFileSync } from 'node:fs'
describe('release desktop workflow', () => {
test('build job runs directly without quality preflight dependency', () => {
const workflow = readFileSync('.github/workflows/release-desktop.yml', 'utf8')
expect(workflow).not.toContain('quality-preflight:')
expect(workflow).not.toContain('run: bun run quality:gate --mode pr')
expect(workflow).not.toContain('needs: quality-preflight')
expect(workflow).toContain('name: Build (${{ matrix.label }})')
})
test('desktop build workflows keep Bun compile cache on the runner work drive', () => {
for (const workflowPath of [
'.github/workflows/build-desktop-dev.yml',
'.github/workflows/release-desktop.yml',
]) {
const workflow = readFileSync(workflowPath, 'utf8')
const buildSidecarsStep = workflow.match(
/- name: Build sidecars[\s\S]*?run: bun run build:sidecars/,
)?.[0]
expect(buildSidecarsStep, workflowPath).toContain(
'BUN_INSTALL_CACHE_DIR: ${{ runner.temp }}/bun-install-cache',
)
expect(buildSidecarsStep, workflowPath).toContain(
'TAURI_ENV_TARGET_TRIPLE: ${{ matrix.rust_target }}',
)
}
})
})