1var fs = require('fs') 2var path = require('path') 3 4var mkdirp = require('mkdirp') 5var mr = require('npm-registry-mock') 6var osenv = require('osenv') 7var rimraf = require('rimraf') 8var test = require('tap').test 9 10var npm = require('../../') 11var common = require('../common-tap.js') 12 13var pkg = path.resolve(__dirname, 'peer-deps-without-package-json') 14var cache = path.resolve(pkg, 'cache') 15var nodeModules = path.resolve(pkg, 'node_modules') 16 17var fileJS = function () { 18/**package 19* { "name": "npm-test-peer-deps-file" 20* , "main": "index.js" 21* , "version": "1.2.3" 22* , "description":"No package.json in sight!" 23* , "peerDependencies": { "underscore": "1.3.1" } 24* , "dependencies": { "mkdirp": "0.3.5" } 25* } 26**/ 27 28 module.exports = 'I\'m just a lonely index, naked as the day I was born.' 29}.toString().split('\n').slice(1, -1).join('\n') 30 31test('setup', function (t) { 32 t.comment('test for https://github.com/npm/npm/issues/3049') 33 cleanup() 34 mkdirp.sync(cache) 35 mkdirp.sync(nodeModules) 36 fs.writeFileSync(path.join(pkg, 'file-js.js'), fileJS) 37 process.chdir(pkg) 38 39 t.end() 40}) 41 42test('installing a peerDeps-using package without package.json', function (t) { 43 var customMocks = { 44 'get': { 45 '/ok.js': [200, path.join(pkg, 'file-js.js')] 46 } 47 } 48 mr({port: common.port, mocks: customMocks}, function (err, s) { 49 t.ifError(err, 'mock registry booted') 50 npm.load({ 51 registry: common.registry, 52 cache: cache 53 }, function () { 54 npm.install(common.registry + '/ok.js', function (err, additions, result) { 55 t.ifError(err, 'installed ok.js') 56 57 t.ok( 58 fs.existsSync(path.join(nodeModules, 'npm-test-peer-deps-file')), 59 'passive peer dep installed' 60 ) 61 var invalid = result.warnings.filter(function (warning) { return warning.code === 'EPEERINVALID' }) 62 t.is(invalid.length, 1, 'got a warning for a missing/invalid peer dep') 63 64 t.end() 65 s.close() // shutdown mock registry. 66 }) 67 }) 68 }) 69}) 70 71test('cleanup', function (t) { 72 cleanup() 73 t.end() 74}) 75 76function cleanup () { 77 process.chdir(osenv.tmpdir()) 78 rimraf.sync(pkg) 79} 80