Skip to content

Commit 428a728

Browse files
committed
fix(parse): make parse return a 'deep' clone
1 parent fd67a71 commit 428a728

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

Diff for: functions/parse.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const parse = (version, options) => {
77
options = parseOptions(options)
88

99
if (version instanceof SemVer) {
10-
return version
10+
return new SemVer(version.version)
1111
}
1212

1313
if (typeof version !== 'string') {

Diff for: test/functions/parse.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,15 @@ t.test('returns null instead of throwing when presented with garbage', t => {
1111

1212
t.test('parse a version into a SemVer object', t => {
1313
t.match(parse('1.2.3'), new SemVer('1.2.3'))
14-
const s = new SemVer('4.5.6')
15-
t.equal(parse(s), s, 'just return it if its a SemVer obj')
14+
const inputSemVer = new SemVer('4.5.6')
15+
const parsedSemVer = parse(inputSemVer)
16+
t.equal(
17+
JSON.stringify(parse(inputSemVer)),
18+
JSON.stringify(inputSemVer),
19+
'returns a copy if input is a SemVer obj'
20+
)
21+
inputSemVer.version = '4.5.7'
22+
t.equal(parsedSemVer.version, '4.5.6', 'is a deep clone when input is a SemVer obj')
1623
const loose = new SemVer('4.2.0', { loose: true })
1724
t.match(parse('4.2.0', true), loose, 'looseness as a boolean')
1825
t.match(parse('4.2.0', { loose: true }), loose, 'looseness as an option')

0 commit comments

Comments
 (0)