mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.1 KiB
91 lines
2.1 KiB
var fs = require('fs')
|
|
var path = require('path')
|
|
|
|
var test = require('tap').test
|
|
var mkdirp = require('mkdirp')
|
|
var rimraf = require('rimraf')
|
|
var common = require('../common-tap')
|
|
var mr = require('npm-registry-mock')
|
|
|
|
var pkg = path.join(__dirname, 'prepublish_package')
|
|
|
|
var server
|
|
|
|
function setup () {
|
|
cleanup()
|
|
mkdirp.sync(path.join(pkg, 'cache'))
|
|
|
|
fs.writeFileSync(
|
|
path.join(pkg, 'package.json'),
|
|
JSON.stringify({
|
|
name: '@bigco/publish-organized',
|
|
version: '1.2.5'
|
|
}, null, 2),
|
|
'ascii')
|
|
}
|
|
|
|
test('setup', function (t) {
|
|
setup()
|
|
mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
|
|
t.ifError(err, 'registry mocked successfully')
|
|
server = s
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test('npm publish should honor scoping', function (t) {
|
|
server.filteringRequestBody(verify)
|
|
.put('/@bigco%2fpublish-organized', true)
|
|
.reply(201, {ok: true})
|
|
|
|
var configuration = [
|
|
'progress=false',
|
|
'cache=' + path.join(pkg, 'cache'),
|
|
'registry=http://nonexistent.lvh.me',
|
|
'//localhost:1337/:username=username',
|
|
'//localhost:1337/:_password=' + new Buffer('password').toString('base64'),
|
|
'//localhost:1337/:email=' + 'ogd@aoaioxxysz.net',
|
|
'@bigco:registry=' + common.registry
|
|
]
|
|
var configFile = path.join(pkg, '.npmrc')
|
|
|
|
fs.writeFileSync(configFile, configuration.join('\n') + '\n')
|
|
|
|
common.npm(['publish'], {'cwd': pkg}, function (err, code, stdout, stderr) {
|
|
if (err) throw err
|
|
t.is(code, 0, 'published without error')
|
|
server.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 true
|
|
}
|
|
})
|
|
|
|
test('cleanup', function (t) {
|
|
server.close()
|
|
t.end()
|
|
cleanup()
|
|
})
|
|
|
|
function cleanup () {
|
|
process.chdir(__dirname)
|
|
rimraf.sync(pkg)
|
|
}
|
|
|