Skip to content

Commit e058efa

Browse files
committed
fix(check-values): check for whole SPDX expression, not only single identifiers
1 parent ea1a626 commit e058efa

File tree

4 files changed

+58
-11
lines changed

4 files changed

+58
-11
lines changed

README.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3212,7 +3212,7 @@ function quux (foo) {
32123212
function quux (foo) {
32133213

32143214
}
3215-
// Message: Invalid JSDoc @license: "FOO"; expected SPDX identifier: https://spdx.org/licenses/.
3215+
// Message: Invalid JSDoc @license: "FOO"; expected SPDX expression: https://spdx.org/licenses/.
32163216

32173217
/**
32183218
* @license FOO
@@ -3223,6 +3223,14 @@ function quux (foo) {
32233223
// Options: [{"allowedLicenses":["BAR","BAX"]}]
32243224
// Message: Invalid JSDoc @license: "FOO"; expected one of BAR, BAX.
32253225

3226+
/**
3227+
* @license (MIT OR GPL-2.5)
3228+
*/
3229+
function quux (foo) {
3230+
3231+
}
3232+
// Message: Invalid JSDoc @license: "(MIT OR GPL-2.5)"; expected SPDX expression: https://spdx.org/licenses/.
3233+
32263234
/**
32273235
* @author
32283236
*/
@@ -3265,6 +3273,13 @@ function quux (foo) {
32653273

32663274
}
32673275

3276+
/**
3277+
* @license (MIT OR GPL-2.0)
3278+
*/
3279+
function quux (foo) {
3280+
3281+
}
3282+
32683283
/**
32693284
* @license FOO
32703285
*/

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"object.entries-ponyfill": "^1.0.1",
1313
"regextras": "^0.6.1",
1414
"semver": "^6.3.0",
15-
"spdx-license-list": "^6.1.0"
15+
"spdx-expression-parse": "^3.0.0"
1616
},
1717
"description": "JSDoc linting rules for ESLint.",
1818
"devDependencies": {

src/rules/checkValues.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import semver from 'semver';
2-
import spdxLicenseList from 'spdx-license-list/simple';
2+
import spdxExpressionParse from 'spdx-expression-parse';
33
import iterateJsdoc from '../iterateJsdoc';
44

55
export default iterateJsdoc(({
@@ -56,17 +56,21 @@ export default iterateJsdoc(({
5656
} else if (allowedLicenses) {
5757
if (allowedLicenses !== true && !allowedLicenses.includes(license)) {
5858
report(
59-
`Invalid JSDoc @${targetTagName}: "${jsdocParameter.description}"; expected one of ${allowedLicenses.join(', ')}.`,
59+
`Invalid JSDoc @${targetTagName}: "${license}"; expected one of ${allowedLicenses.join(', ')}.`,
60+
null,
61+
jsdocParameter,
62+
);
63+
}
64+
} else {
65+
try {
66+
spdxExpressionParse(license);
67+
} catch (error) {
68+
report(
69+
`Invalid JSDoc @${targetTagName}: "${license}"; expected SPDX expression: https://spdx.org/licenses/.`,
6070
null,
6171
jsdocParameter,
6272
);
6373
}
64-
} else if (!spdxLicenseList.has(license)) {
65-
report(
66-
`Invalid JSDoc @${targetTagName}: "${jsdocParameter.description}"; expected SPDX identifier: https://spdx.org/licenses/.`,
67-
null,
68-
jsdocParameter,
69-
);
7074
}
7175
});
7276

@@ -114,6 +118,9 @@ export default iterateJsdoc(({
114118
},
115119
],
116120
},
121+
licensePattern: {
122+
type: 'string',
123+
},
117124
},
118125
type: 'object',
119126
},

test/rules/assertions/checkValues.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ export default {
9292
errors: [
9393
{
9494
line: 3,
95-
message: 'Invalid JSDoc @license: "FOO"; expected SPDX identifier: https://spdx.org/licenses/.',
95+
message: 'Invalid JSDoc @license: "FOO"; expected SPDX expression: https://spdx.org/licenses/.',
9696
},
9797
],
9898
},
@@ -117,6 +117,21 @@ export default {
117117
},
118118
],
119119
},
120+
{
121+
code: `
122+
/**
123+
* @license (MIT OR GPL-2.5)
124+
*/
125+
function quux (foo) {
126+
127+
}
128+
`,
129+
errors: [
130+
{
131+
message: 'Invalid JSDoc @license: "(MIT OR GPL-2.5)"; expected SPDX expression: https://spdx.org/licenses/.',
132+
},
133+
],
134+
},
120135
{
121136
code: `
122137
/**
@@ -186,6 +201,16 @@ export default {
186201
}
187202
`,
188203
},
204+
{
205+
code: `
206+
/**
207+
* @license (MIT OR GPL-2.0)
208+
*/
209+
function quux (foo) {
210+
211+
}
212+
`,
213+
},
189214
{
190215
code: `
191216
/**

0 commit comments

Comments
 (0)