/
parse.js
27 lines (25 loc) · 1.01 KB
/
parse.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const t = require('tap')
const parse = require('../../functions/parse')
const SemVer = require('../../classes/semver')
const invalidVersions = require('../fixtures/invalid-versions')
t.test('returns null instead of throwing when presented with garbage', t => {
t.plan(invalidVersions.length)
invalidVersions.forEach(([v, msg, opts]) =>
t.equal(parse(v, opts), null, msg))
})
t.test('parse a version into a SemVer object', t => {
t.match(parse('1.2.3'), new SemVer('1.2.3'))
const inputSemVer = new SemVer('4.5.6')
const parsedSemVer = parse(inputSemVer)
t.equal(
JSON.stringify(parse(inputSemVer)),
JSON.stringify(inputSemVer),
'returns a copy if input is a SemVer obj'
)
inputSemVer.version = '4.5.7'
t.equal(parsedSemVer.version, '4.5.6', 'is a deep clone when input is a SemVer obj')
const loose = new SemVer('4.2.0', { loose: true })
t.match(parse('4.2.0', true), loose, 'looseness as a boolean')
t.match(parse('4.2.0', { loose: true }), loose, 'looseness as an option')
t.end()
})