|
| 1 | +var t = require('tap') |
| 2 | +var path = require('path') |
| 3 | +var fs = require('fs') |
| 4 | +var mkdirp = require('mkdirp') |
| 5 | +var rimraf = require('rimraf') |
| 6 | +var spawn = require('child_process').spawn |
| 7 | +var npm = require.resolve('../../bin/npm-cli.js') |
| 8 | +var dir = path.resolve(__dirname, 'cache-ls-filenames') |
| 9 | +var node = process.execPath |
| 10 | + |
| 11 | +t.test('setup', function (t) { |
| 12 | + rimraf.sync(dir) |
| 13 | + mkdirp.sync(dir + '/a/b/c/d') |
| 14 | + for (var i = 0; i < 5; i++) { |
| 15 | + fs.writeFileSync(dir + '/file-' + i, 'x\n') |
| 16 | + fs.writeFileSync(dir + '/a/b/file-' + i, 'x\n') |
| 17 | + } |
| 18 | + t.end() |
| 19 | +}) |
| 20 | + |
| 21 | +function test (t, args) { |
| 22 | + var child = spawn(node, [npm, 'cache', 'ls', '--cache=' + dir].concat(args)) |
| 23 | + var out = '' |
| 24 | + child.stdout.on('data', function (c) { |
| 25 | + out += c |
| 26 | + }) |
| 27 | + child.on('close', function (code, signal) { |
| 28 | + t.equal(code, 0) |
| 29 | + t.equal(signal, null) |
| 30 | + out.trim().split(/[\n\r]+/).map(function (filename) { |
| 31 | + return filename.replace(/^~/, process.env.HOME) |
| 32 | + }).forEach(function (file) { |
| 33 | + // verify that all exist |
| 34 | + t.ok(fs.existsSync(file), 'exists: ' + file) |
| 35 | + }) |
| 36 | + t.end() |
| 37 | + }) |
| 38 | +} |
| 39 | + |
| 40 | +t.test('without path arg', function (t) { |
| 41 | + test(t, []) |
| 42 | +}) |
| 43 | + |
| 44 | +t.test('with path arg', function (t) { |
| 45 | + test(t, ['a']) |
| 46 | +}) |
| 47 | + |
| 48 | +t.test('cleanup', function (t) { |
| 49 | + rimraf.sync(dir) |
| 50 | + t.end() |
| 51 | +}) |
0 commit comments