38 lines
1.4 KiB
JavaScript
38 lines
1.4 KiB
JavaScript
import { spawnSync } from 'node:child_process'
|
|
|
|
function option(name) {
|
|
const index = process.argv.indexOf(name)
|
|
return index >= 0 ? process.argv[index + 1] : ''
|
|
}
|
|
|
|
function normalizeOrigin(value, name) {
|
|
if (!value) throw new Error(`缺少 ${name}`)
|
|
const url = new URL(value)
|
|
if (!['http:', 'https:'].includes(url.protocol) || url.username || url.password || url.pathname !== '/') {
|
|
throw new Error(`${name} 必须是无账号、无路径的 HTTP(S) origin`)
|
|
}
|
|
return url.origin
|
|
}
|
|
|
|
const environment = option('--environment')
|
|
if (environment !== 'test') throw new Error('本入口仅允许显式指定 --environment test')
|
|
const gateway = normalizeOrigin(option('--gateway') || process.env.ADMIN_TEST_GATEWAY, '--gateway')
|
|
const password = process.env.CHONGCHONG_ADMIN_ACCEPTANCE_PASSWORD
|
|
if (!password) throw new Error('缺少 CHONGCHONG_ADMIN_ACCEPTANCE_PASSWORD')
|
|
|
|
const result = spawnSync('pnpm', ['exec', 'vitest', 'run', '--config', 'vitest.phase4-test.config.ts'], {
|
|
cwd: process.cwd(),
|
|
stdio: 'inherit',
|
|
shell: process.platform === 'win32',
|
|
env: {
|
|
...process.env,
|
|
ADMIN_PHASE4_LIVE: '1',
|
|
ADMIN_ACCEPTANCE_USERNAME: process.env.ADMIN_ACCEPTANCE_USERNAME || 'platform_admin',
|
|
ADMIN_ACCEPTANCE_PASSWORD: password,
|
|
ADMIN_TEST_GATEWAY: gateway,
|
|
VITE_API_BASE_URL: `${gateway}/api`,
|
|
},
|
|
})
|
|
if (result.error) throw result.error
|
|
process.exit(result.status ?? 1)
|