统一原生壳验收门禁
新增 check:native-shells 根级验收脚本 将 H5 HostBridge 与 Expo、Tauri 壳检查串成统一门禁 把原生壳验收入口写入方案文档和共享工作流
This commit is contained in:
72
scripts/check-native-shells.mjs
Normal file
72
scripts/check-native-shells.mjs
Normal file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import {spawnSync} from 'node:child_process';
|
||||
|
||||
const npmCommand = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
||||
|
||||
const h5HostBridgeTests = [
|
||||
'packages/shared/src/contracts/hostBridge.test.ts',
|
||||
'src/services/host-bridge/hostBridge.test.ts',
|
||||
'src/services/host-bridge/nativeAppHostBridge.test.ts',
|
||||
'src/App.test.tsx',
|
||||
'src/components/common/PublishShareModal.test.tsx',
|
||||
'src/services/runtimeAudioFeedback.test.ts',
|
||||
'src/services/clipboard.test.ts',
|
||||
'src/services/appTitle.test.ts',
|
||||
];
|
||||
|
||||
const steps = [
|
||||
{
|
||||
label: 'h5-host-bridge-tests',
|
||||
command: npmCommand,
|
||||
args: ['run', 'test', '--', ...h5HostBridgeTests],
|
||||
},
|
||||
{
|
||||
label: 'mobile-shell-typecheck',
|
||||
command: npmCommand,
|
||||
args: ['run', 'mobile-shell:typecheck'],
|
||||
},
|
||||
{
|
||||
label: 'mobile-shell-test',
|
||||
command: npmCommand,
|
||||
args: ['run', 'mobile-shell:test'],
|
||||
},
|
||||
{
|
||||
label: 'desktop-shell-typecheck',
|
||||
command: npmCommand,
|
||||
args: ['run', 'desktop-shell:typecheck'],
|
||||
},
|
||||
{
|
||||
label: 'desktop-shell-test',
|
||||
command: npmCommand,
|
||||
args: ['run', 'desktop-shell:test'],
|
||||
},
|
||||
];
|
||||
|
||||
for (const step of steps) {
|
||||
console.log(`[check:native-shells] ${step.label}`);
|
||||
const result = spawnSync(step.command, step.args, {
|
||||
cwd: process.cwd(),
|
||||
stdio: 'inherit',
|
||||
});
|
||||
|
||||
if (result.error) {
|
||||
console.error(
|
||||
`[check:native-shells] failed to start ${step.label}: ${result.error.message}`,
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (result.signal) {
|
||||
console.error(
|
||||
`[check:native-shells] ${step.label} was terminated by signal ${result.signal}`,
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if ((result.status ?? 0) !== 0) {
|
||||
process.exit(result.status ?? 1);
|
||||
}
|
||||
}
|
||||
|
||||
console.log('[check:native-shells] OK');
|
||||
Reference in New Issue
Block a user