From 7c07bd84d6df2776b2a31cf19e130ed55cadc0c8 Mon Sep 17 00:00:00 2001 From: Fedor Indutny Date: Tue, 19 Apr 2016 11:42:26 -0400 Subject: [PATCH 1/3] test: spawn new processes in vm-cached-data 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 --- test/parallel/test-vm-cached-data.js | 33 ++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/test/parallel/test-vm-cached-data.js b/test/parallel/test-vm-cached-data.js index 924f0826845e3a..980d391838d384 100644 --- a/test/parallel/test-vm-cached-data.js +++ b/test/parallel/test-vm-cached-data.js @@ -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() { @@ -34,9 +51,7 @@ testProduceConsume(); function testProduceMultiple() { const source = getSource('original'); - produce(source); - produce(source); - produce(source); + produce(source, 3); } testProduceMultiple(); From 85c7fb7c1e7b379617e251ce81dee1d0afacc7af Mon Sep 17 00:00:00 2001 From: Fedor Indutny Date: Wed, 20 Apr 2016 11:43:30 -0400 Subject: [PATCH 2/3] fix --- test/parallel/test-vm-cached-data.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-vm-cached-data.js b/test/parallel/test-vm-cached-data.js index 980d391838d384..2d15fb90b7731d 100644 --- a/test/parallel/test-vm-cached-data.js +++ b/test/parallel/test-vm-cached-data.js @@ -13,10 +13,11 @@ function produce(source, count) { if (!count) count = 1; - const out = spawnSync(process.execPath, [ '-p', ` + const out = spawnSync(process.execPath, [ '-e', ` var assert = require('assert'); var vm = require('vm'); + let data; for (var i = 0; i < ${count}; i++) { var script = new vm.Script(process.argv[1], { produceCachedData: true @@ -25,8 +26,9 @@ function produce(source, count) { assert(!script.cachedDataProduced || script.cachedData instanceof Buffer); if (script.cachedDataProduced) - script.cachedData.toString('base64'); + data = script.cachedData.toString('base64'); } + console.log(data); `, source]); assert.equal(out.status, 0, out.stderr + ''); From 56b1001454b42a4d1cfcdd83d273a0ae3420f263 Mon Sep 17 00:00:00 2001 From: Fedor Indutny Date: Wed, 20 Apr 2016 12:02:12 -0400 Subject: [PATCH 3/3] ... --- test/parallel/test-vm-cached-data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/parallel/test-vm-cached-data.js b/test/parallel/test-vm-cached-data.js index 2d15fb90b7731d..2ad1abe0d8c728 100644 --- a/test/parallel/test-vm-cached-data.js +++ b/test/parallel/test-vm-cached-data.js @@ -33,7 +33,7 @@ function produce(source, count) { assert.equal(out.status, 0, out.stderr + ''); - return new Buffer(out.stdout.toString(), 'base64'); + return Buffer.from(out.stdout.toString(), 'base64'); } function testProduceConsume() {