blob: ad1c92df9c4c0593488fba1c6f941016880dfd51 [file] [log] [blame]
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()
})
})