|
|
|
var fs = require('fs')
|
|
|
|
var path = require('path')
|
|
|
|
|
|
|
|
var test = require('tap').test
|
|
|
|
var mkdirp = require('mkdirp')
|
|
|
|
var rimraf = require('rimraf')
|
|
|
|
var nock = require('nock')
|
|
|
|
|
|
|
|
var npm = require('../../')
|
|
|
|
var common = require('../common-tap.js')
|
|
|
|
|
|
|
|
var pkg = path.join(__dirname, 'prepublish_package')
|
|
|
|
|
|
|
|
test('setup', function (t) {
|
|
|
|
mkdirp(path.join(pkg, 'cache'), next)
|
|
|
|
|
|
|
|
function next () {
|
|
|
|
process.chdir(pkg)
|
|
|
|
fs.writeFile(
|
|
|
|
path.join(pkg, 'package.json'),
|
|
|
|
JSON.stringify({
|
|
|
|
name: '@bigco/publish-organized',
|
|
|
|
version: '1.2.5'
|
|
|
|
}),
|
|
|
|
'ascii',
|
|
|
|
function (er) {
|
|
|
|
t.ifError(er)
|
|
|
|
|
|
|
|
t.pass('setup done')
|
|
|
|
t.end()
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
test('npm publish should honor scoping', function (t) {
|
|
|
|
var put = nock(common.registry)
|
|
|
|
.put('/@bigco%2fpublish-organized')
|
|
|
|
.reply(201, verify)
|
|
|
|
|
|
|
|
var configuration = {
|
|
|
|
cache: path.join(pkg, 'cache'),
|
|
|
|
loglevel: 'silent',
|
|
|
|
registry: 'http://nonexistent.lvh.me',
|
|
|
|
'//localhost:1337/:username': 'username',
|
|
|
|
'//localhost:1337/:_password': new Buffer('password').toString('base64'),
|
|
|
|
'//localhost:1337/:email': 'ogd@aoaioxxysz.net'
|
|
|
|
}
|
|
|
|
|
|
|
|
npm.load(configuration, onload)
|
|
|
|
|
|
|
|
function onload (er) {
|
|
|
|
t.ifError(er, 'npm bootstrapped successfully')
|
|
|
|
|
|
|
|
npm.config.set('@bigco:registry', common.registry)
|
|
|
|
npm.commands.publish([], false, function (er) {
|
|
|
|
t.ifError(er, 'published without error')
|
|
|
|
|
|
|
|
put.done()
|
|
|
|
|
|
|
|
t.end()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function verify (_, body) {
|
|
|
|
t.doesNotThrow(function () {
|
|
|
|
var parsed = JSON.parse(body)
|
|
|
|
var current = parsed.versions['1.2.5']
|
|
|
|
t.equal(
|
|
|
|
current._npmVersion,
|
|
|
|
require(path.resolve(__dirname, '../../package.json')).version,
|
|
|
|
'npm version is correct'
|
|
|
|
)
|
|
|
|
|
|
|
|
t.equal(
|
|
|
|
current._nodeVersion,
|
|
|
|
process.versions.node,
|
|
|
|
'node version is correct'
|
|
|
|
)
|
|
|
|
}, 'converted body back into object')
|
|
|
|
|
|
|
|
return {ok: true}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
test('cleanup', function (t) {
|
|
|
|
process.chdir(__dirname)
|
|
|
|
rimraf(pkg, function (er) {
|
|
|
|
t.ifError(er)
|
|
|
|
|
|
|
|
t.end()
|
|
|
|
})
|
|
|
|
})
|