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.
187 lines
3.9 KiB
187 lines
3.9 KiB
var npa = require('../npa.js')
|
|
var path = require('path')
|
|
|
|
require('tap').test('basic', function (t) {
|
|
t.setMaxListeners(999)
|
|
|
|
var tests = {
|
|
'foo@1.2': {
|
|
name: 'foo',
|
|
escapedName: 'foo',
|
|
type: 'range',
|
|
spec: '>=1.2.0 <1.3.0',
|
|
raw: 'foo@1.2',
|
|
rawSpec: '1.2'
|
|
},
|
|
|
|
'@foo/bar': {
|
|
raw: '@foo/bar',
|
|
name: '@foo/bar',
|
|
escapedName: '@foo%2fbar',
|
|
scope: '@foo',
|
|
rawSpec: '',
|
|
spec: 'latest',
|
|
type: 'tag'
|
|
},
|
|
|
|
'@foo/bar@': {
|
|
raw: '@foo/bar@',
|
|
name: '@foo/bar',
|
|
escapedName: '@foo%2fbar',
|
|
scope: '@foo',
|
|
rawSpec: '',
|
|
spec: 'latest',
|
|
type: 'tag'
|
|
},
|
|
|
|
'@foo/bar@baz': {
|
|
raw: '@foo/bar@baz',
|
|
name: '@foo/bar',
|
|
escapedName: '@foo%2fbar',
|
|
scope: '@foo',
|
|
rawSpec: 'baz',
|
|
spec: 'baz',
|
|
type: 'tag'
|
|
},
|
|
|
|
'@f fo o al/ a d s ;f ': {
|
|
raw: '@f fo o al/ a d s ;f',
|
|
name: null,
|
|
escapedName: null,
|
|
rawSpec: '@f fo o al/ a d s ;f',
|
|
spec: '@f fo o al/ a d s ;f',
|
|
type: 'local'
|
|
},
|
|
|
|
'foo@1.2.3': {
|
|
name: 'foo',
|
|
escapedName: 'foo',
|
|
type: 'version',
|
|
spec: '1.2.3',
|
|
raw: 'foo@1.2.3'
|
|
},
|
|
|
|
'foo@=v1.2.3': {
|
|
name: 'foo',
|
|
escapedName: 'foo',
|
|
type: 'version',
|
|
spec: '1.2.3',
|
|
raw: 'foo@=v1.2.3',
|
|
rawSpec: '=v1.2.3'
|
|
},
|
|
|
|
'git+ssh://git@notgithub.com/user/foo#1.2.3': {
|
|
name: null,
|
|
escapedName: null,
|
|
type: 'git',
|
|
spec: 'ssh://git@notgithub.com/user/foo#1.2.3',
|
|
raw: 'git+ssh://git@notgithub.com/user/foo#1.2.3'
|
|
},
|
|
|
|
'git+file://path/to/repo#1.2.3': {
|
|
name: null,
|
|
escapedName: null,
|
|
type: 'git',
|
|
spec: 'file://path/to/repo#1.2.3',
|
|
raw: 'git+file://path/to/repo#1.2.3'
|
|
},
|
|
|
|
'git://notgithub.com/user/foo': {
|
|
name: null,
|
|
escapedName: null,
|
|
type: 'git',
|
|
spec: 'git://notgithub.com/user/foo',
|
|
raw: 'git://notgithub.com/user/foo'
|
|
},
|
|
|
|
'@foo/bar@git+ssh://notgithub.com/user/foo': {
|
|
name: '@foo/bar',
|
|
escapedName: '@foo%2fbar',
|
|
scope: '@foo',
|
|
spec: 'ssh://notgithub.com/user/foo',
|
|
rawSpec: 'git+ssh://notgithub.com/user/foo',
|
|
raw: '@foo/bar@git+ssh://notgithub.com/user/foo'
|
|
},
|
|
|
|
'/path/to/foo': {
|
|
name: null,
|
|
escapedName: null,
|
|
type: 'local',
|
|
spec: path.resolve(__dirname, '/path/to/foo'),
|
|
raw: '/path/to/foo'
|
|
},
|
|
|
|
'file:path/to/foo': {
|
|
name: null,
|
|
escapedName: null,
|
|
type: 'local',
|
|
spec: 'path/to/foo',
|
|
raw: 'file:path/to/foo'
|
|
},
|
|
|
|
'file:~/path/to/foo': {
|
|
name: null,
|
|
escapedName: null,
|
|
type: 'local',
|
|
spec: '~/path/to/foo',
|
|
raw: 'file:~/path/to/foo'
|
|
},
|
|
|
|
'file:../path/to/foo': {
|
|
name: null,
|
|
escapedName: null,
|
|
type: 'local',
|
|
spec: '../path/to/foo',
|
|
raw: 'file:../path/to/foo'
|
|
},
|
|
|
|
'file:///path/to/foo': {
|
|
name: null,
|
|
escapedName: null,
|
|
type: 'local',
|
|
spec: '/path/to/foo',
|
|
raw: 'file:///path/to/foo'
|
|
},
|
|
|
|
'https://server.com/foo.tgz': {
|
|
name: null,
|
|
escapedName: null,
|
|
type: 'remote',
|
|
spec: 'https://server.com/foo.tgz',
|
|
raw: 'https://server.com/foo.tgz'
|
|
},
|
|
|
|
'foo@latest': {
|
|
name: 'foo',
|
|
escapedName: 'foo',
|
|
type: 'tag',
|
|
spec: 'latest',
|
|
raw: 'foo@latest'
|
|
},
|
|
|
|
'foo': {
|
|
name: 'foo',
|
|
escapedName: 'foo',
|
|
type: 'tag',
|
|
spec: 'latest',
|
|
raw: 'foo'
|
|
}
|
|
}
|
|
|
|
Object.keys(tests).forEach(function (arg) {
|
|
var res = npa(arg)
|
|
t.type(res, 'Result', arg + ' is result')
|
|
t.has(res, tests[arg], arg + ' matches expectations')
|
|
})
|
|
|
|
// Completely unreasonable invalid garbage throws an error
|
|
t.throws(function () {
|
|
npa('this is not a \0 valid package name or url')
|
|
})
|
|
|
|
t.throws(function () {
|
|
npa('gopher://yea right')
|
|
}, 'Unsupported URL Type: gopher://yea right')
|
|
|
|
t.end()
|
|
})
|
|
|