Skip to content

Commit

Permalink
test: use expectSyncExit{WithErrors} in snapshot tests
Browse files Browse the repository at this point in the history
..and replace the similar code added for logging.
  • Loading branch information
joyeecheung committed Aug 4, 2023
1 parent 0433f3c commit c74649d
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 87 deletions.
17 changes: 7 additions & 10 deletions test/parallel/test-snapshot-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const assert = require('assert');
const { spawnSync } = require('child_process');
const tmpdir = require('../common/tmpdir');
const fixtures = require('../common/fixtures');
const { expectSyncExitWithoutError } = require('../common/child_process');
const path = require('path');
const fs = require('fs');

Expand Down Expand Up @@ -37,11 +38,7 @@ const entry = fixtures.path('snapshot', 'v8-startup-snapshot-api.js');
], {
cwd: tmpdir.path
});
if (child.status !== 0) {
console.log(child.stderr.toString());
console.log(child.stdout.toString());
assert.strictEqual(child.status, 0);
}
expectSyncExitWithoutError(child);
const stats = fs.statSync(path.join(tmpdir.path, 'snapshot.blob'));
assert(stats.isFile());
}
Expand All @@ -59,9 +56,9 @@ const entry = fixtures.path('snapshot', 'v8-startup-snapshot-api.js');
}
});

const stdout = child.stdout.toString().trim();
const stderr = child.stderr.toString().trim();
assert.strictEqual(stderr, 'Reading book1.en_US.txt');
assert.strictEqual(stdout, 'This is book1.en_US.txt');
assert.strictEqual(child.status, 0);
expectSyncExitWithoutError(child, {
stderr: 'Reading book1.en_US.txt',
stdout: 'This is book1.en_US.txt',
trim: true
});
}
42 changes: 15 additions & 27 deletions test/parallel/test-snapshot-basic.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const assert = require('assert');
const { spawnSync } = require('child_process');
const tmpdir = require('../common/tmpdir');
const fixtures = require('../common/fixtures');
const { expectSyncExitWithoutError, expectSyncExit } = require('../common/child_process');
const path = require('path');
const fs = require('fs');

Expand All @@ -16,7 +17,7 @@ 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 1 when node:embedded_snapshot_main is specified
// exits with 9 when node:embedded_snapshot_main is specified
// as snapshot entry point.
const child = spawnSync(process.execPath, [
'--build-snapshot',
Expand All @@ -25,10 +26,11 @@ if (!process.config.variables.node_use_node_snapshot) {
cwd: tmpdir.path
});

assert.match(
child.stderr.toString(),
/Node\.js was built without embedded snapshot/);
assert.strictEqual(child.status, 9);
expectSyncExit(child, {
status: 9,
signal: null,
stderr: /Node\.js was built without embedded snapshot/
});

snapshotScript = fixtures.path('empty.js');
}
Expand All @@ -42,12 +44,7 @@ if (!process.config.variables.node_use_node_snapshot) {
], {
cwd: tmpdir.path
});
if (child.status !== 0) {
console.log(child.stderr.toString());
console.log(child.stdout.toString());
console.log(child.signal);
assert.strictEqual(child.status, 0);
}
expectSyncExitWithoutError(child);
const stats = fs.statSync(path.join(tmpdir.path, 'snapshot.blob'));
assert(stats.isFile());
}
Expand All @@ -64,12 +61,7 @@ const blobPath = path.join(tmpdir.path, 'my-snapshot.blob');
], {
cwd: tmpdir.path
});
if (child.status !== 0) {
console.log(child.stderr.toString());
console.log(child.stdout.toString());
console.log(child.signal);
assert.strictEqual(child.status, 0);
}
expectSyncExitWithoutError(child);
const stats = fs.statSync(blobPath);
assert(stats.isFile());
}
Expand All @@ -83,13 +75,7 @@ const blobPath = path.join(tmpdir.path, 'my-snapshot.blob');
], {
cwd: tmpdir.path
});

if (child.status !== 0) {
console.log(child.stderr.toString());
console.log(child.stdout.toString());
console.log(child.signal);
assert.strictEqual(child.status, 0);
}
expectSyncExitWithoutError(child);

assert(child.stdout.toString().includes('--help'));
}
Expand All @@ -106,7 +92,9 @@ const blobPath = path.join(tmpdir.path, 'my-snapshot.blob');
});

// Check that it is a noop.
assert.strictEqual(child.stdout.toString().trim(), '');
assert.strictEqual(child.stderr.toString().trim(), '');
assert.strictEqual(child.status, 0);
expectSyncExitWithoutError(child, {
stderr: '',
stdout: '',
trim: true
});
}
96 changes: 46 additions & 50 deletions test/parallel/test-snapshot-warning.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const assert = require('assert');
const { spawnSync } = require('child_process');
const tmpdir = require('../common/tmpdir');
const fixtures = require('../common/fixtures');
const { expectSyncExitWithoutError } = require('../common/child_process');
const path = require('path');
const fs = require('fs');

