'use strict'; // This tests that user land snapshots works when the instance restored from // the snapshot is launched with --help, --check require('../common'); const assert = require('assert'); const tmpdir = require('../common/tmpdir'); const fixtures = require('../common/fixtures'); const { spawnSyncAndAssert, spawnSyncAndExit, spawnSyncAndExitWithoutError, } = require('../common/child_process'); const fs = require('fs'); tmpdir.refresh(); let snapshotScript = 'node:embedded_snapshot_main'; if (!process.config.variables.node_use_node_snapshot) { // Check that Node.js built without an embedded snapshot // exits with 9 when node:embedded_snapshot_main is specified // as snapshot entry point. spawnSyncAndExit(process.execPath, [ '--build-snapshot', snapshotScript, ], { cwd: tmpdir.path }, { status: 9, signal: null, stderr: /Node\.js was built without embedded snapshot/ }); snapshotScript = fixtures.path('empty.js'); } // By default, the snapshot blob path is cwd/snapshot.blob. { // Create the snapshot. spawnSyncAndExitWithoutError(process.execPath, [ '--build-snapshot', snapshotScript, ], { cwd: tmpdir.path }); const stats = fs.statSync(tmpdir.resolve('snapshot.blob')); assert(stats.isFile()); } tmpdir.refresh(); const blobPath = tmpdir.resolve('my-snapshot.blob'); { // Create the snapshot. spawnSyncAndExitWithoutError(process.execPath, [ '--snapshot-blob', blobPath, '--build-snapshot', snapshotScript, ], { cwd: tmpdir.path }); const stats = fs.statSync(blobPath); assert(stats.isFile()); } { // Check --help. spawnSyncAndAssert(process.execPath, [ '--snapshot-blob', blobPath, '--help', ], { cwd: tmpdir.path }, { stdout: /--help/ }); } { // Check -c. spawnSyncAndAssert(process.execPath, [ '--snapshot-blob', blobPath, '-c', fixtures.path('snapshot', 'marked.js'), ], { cwd: tmpdir.path }, { stderr: '', stdout: '', trim: true }); }