'use strict'; // This tests that user land snapshots works when the instance restored from // the snapshot is launched with -p and -e require('../common'); const assert = require('assert'); const { spawnSync } = require('child_process'); const tmpdir = require('../common/tmpdir'); const fixtures = require('../common/fixtures'); const fs = require('fs'); tmpdir.refresh(); const blobPath = tmpdir.resolve('snapshot.blob'); const file = fixtures.path('snapshot', 'mutate-fs.js'); { // Create the snapshot. const child = spawnSync(process.execPath, [ '--snapshot-blob', blobPath, '--build-snapshot', file, ], { cwd: tmpdir.path }); if (child.status !== 0) { console.log(child.stderr.toString()); console.log(child.stdout.toString()); assert.strictEqual(child.status, 0); } const stats = fs.statSync(blobPath); assert(stats.isFile()); } { // Check -p works. const child = spawnSync(process.execPath, [ '--snapshot-blob', blobPath, '-p', 'require("fs").foo', ], { cwd: tmpdir.path }); if (child.status !== 0) { console.log(child.stderr.toString()); console.log(child.stdout.toString()); assert.strictEqual(child.status, 0); } assert(/I am from the snapshot/.test(child.stdout.toString())); } { // Check -e works. const child = spawnSync(process.execPath, [ '--snapshot-blob', blobPath, '-e', 'console.log(require("fs").foo)', ], { cwd: tmpdir.path }); if (child.status !== 0) { console.log(child.stderr.toString()); console.log(child.stdout.toString()); assert.strictEqual(child.status, 0); } assert(/I am from the snapshot/.test(child.stdout.toString())); }