|
| 1 | +var join = require('path').join |
| 2 | +var statSync = require('graceful-fs').statSync |
| 3 | +var writeFileSync = require('graceful-fs').writeFileSync |
| 4 | + |
| 5 | +var mkdirp = require('mkdirp') |
| 6 | +var mr = require('npm-registry-mock') |
| 7 | +var osenv = require('osenv') |
| 8 | +var rimraf = require('rimraf') |
| 9 | +var test = require('tap').test |
| 10 | + |
| 11 | +var common = require('../common-tap') |
| 12 | + |
| 13 | +var pkg = join(__dirname, 'run-script') |
| 14 | +var installed = join(pkg, 'node_modules', 'underscore', 'package.json') |
| 15 | + |
| 16 | +var json = { |
| 17 | + name: 'npm-it-test', |
| 18 | + dependencies: { |
| 19 | + underscore: '1.5.1' |
| 20 | + }, |
| 21 | + scripts: { |
| 22 | + test: 'echo hax' |
| 23 | + } |
| 24 | +} |
| 25 | + |
| 26 | +var server |
| 27 | + |
| 28 | +test('run up the mock registry', function (t) { |
| 29 | + mr({ port: common.port }, function (err, s) { |
| 30 | + if (err) throw err |
| 31 | + server = s |
| 32 | + t.end() |
| 33 | + }) |
| 34 | +}) |
| 35 | + |
| 36 | +test('npm install-test', function (t) { |
| 37 | + setup() |
| 38 | + common.npm('install-test', { cwd: pkg }, function (err, code, stdout, stderr) { |
| 39 | + if (err) throw err |
| 40 | + t.equal(code, 0, 'command ran without error') |
| 41 | + t.ok(statSync(installed), 'package was installed') |
| 42 | + t.equal(require(installed).version, '1.5.1', 'underscore got installed as expected') |
| 43 | + t.match(stdout, /hax/, 'found expected test output') |
| 44 | + t.notOk(stderr, 'stderr should be empty') |
| 45 | + t.end() |
| 46 | + }) |
| 47 | +}) |
| 48 | + |
| 49 | +test('npm it (the form most people will use)', function (t) { |
| 50 | + setup() |
| 51 | + common.npm('it', { cwd: pkg }, function (err, code, stdout, stderr) { |
| 52 | + if (err) throw err |
| 53 | + t.equal(code, 0, 'command ran without error') |
| 54 | + t.ok(statSync(installed), 'package was installed') |
| 55 | + t.equal(require(installed).version, '1.5.1', 'underscore got installed as expected') |
| 56 | + t.match(stdout, /hax/, 'found expected test output') |
| 57 | + t.notOk(stderr, 'stderr should be empty') |
| 58 | + t.end() |
| 59 | + }) |
| 60 | +}) |
| 61 | + |
| 62 | +test('cleanup', function (t) { |
| 63 | + process.chdir(osenv.tmpdir()) |
| 64 | + server.close() |
| 65 | + cleanup() |
| 66 | + t.end() |
| 67 | +}) |
| 68 | + |
| 69 | +function cleanup () { |
| 70 | + rimraf.sync(pkg) |
| 71 | +} |
| 72 | + |
| 73 | +function setup () { |
| 74 | + cleanup() |
| 75 | + mkdirp.sync(pkg) |
| 76 | + writeFileSync(join(pkg, 'package.json'), JSON.stringify(json, null, 2)) |
| 77 | +} |
0 commit comments