1'use strict' 2var test = require('tap').test 3var requireInject = require('require-inject') 4 5// we're just mocking to avoid having to call `npm.load` 6var deps = requireInject('../../lib/install/deps.js', { 7 '../../lib/npm.js': { 8 config: { 9 get: function () { return 'mock' } 10 }, 11 limit: { 12 fetch: 10 13 } 14 } 15}) 16 17var removeObsoleteDep = deps.removeObsoleteDep 18 19test('removeObsoleteDep', function (t) { 20 var child1 = {requiredBy: []} 21 var test1 = { 22 removed: true, 23 requires: [ child1 ] 24 } 25 removeObsoleteDep(test1) 26 t.is(child1.removed, undefined, 'no recursion on deps flagged as removed already') 27 28 var child2 = {requiredBy: []} 29 var test2 = { 30 requires: [ child2 ] 31 } 32 child2.requiredBy.push(test2) 33 removeObsoleteDep(test2) 34 t.is(child2.removed, true, 'required by no other modules, removing') 35 36 var child3 = {requiredBy: [{isTop: true}]} 37 var test3 = { 38 requires: [ child3 ] 39 } 40 child3.requiredBy.push(test3) 41 removeObsoleteDep(test3) 42 t.is(child3.removed, undefined, 'required by other modules, keeping') 43 t.done() 44}) 45