Expand All @@ -28,12 +29,7 @@ tmpdir.refresh();
], {
cwd: tmpdir.path
});
console.log('[stderr]:', child.stderr.toString());
console.log('[stdout]:', child.stdout.toString());
if (child.status !== 0) {
console.log(child.signal);
assert.strictEqual(child.status, 0);
}
expectSyncExitWithoutError(child);
const stats = fs.statSync(blobPath);
assert(stats.isFile());

Expand All @@ -44,14 +40,14 @@ tmpdir.refresh();
], {
cwd: tmpdir.path
});
console.log('[stderr]:', child.stderr.toString());
console.log('[stdout]:', child.stdout.toString());
if (child.status !== 0) {
console.log(child.signal);
assert.strictEqual(child.status, 0);
}
const match = child.stderr.toString().match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
expectSyncExitWithoutError(child, {
stderr(output) {
const match = output.match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
return true;
}
});

}

tmpdir.refresh();
Expand All @@ -66,18 +62,17 @@ tmpdir.refresh();
], {
cwd: tmpdir.path
});
console.log('[stderr]:', child.stderr.toString());
console.log('[stdout]:', child.stdout.toString());
if (child.status !== 0) {
console.log(child.signal);
assert.strictEqual(child.status, 0);
}
expectSyncExitWithoutError(child, {
stderr(output) {
let match = output.match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
match = output.match(/Use `node --trace-warnings/g);
assert.strictEqual(match.length, 1);
return true;
}
});
const stats = fs.statSync(blobPath);
assert(stats.isFile());
let match = child.stderr.toString().match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
match = child.stderr.toString().match(/Use `node --trace-warnings/g);
assert.strictEqual(match.length, 1);

child = spawnSync(process.execPath, [
'--snapshot-blob',
Expand All @@ -86,17 +81,17 @@ tmpdir.refresh();
], {
cwd: tmpdir.path
});
console.log('[stderr]:', child.stderr.toString());
console.log('[stdout]:', child.stdout.toString());
if (child.status !== 0) {
console.log(child.signal);
assert.strictEqual(child.status, 0);
}
// Warnings should not be handled more than once.
match = child.stderr.toString().match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
match = child.stderr.toString().match(/Use `node --trace-warnings/g);
assert.strictEqual(match.length, 1);

expectSyncExitWithoutError(child, {
stderr(output) {
// Warnings should not be handled more than once.
let match = output.match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
match = output.match(/Use `node --trace-warnings/g);
assert.strictEqual(match.length, 1);
return true;
}
});
}

tmpdir.refresh();
Expand All @@ -115,25 +110,26 @@ tmpdir.refresh();
], {
cwd: tmpdir.path
});
console.log('[stderr]:', child.stderr.toString());
console.log('[stdout]:', child.stdout.toString());
if (child.status !== 0) {
console.log(child.signal);
assert.strictEqual(child.status, 0);
}

expectSyncExitWithoutError(child, {
stderr(output) {
assert.doesNotMatch(output, /Warning: test warning/);
}
});

const stats = fs.statSync(blobPath);
assert(stats.isFile());

const warnings1 = fs.readFileSync(warningFile1, 'utf8');
console.log(warningFile1, ':', warnings1);
let match = warnings1.match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
match = warnings1.match(/Use `node --trace-warnings/g);
assert.strictEqual(match.length, 1);
assert.doesNotMatch(child.stderr.toString(), /Warning: test warning/);

fs.rmSync(warningFile1, {
maxRetries: 3, recursive: false, force: true
});

child = spawnSync(process.execPath, [
'--snapshot-blob',
blobPath,
Expand All @@ -143,12 +139,13 @@ tmpdir.refresh();
], {
cwd: tmpdir.path
});
console.log('[stderr]:', child.stderr.toString());
console.log('[stdout]:', child.stdout.toString());
if (child.status !== 0) {
console.log(child.signal);
assert.strictEqual(child.status, 0);
}

expectSyncExitWithoutError(child, {
stderr(output) {
assert.doesNotMatch(output, /Warning: test warning/);
return true;
}
});
assert(!fs.existsSync(warningFile1));

const warnings2 = fs.readFileSync(warningFile2, 'utf8');
Expand All @@ -157,5 +154,4 @@ tmpdir.refresh();
assert.strictEqual(match.length, 1);
match = warnings2.match(/Use `node --trace-warnings/g);
assert.strictEqual(match.length, 1);
assert.doesNotMatch(child.stderr.toString(), /Warning: test warning/);
}

0 comments on commit c74649d

Please sign in to comment.