diff --git a/docs/rules/require-license.md b/docs/rules/valid-license.md similarity index 70% rename from docs/rules/require-license.md rename to docs/rules/valid-license.md index 4d1af285..40e37aaa 100644 --- a/docs/rules/require-license.md +++ b/docs/rules/valid-license.md @@ -1,10 +1,10 @@ -# require-license +# valid-license 💼 This rule is enabled in the ✅ `recommended` config. -This rule applies two validations to the `"licence"` property: +This rule applies two validations to the `"license"` property: - It must be a string rather than any other data type - It's value should match one of the values provided in the options @@ -13,9 +13,9 @@ Example of **incorrect** code for this rule: When the rule is configured with -```ts +```json { - "require-license": ["error", "GPL"] + "valid-license": ["error", "GPL"] } ``` @@ -27,9 +27,9 @@ When the rule is configured with When the rule is configured with -```ts +```json { - "require-license": ["error", ["MIT", "GPL"]] + "valid-license": ["error", ["MIT", "GPL"]] } ``` @@ -43,9 +43,9 @@ Example of **correct** code for this rule: When the rule is configured with -```ts +```json { - "require-license": ["error", "GPL"] + "valid-license": ["error", "GPL"] } ``` @@ -57,9 +57,9 @@ When the rule is configured with When the rule is configured with -```ts +```json { - "require-license": ["error", ["Apache", "MIT"]] + "valid-license": ["error", ["Apache", "MIT"]] } ``` diff --git a/src/plugin.ts b/src/plugin.ts index 6116bb3f..565228bf 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -6,9 +6,9 @@ import { rule as noEmptyFields } from "./rules/no-empty-fields.js"; import { rule as noRedundantFiles } from "./rules/no-redundant-files.js"; import { rule as orderProperties } from "./rules/order-properties.js"; import { rule as preferRepositoryShorthand } from "./rules/repository-shorthand.js"; -import { rule as requireLicense } from "./rules/require-license.js"; import { rule as sortCollections } from "./rules/sort-collections.js"; import { rule as uniqueDependencies } from "./rules/unique-dependencies.js"; +import { rule as validLicense } from "./rules/valid-license.js"; import { rule as validLocalDependency } from "./rules/valid-local-dependency.js"; import { rule as validName } from "./rules/valid-name.js"; import { rule as validPackageDefinition } from "./rules/valid-package-definition.js"; @@ -18,49 +18,49 @@ import { rule as validVersion } from "./rules/valid-version.js"; const require = createRequire(import.meta.url || __filename); const { name, version } = require("../package.json") as { - name: string; - version: string; + name: string; + version: string; }; const rules: Record = { - "no-empty-fields": noEmptyFields, - "no-redundant-files": noRedundantFiles, - "order-properties": orderProperties, - "repository-shorthand": preferRepositoryShorthand, - "require-license": requireLicense, - "sort-collections": sortCollections, - "unique-dependencies": uniqueDependencies, - "valid-local-dependency": validLocalDependency, - "valid-name": validName, - "valid-package-definition": validPackageDefinition, - "valid-repository-directory": validRepositoryDirectory, - "valid-version": validVersion, + "no-empty-fields": noEmptyFields, + "no-redundant-files": noRedundantFiles, + "order-properties": orderProperties, + "repository-shorthand": preferRepositoryShorthand, + "sort-collections": sortCollections, + "unique-dependencies": uniqueDependencies, + "valid-license": validLicense, + "valid-local-dependency": validLocalDependency, + "valid-name": validName, + "valid-package-definition": validPackageDefinition, + "valid-repository-directory": validRepositoryDirectory, + "valid-version": validVersion, - /** @deprecated use 'valid-package-definition' instead */ - "valid-package-def": { - ...validPackageDefinition, - meta: { - ...validPackageDefinition.meta, - deprecated: true, - docs: { - ...validPackageDefinition.meta.docs, - recommended: false, - }, - replacedBy: ["valid-package-definition"], - }, - }, + /** @deprecated use 'valid-package-definition' instead */ + "valid-package-def": { + ...validPackageDefinition, + meta: { + ...validPackageDefinition.meta, + deprecated: true, + docs: { + ...validPackageDefinition.meta.docs, + recommended: false, + }, + replacedBy: ["valid-package-definition"], + }, + }, }; export const plugin = { - meta: { - name, - version, - }, - rules, + meta: { + name, + version, + }, + rules, }; export const recommendedRuleSettings = Object.fromEntries( - Object.entries(rules) - .filter(([, rule]) => rule.meta.docs?.recommended) - .map(([name]) => ["package-json/" + name, "error" as const]), + Object.entries(rules) + .filter(([, rule]) => rule.meta.docs?.recommended) + .map(([name]) => ["package-json/" + name, "error" as const]), ); diff --git a/src/rules/require-license.ts b/src/rules/valid-license.ts similarity index 100% rename from src/rules/require-license.ts rename to src/rules/valid-license.ts diff --git a/src/tests/rules/require-license.test.ts b/src/tests/rules/require-license.test.ts deleted file mode 100644 index 644dc5e0..00000000 --- a/src/tests/rules/require-license.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { generateReportData, rule } from "../../rules/require-license.js"; -import { ruleTester } from "./ruleTester.js"; - -ruleTester.run("requires-license", rule, { - invalid: [ - { - code: JSON.stringify({ - license: "CC BY-SA", - name: "some-test-package", - }), - errors: [ - { - data: generateReportData(["GPL"]), - messageId: "invalidValue", - }, - ], - options: ["GPL"], - }, - { - code: JSON.stringify({ - license: "Apache", - name: "some-test-package", - }), - errors: [ - { - data: generateReportData(["MIT", "GPL"]), - messageId: "invalidValue", - }, - ], - options: [["MIT", "GPL"]], - }, - { - code: JSON.stringify({ - license: 1234, - name: "some-test-package", - }), - errors: [ - { - data: generateReportData(["GPL"]), - messageId: "nonString", - }, - ], - options: ["GPL"], - }, - ], - valid: [ - { - code: JSON.stringify({ - license: "Apache", - name: "some-test-package", - }), - options: ["Apache"], - }, - { - code: JSON.stringify({ - license: "GPL", - name: "some-test-package", - }), - options: [["MIT", "GPL"]], - }, - ], -}); diff --git a/src/tests/rules/valid-license.test.ts b/src/tests/rules/valid-license.test.ts new file mode 100644 index 00000000..fae2cffb --- /dev/null +++ b/src/tests/rules/valid-license.test.ts @@ -0,0 +1,74 @@ +import { generateReportData, rule } from "../../rules/valid-license.js"; +import { ruleTester } from "./ruleTester.js"; + +ruleTester.run("valid-license", rule, { + invalid: [ + // Invalid with single valid value + { + code: JSON.stringify({ + license: "CC BY-SA", + name: "some-test-package", + }), + errors: [ + { + data: generateReportData(["GPL"]), + messageId: "invalidValue", + }, + ], + options: ["GPL"], + }, + // Invalid with multiple valid values + { + code: JSON.stringify({ + license: "Apache", + name: "some-test-package", + }), + errors: [ + { + data: generateReportData(["MIT", "GPL"]), + messageId: "invalidValue", + }, + ], + options: [["MIT", "GPL"]], + }, + // Invalid property type + { + code: JSON.stringify({ + license: 1234, + name: "some-test-package", + }), + errors: [ + { + data: generateReportData(["GPL"]), + messageId: "nonString", + }, + ], + options: ["GPL"], + }, + ], + valid: [ + // Valid value from single valid value + { + code: JSON.stringify({ + license: "Apache", + name: "some-test-package", + }), + options: ["Apache"], + }, + // Valid value from multiple valid values + { + code: JSON.stringify({ + license: "GPL", + name: "some-test-package", + }), + options: [["MIT", "GPL"]], + }, + // Missing property + { + code: JSON.stringify({ + name: "some-test-package", + }), + options: [["MIT", "GPL"]], + }, + ], +});