From 7f8b033696b46cb9a6181b6ec2e3b734cec24d90 Mon Sep 17 00:00:00 2001 From: jdecroock Date: Sun, 18 Jan 2026 10:31:52 +0100 Subject: [PATCH] Check earlier to avoid false positive --- .../vitest/prefer_describe_function_title.rs | 45 ++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/crates/oxc_linter/src/rules/vitest/prefer_describe_function_title.rs b/crates/oxc_linter/src/rules/vitest/prefer_describe_function_title.rs index 7d58879c355fb..a07ec6e7e9af7 100644 --- a/crates/oxc_linter/src/rules/vitest/prefer_describe_function_title.rs +++ b/crates/oxc_linter/src/rules/vitest/prefer_describe_function_title.rs @@ -84,6 +84,15 @@ impl PreferDescribeFunctionTitle { return; } + let Some(test_vitest_fn) = parse_general_jest_fn_call(call_expr, possible_jest_node, ctx) + else { + return; + }; + + if test_vitest_fn.kind != JestFnKind::General(JestGeneralFnKind::Describe) { + return; + } + let mut imported_entries = ctx.module_record().import_entries.iter().map(|entry| entry.local_name.name.as_ref()); @@ -113,16 +122,6 @@ impl PreferDescribeFunctionTitle { ); } Argument::StringLiteral(string_title) => { - let Some(test_vitest_fn) = - parse_general_jest_fn_call(call_expr, possible_jest_node, ctx) - else { - return; - }; - - if test_vitest_fn.kind != JestFnKind::General(JestGeneralFnKind::Describe) { - return; - } - if !imported_entries.contains(string_title.value.as_ref()) { return; } @@ -263,6 +262,32 @@ fn test() { Some(serde_json::json!({ "settings": { "vitest": { "typecheck": true, }, } })), Some(PathBuf::from("myFunction.test.ts")), ), + ( + r#" + import { DocumentBuilder } from "./DocumentBuilder" + describe("Swagger Helper", () => { + beforeEach(() => { + vi.spyOn(DocumentBuilder.prototype, "setTitle") + }) + }) + "#, + None, + None, + Some(PathBuf::from("swagger.helpers.spec.ts")), + ), + ( + r#" + import { myFunction } from "./myFunction" + describe("Test Suite", () => { + beforeEach(() => { + vi.spyOn(myFunction, "name") + }) + }) + "#, + None, + None, + Some(PathBuf::from("myFunction.test.ts")), + ), ]; let fail = vec![