| 374 | } |
| 375 | |
| 376 | async function main() { |
| 377 | const bundles = parseArgs(process.argv.slice(2)); |
| 378 | const results = []; |
| 379 | for (const b of bundles) { |
| 380 | if (!fs.existsSync(b.bundle)) { |
| 381 | results.push({ name: b.name, bundle: b.bundle, ok: false, milestones: {}, reason: `bundle does not exist: ${b.bundle}` }); |
| 382 | continue; |
| 383 | } |
| 384 | try { |
| 385 | results.push(await runBundle(b)); |
| 386 | } catch (err) { |
| 387 | results.push({ |
| 388 | name: b.name, |
| 389 | bundle: b.bundle, |
| 390 | ok: false, |
| 391 | milestones: {}, |
| 392 | reason: `infrastructure error: ${err && err.stack || err}` |
| 393 | }); |
| 394 | } |
| 395 | } |
| 396 | |
| 397 | fs.writeFileSync(path.join(REPORT_DIR, 'report.json'), JSON.stringify(results, null, 2)); |
| 398 | const failed = summarise(results); |
| 399 | if (failed > 0) { |
| 400 | console.log(''); |
| 401 | console.log(`${failed}/${results.length} bundle(s) failed lifecycle test`); |
| 402 | process.exit(1); |
| 403 | } |
| 404 | } |
| 405 | |
| 406 | await main(); |