1'use strict' 2var path = require('path') 3var fs = require('graceful-fs') 4var mkdirp = require('mkdirp') 5var rimraf = require('rimraf') 6var test = require('tap').test 7var common = require('../common-tap.js') 8 9var base = common.pkg 10 11var baseJSON = { 12 name: 'base', 13 version: '1.0.0', 14 dependencies: { 15 a: 'file:a/', 16 b: 'file:b/' 17 } 18} 19 20var aPath = path.join(base, 'a') 21var aJSON = { 22 name: 'a', 23 version: '1.0.0', 24 dependencies: { 25 b: 'file:../b', 26 c: 'file:../c' 27 } 28} 29 30var bPath = path.join(base, 'b') 31var bJSON = { 32 name: 'b', 33 version: '1.0.0' 34} 35 36var cPath = path.join(base, 'c') 37var cJSON = { 38 name: 'c', 39 version: '1.0.0', 40 dependencies: { 41 b: 'file:../b' 42 } 43} 44 45test('setup', function (t) { 46 cleanup() 47 setup() 48 t.end() 49}) 50 51test('install', function (t) { 52 common.npm(['install'], {cwd: base}, function (er, code, stdout, stderr) { 53 t.ifError(er, 'npm config ran without issue') 54 t.is(code, 0, 'exited with a non-error code') 55 t.is(stderr, '', 'Ran without errors') 56 t.end() 57 }) 58}) 59 60test('cleanup', function (t) { 61 cleanup() 62 t.end() 63}) 64 65function saveJson (pkgPath, json) { 66 mkdirp.sync(pkgPath) 67 fs.writeFileSync(path.join(pkgPath, 'package.json'), JSON.stringify(json, null, 2)) 68} 69 70function setup () { 71 saveJson(base, baseJSON) 72 saveJson(aPath, aJSON) 73 saveJson(bPath, bJSON) 74 saveJson(cPath, cJSON) 75} 76 77function cleanup () { 78 rimraf.sync(base) 79} 80