1'use strict' 2var path = require('path') 3var fs = require('graceful-fs') 4var test = require('tap').test 5var common = require('../common-tap.js') 6var Tacks = require('tacks') 7var Dir = Tacks.Dir 8var File = Tacks.File 9 10var testdir = path.join(__dirname, path.basename(__filename, '.js')) 11var cwd = path.join(testdir, '3') 12 13/** 14 * NOTE: Tarball Fixtures 15 * They contain package.json files with dependencies like the following: 16 * 1-1.0.0.tgz: package/package.json 17 * { 18 * "name":"1", 19 * "version":"1.0.0" 20 * } 21 * 2-1.0.0.tgz: package/package.json 22 * { 23 * "name":"2", 24 * "version":"1.0.0", 25 * "dependencies":{ 26 * "1":"file:../1/1-1.0.0.tgz" 27 * } 28 * } 29 */ 30var fixture = new Tacks(Dir({ 31 '1': Dir({ 32 '1-1.0.0.tgz': File(Buffer.from( 33 '1f8b08000000000000032b484cce4e4c4fd52f80d07a59c5f9790c540606' + 34 '06066626260ad8c4c1c0d85c81c1d8d4ccc0d0d0cccc00a80ec830353103' + 35 'd2d4760836505a5c925804740aa5e640bca200a78708a856ca4bcc4d55b2' + 36 '523254d2512a4b2d2acecccf03f1f40cf40c946ab906da79a360148c8251' + 37 '300a6804007849dfdf00080000', 38 'hex' 39 )) 40 }), 41 '2': Dir({ 42 '2-1.0.0.tgz': File(Buffer.from( 43 '1f8b0800000000000003ed8f3d0e83300c8599394594b90d36840cdc2602' + 44 '17d19f80087468c5ddeb14a9135b91aa4af996e73c3f47f660eb8b6d291b' + 45 '565567dfbb646700c0682db6fc00ea5c24456900d118e01c17a52e58f75e' + 46 '648bd94f76e455befd67bd457cf44f78a64248676f242b21737908cf3b8d' + 47 'beeb5d70508182d56d6820d790ab3bf2dc0a83ec62489dba2b554a6598e1' + 48 'f13da1a6f62139b0a44bfaeb0b23914824b2c50b8b5b623100080000', 49 'hex' 50 )) 51 }), 52 '3': Dir({ 53 'package.json': File({ 54 name: '3', 55 version: '1.0.0', 56 dependencies: { 57 '2': '../2/2-1.0.0.tgz' 58 } 59 }) 60 }) 61})) 62 63function setup () { 64 fixture.create(testdir) 65} 66 67function cleanup () { 68 fixture.remove(testdir) 69} 70 71test('setup', function (t) { 72 cleanup() 73 setup() 74 t.end() 75}) 76 77test('installing local package with local dependency', function (t) { 78 common.npm( 79 ['install'], 80 {cwd: cwd}, 81 function (er, code, stdout, stderr) { 82 t.is(code, 0, 'no error code') 83 t.is(stderr, '', 'no error output') 84 t.ok(fs.existsSync(path.join(cwd, 'node_modules', '2')), 'installed direct dep') 85 t.ok(fs.existsSync(path.join(cwd, 'node_modules', '1')), 'installed indirect dep') 86 t.end() 87 } 88 ) 89}) 90 91test('cleanup', function (t) { 92 cleanup() 93 t.end() 94}) 95