'use strict'; const tmpdir = require('../common/tmpdir'); const { spawnSync } = require('child_process'); const path = require('path'); const fs = require('fs'); const assert = require('assert'); function buildSnapshot(entry, env) { const child = spawnSync(process.execPath, [ '--snapshot-blob', path.join(tmpdir.path, 'snapshot.blob'), '--build-snapshot', entry, ], { cwd: tmpdir.path, env: { ...process.env, ...env, }, }); const stderr = child.stderr.toString(); const stdout = child.stdout.toString(); console.log('[stderr]'); console.log(stderr); console.log('[stdout]'); console.log(stdout); assert.strictEqual(child.status, 0); const stats = fs.statSync(path.join(tmpdir.path, 'snapshot.blob')); assert(stats.isFile()); return { child, stderr, stdout }; } function runWithSnapshot(entry, env) { const args = ['--snapshot-blob', path.join(tmpdir.path, 'snapshot.blob')]; if (entry !== undefined) { args.push(entry); } const child = spawnSync(process.execPath, args, { cwd: tmpdir.path, env: { ...process.env, ...env, } }); const stderr = child.stderr.toString(); const stdout = child.stdout.toString(); console.log('[stderr]'); console.log(stderr); console.log('[stdout]'); console.log(stdout); assert.strictEqual(child.status, 0); return { child, stderr, stdout }; } module.exports = { buildSnapshot, runWithSnapshot, };