mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-03-18 02:22:46 -05:00
Merge branch '0.5.x' of github.com:rlidwka/sinopia
Conflicts: lib/storage.js test/start.sh
This commit is contained in:
commit
203f0300e3
10 changed files with 131 additions and 6 deletions
10
ChangeLog.md
10
ChangeLog.md
|
@ -1,4 +1,14 @@
|
|||
|
||||
11 Dec 2013, version 0.5.6
|
||||
|
||||
- fixing a few crashes related to tags
|
||||
|
||||
8 Dec 2013, version 0.5.4
|
||||
|
||||
- latest tag always shows highest version available (issue #8)
|
||||
- added a configurable timeout for requests to uplinks (issue #18)
|
||||
- users with bad authentication header are considered not logged in (issue #17)
|
||||
|
||||
24 Nov 2013, version 0.5.3
|
||||
|
||||
- added proxy support for requests to uplinks (issue #13)
|
||||
|
|
|
@ -469,7 +469,7 @@ Storage.prototype.get_package = function(name, options, callback) {
|
|||
if (!~whitelist.indexOf(i)) delete result[i]
|
||||
}
|
||||
|
||||
result['dist-tags'].latest = Object.keys(result.versions).sort(semver.compareLoose)
|
||||
result['dist-tags'].latest = Storage._semver_sort(Object.keys(result.versions))
|
||||
for (var i in result['dist-tags']) {
|
||||
if (Array.isArray(result['dist-tags'][i])) {
|
||||
result['dist-tags'][i] = result['dist-tags'][i][result['dist-tags'][i].length-1]
|
||||
|
@ -508,10 +508,19 @@ Storage._merge_versions = function(local, up) {
|
|||
}
|
||||
if (local['dist-tags'][i].indexOf(up['dist-tags'][i]) === -1) {
|
||||
local['dist-tags'][i].push(up['dist-tags'][i])
|
||||
local['dist-tags'][i].sort(semver.compareLoose)
|
||||
local['dist-tags'][i] = Storage._semver_sort(local['dist-tags'][i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// function filters out bad semver versions and sorts the array
|
||||
// exported for unit tests only
|
||||
Storage._semver_sort = function semver_sort(array) {
|
||||
return array
|
||||
.filter(function(x) { return semver.parse(x, true) != null })
|
||||
.sort(semver.compareLoose)
|
||||
.map(String)
|
||||
}
|
||||
|
||||
module.exports = Storage
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# use "yapm install ." if you're installing this from git repository
|
||||
|
||||
name: sinopia
|
||||
version: 0.5.3
|
||||
version: 0.5.6
|
||||
description: Private npm repository server
|
||||
|
||||
author:
|
||||
|
|
|
@ -5,6 +5,8 @@ users:
|
|||
password: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
|
||||
|
||||
uplinks:
|
||||
express:
|
||||
url: http://localhost:55550/
|
||||
server2:
|
||||
url: http://localhost:55552/
|
||||
|
||||
|
@ -24,6 +26,11 @@ packages:
|
|||
proxy_access: server2
|
||||
proxy_publish: server2
|
||||
|
||||
'testexp*':
|
||||
allow_access: all
|
||||
allow_publish: all
|
||||
proxy_access: express
|
||||
|
||||
'*':
|
||||
allow_access: test undefined
|
||||
allow_publish: test undefined
|
||||
|
|
50
test/fixtures/tags.json
vendored
Normal file
50
test/fixtures/tags.json
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"name": "testexp_tags",
|
||||
"versions": {
|
||||
"0.1.0": {
|
||||
"name": "testexp_tags",
|
||||
"version": "0.0.0",
|
||||
"dist": {
|
||||
"shasum": "fake",
|
||||
"tarball": "http://localhost:55551/testexp_tags/-/blahblah"
|
||||
}
|
||||
},
|
||||
"0.1.1alpha": {
|
||||
"name": "testexp_tags",
|
||||
"version": "0.0.0",
|
||||
"dist": {
|
||||
"shasum": "fake",
|
||||
"tarball": "http://localhost:55551/testexp_tags/-/blahblah"
|
||||
}
|
||||
},
|
||||
"0.1.2": {
|
||||
"name": "testexp_tags",
|
||||
"version": "0.0.0",
|
||||
"dist": {
|
||||
"shasum": "fake",
|
||||
"tarball": "http://localhost:55551/testexp_tags/-/blahblah"
|
||||
}
|
||||
},
|
||||
"0.1.3alpha": {
|
||||
"name": "testexp_tags",
|
||||
"version": "0.0.0",
|
||||
"dist": {
|
||||
"shasum": "fake",
|
||||
"tarball": "http://localhost:55551/testexp_tags/-/blahblah"
|
||||
}
|
||||
},
|
||||
"1.1": {
|
||||
"name": "testexp_tags",
|
||||
"version": "0.0.0",
|
||||
"dist": {
|
||||
"shasum": "fake",
|
||||
"tarball": "http://localhost:55551/testexp_tags/-/blahblah"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dist-tags": {
|
||||
"latest": "5.4.3",
|
||||
"something": "0.1.1alpha",
|
||||
"bad": "1.1"
|
||||
}
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
|
||||
module.exports = function(name) {
|
||||
module.exports = function(name, version) {
|
||||
return {
|
||||
"name": name,
|
||||
"version": "0.0.0",
|
||||
"version": version || "0.0.0",
|
||||
"dist": {
|
||||
"shasum": "fake",
|
||||
"tarball": "http://localhost:55551/"+escape(name)+"/-/blahblah"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
var assert = require('assert')
|
||||
, semver_sort = require('../lib/storage')._semver_sort
|
||||
, merge = require('../lib/storage')._merge_versions
|
||||
|
||||
//require('../lib/logger').setup()
|
||||
|
@ -39,5 +40,14 @@ exports['Merge'] = {
|
|||
'dist-tags': {w:["1.1.1","2.2.2-rc2","2.2.2","3.3.3","12.2.2"]},
|
||||
})
|
||||
},
|
||||
|
||||
'semver_sort': function() {
|
||||
assert.deepEqual(semver_sort(['1.2.3','1.2','1.2.3a','1.2.3c','1.2.3-b']),
|
||||
[ '1.2.3a',
|
||||
'1.2.3-b',
|
||||
'1.2.3c',
|
||||
'1.2.3' ]
|
||||
)
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ CWD=$(pwd)
|
|||
PATH='../node_modules/.bin':$PATH
|
||||
TESTDIR=$(dirname $0)
|
||||
cd $TESTDIR
|
||||
mocha -R list --ui exports ./tests.js ./no_proxy.js
|
||||
mocha -R list --ui exports ./tests.js ./no_proxy.js ./st_merge.js
|
||||
TESTRES=$?
|
||||
cd $CWD
|
||||
exit $TESTRES
|
||||
|
|
34
test/tags.js
Normal file
34
test/tags.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
var assert = require('assert')
|
||||
, ex = module.exports
|
||||
, server = process.server
|
||||
, readfile = require('fs').readFileSync
|
||||
, express = process.express
|
||||
|
||||
ex['testing for 404'] = function(cb) {
|
||||
server.get_package('testexp_tags', function(res, body) {
|
||||
// shouldn't exist yet
|
||||
assert.equal(res.statusCode, 404)
|
||||
assert(~body.error.indexOf('no such package'))
|
||||
cb()
|
||||
})
|
||||
}
|
||||
|
||||
ex['setting up server with bad tags'] = function(cb) {
|
||||
express.get('/testexp_tags', function(req, res) {
|
||||
res.send(JSON.parse(readfile('fixtures/tags.json')))
|
||||
})
|
||||
cb()
|
||||
}
|
||||
|
||||
ex['fetching package again'] = function(cb) {
|
||||
server.get_package('testexp_tags', function(res, body) {
|
||||
// shouldn't exist yet
|
||||
assert.equal(res.statusCode, 200)
|
||||
assert.equal(typeof(body.versions['1.1']), 'object')
|
||||
assert.equal(body['dist-tags'].something, '0.1.1alpha')
|
||||
assert.equal(body['dist-tags'].latest, '0.1.3alpha')
|
||||
assert.equal(body['dist-tags'].bad, null)
|
||||
cb()
|
||||
})
|
||||
}
|
||||
|
|
@ -3,16 +3,21 @@ var fs = require('fs')
|
|||
, assert = require('assert')
|
||||
, Server = require('./lib/server')
|
||||
, readfile = require('fs').readFileSync
|
||||
, express = require('express')
|
||||
, ex = module.exports
|
||||
|
||||
var forks = process.forks = []
|
||||
process.server = new Server('http://localhost:55551/')
|
||||
process.server2 = new Server('http://localhost:55552/')
|
||||
process.express = express()
|
||||
|
||||
process.express.listen(55550)
|
||||
|
||||
ex['Startup:'] = require('./startup')
|
||||
ex['Basic:'] = require('./basic')
|
||||
ex['Mirror:'] = require('./mirror')
|
||||
ex['Race:'] = require('./race')
|
||||
ex['Tags:'] = require('./tags')
|
||||
|
||||
process.on('exit', function() {
|
||||
if (forks[0]) forks[0].kill()
|
||||
|
|
Loading…
Add table
Reference in a new issue