'use strict' var path = require('path') var fs = require('graceful-fs') var mkdirp = require('mkdirp') var rimraf = require('rimraf') var test = require('tap').test var requireInject = require('require-inject') require('../common-tap.js') var base = path.join(__dirname, path.basename(__filename, '.js')) var baseJSON = { name: 'base', version: '1.0.0', repository: { type: 'git', url: 'http://example.com' }, scripts: { prepublish: 'false' } } var lastOpened var npm = requireInject.installGlobally('../../lib/npm.js', { '../../lib/utils/lifecycle.js': function (pkg, stage, wd, unsafe, failOk, cb) { cb(new Error("Shouldn't be calling lifecycle scripts")) }, opener: function (url, options, cb) { lastOpened = {url: url, options: options} cb() } }) test('setup', function (t) { cleanup() setup() t.end() }) test('repo', function (t) { process.chdir(base) npm.load({browser: 'echo'}, function () { npm.commands.repo([], function (err) { t.ifError(err, 'no errors') t.match(lastOpened.url, baseJSON.repository.url, 'opened the right url') t.is(lastOpened.options.command, 'echo', 'opened with a specified browser') t.end() }) }) }) test('cleanup', function (t) { cleanup() t.end() }) function saveJson (pkgPath, json) { mkdirp.sync(pkgPath) fs.writeFileSync(path.join(pkgPath, 'package.json'), JSON.stringify(json, null, 2)) } function setup () { saveJson(base, baseJSON) } function cleanup () { rimraf.sync(base) }