ztrace
Version:
strace for node
46 lines (35 loc) • 1.31 kB
JavaScript
;
const cp = require('child_process');
const assert = require('assert');
const path = require('path');
const bin = path.resolve(__dirname, '..', 'bin', 'cli.js');
const fixtures = path.resolve(__dirname, 'fixtures');
describe('ztrace', function() {
it('shows what a program does', function(done) {
this.timeout(60000);
const proc = cp.spawn(process.execPath, [bin, path.join(fixtures, 'base.js')]);
let stderr = '';
proc.stderr.setEncoding('utf8');
proc.stderr.on('data', data => stderr += data);
proc.on('close', (code, signal) => {
assert.strictEqual(code, 0);
assert.ok(/^\s*fs\.readFile\(/m.test(stderr));
assert.ok(/^\s*fs\.writeFile\(/m.test(stderr));
done();
});
});
it('can apply selective hooking of modules', function(done) {
this.timeout(20000);
const proc = cp.spawn(process.execPath, [bin, '-e', 'fs.**', path.join(fixtures, 'base.js')]);
let stderr = '';
proc.stderr.setEncoding('utf8');
proc.stderr.on('data', data => stderr += data);
proc.on('close', (code, signal) => {
assert.strictEqual(code, 0);
assert.ok(/^\s*fs\.readFile\(/m.test(stderr));
assert.ok(/^\s*fs\.writeFile\(/m.test(stderr));
assert.ok(!/^\s*process\b/m.test(stderr));
done();
});
});
});