Skip to content

Commit d30d25a

Browse files
authoredMay 12, 2023
fix: show type on invalid semver error (#559)
Add linting rules to prevent regression in using node internals.
1 parent 09c69e2 commit d30d25a

File tree

5 files changed

+47
-20
lines changed

5 files changed

+47
-20
lines changed
 

‎.eslintrc.local.js

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
'use strict'
2+
3+
module.exports = {
4+
overrides: [
5+
{
6+
files: ['bin/**', 'classes/**', 'functions/**', 'internal/**', 'ranges/**'],
7+
rules: {
8+
'import/no-extraneous-dependencies': [
9+
'error',
10+
{
11+
devDependencies: false,
12+
},
13+
],
14+
'import/no-nodejs-modules': ['error'],
15+
},
16+
},
17+
],
18+
}

‎classes/semver.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class SemVer {
1616
version = version.version
1717
}
1818
} else if (typeof version !== 'string') {
19-
throw new TypeError(`Invalid Version: ${require('util').inspect(version)}`)
19+
throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`)
2020
}
2121

2222
if (version.length > MAX_LENGTH) {

‎test/classes/semver.js

+26-18
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,19 @@ test('really big numeric prerelease value', (t) => {
6262
})
6363

6464
test('invalid version numbers', (t) => {
65-
['1.2.3.4',
66-
'NOT VALID',
67-
1.2,
68-
null,
69-
'Infinity.NaN.Infinity',
70-
].forEach((v) => {
71-
t.throws(() => {
72-
new SemVer(v) // eslint-disable-line no-new
73-
}, { name: 'TypeError', message: `Invalid Version: ${v}` })
65+
['1.2.3.4', 'NOT VALID', 1.2, null, 'Infinity.NaN.Infinity'].forEach((v) => {
66+
t.throws(
67+
() => {
68+
new SemVer(v) // eslint-disable-line no-new
69+
},
70+
{
71+
name: 'TypeError',
72+
message:
73+
typeof v === 'string'
74+
? `Invalid Version: ${v}`
75+
: `Invalid version. Must be a string. Got type "${typeof v}".`,
76+
}
77+
)
7478
})
7579

7680
t.end()
@@ -113,15 +117,19 @@ test('compare main vs pre', (t) => {
113117
})
114118

115119
test('invalid version numbers', (t) => {
116-
['1.2.3.4',
117-
'NOT VALID',
118-
1.2,
119-
null,
120-
'Infinity.NaN.Infinity',
121-
].forEach((v) => {
122-
t.throws(() => {
123-
new SemVer(v) // eslint-disable-line no-new
124-
}, { name: 'TypeError', message: `Invalid Version: ${v}` })
120+
['1.2.3.4', 'NOT VALID', 1.2, null, 'Infinity.NaN.Infinity'].forEach((v) => {
121+
t.throws(
122+
() => {
123+
new SemVer(v) // eslint-disable-line no-new
124+
},
125+
{
126+
name: 'TypeError',
127+
message:
128+
typeof v === 'string'
129+
? `Invalid Version: ${v}`
130+
: `Invalid version. Must be a string. Got type "${typeof v}".`,
131+
}
132+
)
125133
})
126134

127135
t.end()

‎test/functions/parse.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ t.test('throw errors if asked to', t => {
2020
parse([], null, true)
2121
}, {
2222
name: 'TypeError',
23-
message: 'Invalid Version: []',
23+
message: 'Invalid version. Must be a string. Got type "object".',
2424
})
2525
t.end()
2626
})

‎test/map.js

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const ignore = [
66
'.github',
77
'.commitlintrc.js',
88
'.eslintrc.js',
9+
'.eslintrc.local.js',
910
'node_modules',
1011
'coverage',
1112
'tap-snapshots',

0 commit comments

Comments
 (0)
Please sign in to comment.