mirror of
https://github.com/nodejs/node.git
synced 2025-05-17 02:30:33 +00:00

PR-URL: https://github.com/nodejs/node/pull/20190 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
92 lines
2.1 KiB
JavaScript
92 lines
2.1 KiB
JavaScript
var tap = require('tap')
|
|
var pz = require('../promzard.js')
|
|
var spawn = require('child_process').spawn
|
|
|
|
tap.test('run the example', function (t) {
|
|
|
|
var example = require.resolve('../example/index.js')
|
|
var node = process.execPath
|
|
|
|
var expect = {
|
|
"name": "example",
|
|
"version": "0.0.0",
|
|
"description": "testing description",
|
|
"main": "test-entry.js",
|
|
"directories": {
|
|
"example": "example",
|
|
"test": "test"
|
|
},
|
|
"dependencies": {},
|
|
"devDependencies": {
|
|
"tap": "~0.2.5"
|
|
},
|
|
"scripts": {
|
|
"test": "tap test/*.js"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git://github.com/substack/example.git"
|
|
},
|
|
"homepage": "https://github.com/substack/example",
|
|
"keywords": [
|
|
"fugazi",
|
|
"function",
|
|
"waiting",
|
|
"room"
|
|
],
|
|
"author": {
|
|
"name": "James Halliday",
|
|
"email": "mail@substack.net",
|
|
"url": "http://substack.net"
|
|
},
|
|
"license": "MIT",
|
|
"engine": {
|
|
"node": ">=0.6"
|
|
}
|
|
}
|
|
|
|
console.error('%s %s', node, example)
|
|
var c = spawn(node, [example], { customFds: [-1,-1,-1] })
|
|
var output = ''
|
|
c.stdout.on('data', function (d) {
|
|
output += d
|
|
respond()
|
|
})
|
|
|
|
var actual = ''
|
|
c.stderr.on('data', function (d) {
|
|
actual += d
|
|
})
|
|
|
|
function respond () {
|
|
console.error('respond', output)
|
|
if (output.match(/description: $/)) {
|
|
c.stdin.write('testing description\n')
|
|
return
|
|
}
|
|
if (output.match(/entry point: \(index\.js\) $/)) {
|
|
c.stdin.write('test-entry.js\n')
|
|
return
|
|
}
|
|
if (output.match(/keywords: $/)) {
|
|
c.stdin.write('fugazi function waiting room\n')
|
|
// "read" module is weird on node >= 0.10 when not a TTY
|
|
// requires explicit ending for reasons.
|
|
// could dig in, but really just wanna make tests pass, whatever.
|
|
c.stdin.end()
|
|
return
|
|
}
|
|
}
|
|
|
|
c.on('exit', function () {
|
|
console.error('exit event')
|
|
})
|
|
|
|
c.on('close', function () {
|
|
console.error('actual', actual)
|
|
actual = JSON.parse(actual)
|
|
t.deepEqual(actual, expect)
|
|
t.end()
|
|
})
|
|
})
|