Skip to content

Commit

Permalink
test: spawn new processes in vm-cached-data
Browse files Browse the repository at this point in the history
V8 may start caching scripts from the first run soon. Preventively
execute scripts in another process to ensure no test failures due to
an update in the future.

See: #6258
  • Loading branch information
indutny committed Apr 19, 2016
1 parent 57f0595 commit 7c07bd8
Showing 1 changed file with 24 additions and 9 deletions.
33 changes: 24 additions & 9 deletions test/parallel/test-vm-cached-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,36 @@
require('../common');
const assert = require('assert');
const vm = require('vm');
const spawnSync = require('child_process').spawnSync;
const Buffer = require('buffer').Buffer;

function getSource(tag) {
return `(function ${tag}() { return \'${tag}\'; })`;
}

function produce(source) {
const script = new vm.Script(source, {
produceCachedData: true
});
assert(!script.cachedDataProduced || script.cachedData instanceof Buffer);
function produce(source, count) {
if (!count)
count = 1;

const out = spawnSync(process.execPath, [ '-p', `
var assert = require('assert');
var vm = require('vm');
for (var i = 0; i < ${count}; i++) {
var script = new vm.Script(process.argv[1], {
produceCachedData: true
});
assert(!script.cachedDataProduced || script.cachedData instanceof Buffer);
if (script.cachedDataProduced)
script.cachedData.toString('base64');
}
`, source]);

assert.equal(out.status, 0, out.stderr + '');

return script.cachedData;
return new Buffer(out.stdout.toString(), 'base64');
}

function testProduceConsume() {
Expand All @@ -34,9 +51,7 @@ testProduceConsume();
function testProduceMultiple() {
const source = getSource('original');

produce(source);
produce(source);
produce(source);
produce(source, 3);
}
testProduceMultiple();

Expand Down

0 comments on commit 7c07bd8

Please sign in to comment.