mirror of https://github.com/lukechilds/node.git
Browse Source
This commit adds tests for several known issues. Refs: https://github.com/nodejs/node/issues/1901 Refs: https://github.com/nodejs/node/issues/728 Refs: https://github.com/nodejs/node/issues/4778 Refs: https://github.com/nodejs/node/issues/947 Refs: https://github.com/nodejs/node/issues/2734 PR-URL: https://github.com/nodejs/node/pull/5653 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>process-exit-stdio-flushing
cjihrig
9 years ago
5 changed files with 87 additions and 0 deletions
@ -0,0 +1,16 @@ |
|||||
|
'use strict'; |
||||
|
// Refs: https://github.com/nodejs/node/issues/1901
|
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const cp = require('child_process'); |
||||
|
const unicode = '中文测试'; // Length = 4, Byte length = 13
|
||||
|
|
||||
|
if (process.argv[2] === 'child') { |
||||
|
console.log(unicode); |
||||
|
} else { |
||||
|
const cmd = `${process.execPath} ${__filename} child`; |
||||
|
|
||||
|
cp.exec(cmd, { maxBuffer: 10 }, common.mustCall((err, stdout, stderr) => { |
||||
|
assert.strictEqual(err.message, 'stdout maxBuffer exceeded'); |
||||
|
})); |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
'use strict'; |
||||
|
// Refs: https://github.com/nodejs/node/issues/728
|
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const EventEmitter = require('events'); |
||||
|
const ee = new EventEmitter(); |
||||
|
|
||||
|
ee.on('__proto__', common.mustCall((data) => { |
||||
|
assert.strictEqual(data, 42); |
||||
|
})); |
||||
|
|
||||
|
ee.emit('__proto__', 42); |
@ -0,0 +1,17 @@ |
|||||
|
'use strict'; |
||||
|
// Refs: https://github.com/nodejs/node/issues/4778
|
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const fs = require('fs'); |
||||
|
const path = require('path'); |
||||
|
const file = path.join(common.tmpDir, 'test-extensions.foo.bar'); |
||||
|
|
||||
|
common.refreshTmpDir(); |
||||
|
fs.writeFileSync(file, '', 'utf8'); |
||||
|
require.extensions['.foo.bar'] = (module, path) => {}; |
||||
|
delete require.extensions['.foo.bar']; |
||||
|
require.extensions['.bar'] = common.mustCall((module, path) => { |
||||
|
assert.strictEqual(module.id, file); |
||||
|
assert.strictEqual(path, file); |
||||
|
}); |
||||
|
require(path.join(common.tmpDir, 'test-extensions')); |
@ -0,0 +1,23 @@ |
|||||
|
'use strict'; |
||||
|
// Refs: https://github.com/nodejs/node/issues/947
|
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const cp = require('child_process'); |
||||
|
|
||||
|
if (process.argv[2] === 'child') { |
||||
|
process.on('message', common.mustCall((msg) => { |
||||
|
assert.strictEqual(msg, 'go'); |
||||
|
console.log('logging should not cause a crash'); |
||||
|
process.disconnect(); |
||||
|
})); |
||||
|
} else { |
||||
|
const child = cp.fork(__filename, ['child'], {silent: true}); |
||||
|
|
||||
|
child.on('close', common.mustCall((exitCode, signal) => { |
||||
|
assert.strictEqual(exitCode, 0); |
||||
|
assert.strictEqual(signal, null); |
||||
|
})); |
||||
|
|
||||
|
child.stdout.destroy(); |
||||
|
child.send('go'); |
||||
|
} |
@ -0,0 +1,19 @@ |
|||||
|
'use strict'; |
||||
|
// Refs: https://github.com/nodejs/node/issues/2734
|
||||
|
require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const vm = require('vm'); |
||||
|
const sandbox = {}; |
||||
|
|
||||
|
Object.defineProperty(sandbox, 'prop', { |
||||
|
get() { |
||||
|
return 'foo'; |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
const descriptor = Object.getOwnPropertyDescriptor(sandbox, 'prop'); |
||||
|
const context = vm.createContext(sandbox); |
||||
|
const code = 'Object.getOwnPropertyDescriptor(this, "prop");'; |
||||
|
const result = vm.runInContext(code, context); |
||||
|
|
||||
|
assert.strictEqual(result, descriptor); |
Loading…
Reference in new issue