Skip to content

Commit 46c8a21

Browse files
committed
feat(linter): add schema for jest/vitest/require-top-level-describe (#23184)
related #22955
1 parent 41465cf commit 46c8a21

4 files changed

Lines changed: 112 additions & 9 deletions

File tree

‎apps/oxlint/src-js/package/config.generated.ts‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,7 @@ export interface DummyRuleMap {
834834
"jest/prefer-todo"?: RuleNoConfig;
835835
"jest/require-hook"?: AllowWarnDeny | [AllowWarnDeny] | [AllowWarnDeny, RequireHookConfig];
836836
"jest/require-to-throw-message"?: RuleNoConfig;
837-
"jest/require-top-level-describe"?: DummyRule;
837+
"jest/require-top-level-describe"?: AllowWarnDeny | [AllowWarnDeny] | [AllowWarnDeny, RequireTopLevelDescribeConfig];
838838
"jest/valid-describe-callback"?: RuleNoConfig;
839839
"jest/valid-expect"?: DummyRule;
840840
"jest/valid-expect-in-promise"?: RuleNoConfig;
@@ -1588,7 +1588,10 @@ export interface DummyRuleMap {
15881588
| [AllowWarnDeny, RequireMockTypeParametersConfig];
15891589
"vitest/require-test-timeout"?: RuleNoConfig;
15901590
"vitest/require-to-throw-message"?: RuleNoConfig;
1591-
"vitest/require-top-level-describe"?: DummyRule;
1591+
"vitest/require-top-level-describe"?:
1592+
| AllowWarnDeny
1593+
| [AllowWarnDeny]
1594+
| [AllowWarnDeny, RequireTopLevelDescribeConfig];
15921595
"vitest/valid-describe-callback"?: RuleNoConfig;
15931596
"vitest/valid-expect"?: DummyRule;
15941597
"vitest/valid-expect-in-promise"?: RuleNoConfig;
@@ -2245,6 +2248,12 @@ export interface RequireHookConfig {
22452248
*/
22462249
allowedFunctionCalls?: string[];
22472250
}
2251+
export interface RequireTopLevelDescribeConfig {
2252+
/**
2253+
* The maximum number of top-level `describe` blocks allowed in a test file.
2254+
*/
2255+
maxNumberOfTopLevelDescribes?: number;
2256+
}
22482257
export interface CheckTagNamesConfig {
22492258
/**
22502259
* Additional tag names to allow.

‎crates/oxc_linter/src/utils/schemars.rs‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use crate::rules::RuleEnum;
1313
/// These should return the DummyRule struct/schema instead of the actual rule struct/schema,
1414
/// until we verify that the rule's schema is valid and can be generated by schemars.
1515
#[cfg(feature = "ruledocs")]
16-
const NO_VERIFIED_VALID_SCHEMA: [&str; 72] = [
16+
const NO_VERIFIED_VALID_SCHEMA: [&str; 70] = [
1717
"eslint/func-name-matching",
1818
"eslint/no-restricted-globals",
1919
"eslint/no-restricted-imports",
@@ -23,7 +23,6 @@ const NO_VERIFIED_VALID_SCHEMA: [&str; 72] = [
2323
"jest/no-restricted-jest-methods",
2424
"jest/no-restricted-matchers",
2525
"jest/prefer-lowercase-title",
26-
"jest/require-top-level-describe",
2726
"jest/valid-expect",
2827
"jest/valid-title",
2928
"jsdoc/require-param",
@@ -82,7 +81,6 @@ const NO_VERIFIED_VALID_SCHEMA: [&str; 72] = [
8281
"vitest/no-restricted-vi-methods",
8382
"vitest/prefer-import-in-mock",
8483
"vitest/prefer-lowercase-title",
85-
"vitest/require-top-level-describe",
8684
"vitest/valid-expect",
8785
"vitest/valid-title",
8886
"vue/define-props-destructuring",

‎npm/oxlint/configuration_schema.json‎

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2451,7 +2451,24 @@
24512451
"$ref": "#/definitions/RuleNoConfig"
24522452
},
24532453
"jest/require-top-level-describe": {
2454-
"$ref": "#/definitions/DummyRule"
2454+
"anyOf": [
2455+
{
2456+
"$ref": "#/definitions/AllowWarnDeny"
2457+
},
2458+
{
2459+
"type": "array",
2460+
"items": [
2461+
{
2462+
"$ref": "#/definitions/AllowWarnDeny"
2463+
},
2464+
{
2465+
"$ref": "#/definitions/RequireTopLevelDescribeConfig"
2466+
}
2467+
],
2468+
"maxItems": 2,
2469+
"minItems": 1
2470+
}
2471+
]
24552472
},
24562473
"jest/valid-describe-callback": {
24572474
"$ref": "#/definitions/RuleNoConfig"
@@ -7723,7 +7740,24 @@
77237740
"$ref": "#/definitions/RuleNoConfig"
77247741
},
77257742
"vitest/require-top-level-describe": {
7726-
"$ref": "#/definitions/DummyRule"
7743+
"anyOf": [
7744+
{
7745+
"$ref": "#/definitions/AllowWarnDeny"
7746+
},
7747+
{
7748+
"type": "array",
7749+
"items": [
7750+
{
7751+
"$ref": "#/definitions/AllowWarnDeny"
7752+
},
7753+
{
7754+
"$ref": "#/definitions/RequireTopLevelDescribeConfig"
7755+
}
7756+
],
7757+
"maxItems": 2,
7758+
"minItems": 1
7759+
}
7760+
]
77277761
},
77287762
"vitest/valid-describe-callback": {
77297763
"$ref": "#/definitions/RuleNoConfig"
@@ -13294,6 +13328,20 @@
1329413328
},
1329513329
"additionalProperties": false
1329613330
},
13331+
"RequireTopLevelDescribeConfig": {
13332+
"type": "object",
13333+
"properties": {
13334+
"maxNumberOfTopLevelDescribes": {
13335+
"description": "The maximum number of top-level `describe` blocks allowed in a test file.",
13336+
"default": 18446744073709551615,
13337+
"type": "integer",
13338+
"format": "uint",
13339+
"minimum": 0.0,
13340+
"markdownDescription": "The maximum number of top-level `describe` blocks allowed in a test file."
13341+
}
13342+
},
13343+
"additionalProperties": false
13344+
},
1329713345
"RequireUnicodeRegexp": {
1329813346
"$ref": "#/definitions/RequireUnicodeRegexpConfig"
1329913347
},

‎tasks/website_linter/src/snapshots/schema_json.snap‎

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2455,7 +2455,24 @@ expression: json
24552455
"$ref": "#/definitions/RuleNoConfig"
24562456
},
24572457
"jest/require-top-level-describe": {
2458-
"$ref": "#/definitions/DummyRule"
2458+
"anyOf": [
2459+
{
2460+
"$ref": "#/definitions/AllowWarnDeny"
2461+
},
2462+
{
2463+
"type": "array",
2464+
"items": [
2465+
{
2466+
"$ref": "#/definitions/AllowWarnDeny"
2467+
},
2468+
{
2469+
"$ref": "#/definitions/RequireTopLevelDescribeConfig"
2470+
}
2471+
],
2472+
"maxItems": 2,
2473+
"minItems": 1
2474+
}
2475+
]
24592476
},
24602477
"jest/valid-describe-callback": {
24612478
"$ref": "#/definitions/RuleNoConfig"
@@ -7727,7 +7744,24 @@ expression: json
77277744
"$ref": "#/definitions/RuleNoConfig"
77287745
},
77297746
"vitest/require-top-level-describe": {
7730-
"$ref": "#/definitions/DummyRule"
7747+
"anyOf": [
7748+
{
7749+
"$ref": "#/definitions/AllowWarnDeny"
7750+
},
7751+
{
7752+
"type": "array",
7753+
"items": [
7754+
{
7755+
"$ref": "#/definitions/AllowWarnDeny"
7756+
},
7757+
{
7758+
"$ref": "#/definitions/RequireTopLevelDescribeConfig"
7759+
}
7760+
],
7761+
"maxItems": 2,
7762+
"minItems": 1
7763+
}
7764+
]
77317765
},
77327766
"vitest/valid-describe-callback": {
77337767
"$ref": "#/definitions/RuleNoConfig"
@@ -13298,6 +13332,20 @@ expression: json
1329813332
},
1329913333
"additionalProperties": false
1330013334
},
13335+
"RequireTopLevelDescribeConfig": {
13336+
"type": "object",
13337+
"properties": {
13338+
"maxNumberOfTopLevelDescribes": {
13339+
"description": "The maximum number of top-level `describe` blocks allowed in a test file.",
13340+
"default": 18446744073709551615,
13341+
"type": "integer",
13342+
"format": "uint",
13343+
"minimum": 0.0,
13344+
"markdownDescription": "The maximum number of top-level `describe` blocks allowed in a test file."
13345+
}
13346+
},
13347+
"additionalProperties": false
13348+
},
1330113349
"RequireUnicodeRegexp": {
1330213350
"$ref": "#/definitions/RequireUnicodeRegexpConfig"
1330313351
},

0 commit comments

Comments
 (0)