| var test = require('tap').test; |
| var spawn = require('child_process').spawn; |
| var concat = require('concat-stream'); |
| var path = require('path'); |
| var fs = require('fs'); |
| var vm = require('vm'); |
| |
| var temp = require('temp'); |
| temp.track(); |
| var tmpdir = temp.mkdirSync({prefix: 'browserify-test'}); |
| var pubdir = path.join(tmpdir, 'public'); |
| |
| fs.mkdirSync(pubdir); |
| fs.writeFileSync( |
| path.join(tmpdir, 'robot.js'), |
| fs.readFileSync(path.join(__dirname, 'externalize/robot.js')) |
| ); |
| fs.writeFileSync( |
| path.join(tmpdir, 'beep.js'), |
| fs.readFileSync(path.join(__dirname, 'externalize/beep.js')) |
| ); |
| fs.writeFileSync( |
| path.join(tmpdir, 'boop.js'), |
| fs.readFileSync(path.join(__dirname, 'externalize/boop.js')) |
| ); |
| |
| test('externalize bin', function (t) { |
| t.plan(5); |
| |
| var commands = [ |
| [ '-r', './robot.js', '-o', path.join(pubdir, 'common.js') ], |
| [ '-x', './robot.js', 'beep.js', '-o', path.join(pubdir, 'beep.js') ], |
| [ '-x', './robot.js', 'boop.js', '-o', path.join(pubdir, 'boop.js') ] |
| ]; |
| (function next () { |
| if (commands.length === 0) { |
| var common = fs.readFileSync(path.join(pubdir, 'common.js')); |
| var beep = fs.readFileSync(path.join(pubdir, 'beep.js')); |
| var boop = fs.readFileSync(path.join(pubdir, 'boop.js')); |
| |
| vm.runInNewContext(common + beep, { |
| console: { log: function (msg) { t.equal(msg, 'BEEP!') } } |
| }); |
| vm.runInNewContext(common + boop, { |
| console: { log: function (msg) { t.equal(msg, 'BOOP!') } } |
| }); |
| } |
| else { |
| var args = commands.shift(); |
| args.unshift(path.join(__dirname, '../bin/cmd.js')); |
| var ps = spawn(process.execPath, args, { cwd: tmpdir }); |
| ps.stderr.pipe(process.stderr); |
| ps.on('exit', function (code) { |
| t.equal(code, 0, 'exit code'); |
| next() |
| }); |
| } |
| })(); |
| }); |