fix(linter): bug in fixer for prefer-to-have-length (#5164)

This commit is contained in:
dalaoshu 2024-08-24 23:29:45 +08:00 committed by GitHub
parent 01c0c3e4b2
commit 1f5b6b6c82
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 5 deletions

View file

@ -138,7 +138,6 @@ impl PreferToHaveLength {
let Some(matcher) = parsed_expect_call.matcher() else { let Some(matcher) = parsed_expect_call.matcher() else {
return; return;
}; };
if expect_property_name != "length" || !is_equality_matcher(matcher) { if expect_property_name != "length" || !is_equality_matcher(matcher) {
return; return;
} }
@ -161,12 +160,11 @@ impl PreferToHaveLength {
property_name: Option<&str>, property_name: Option<&str>,
) -> String { ) -> String {
let mut formatter = fixer.codegen(); let mut formatter = fixer.codegen();
let Expression::Identifier(prop_ident) = mem_expr.object() else {
return formatter.into_source_text();
};
formatter.print_str("expect("); formatter.print_str("expect(");
formatter.print_str(prop_ident.name.as_str()); formatter.print_str(
fixer.source_range(Span::new(mem_expr.span().start, mem_expr.object().span().end)),
);
formatter.print_str(")"); formatter.print_str(")");
if let Some(kind_val) = kind { if let Some(kind_val) = kind {
@ -215,6 +213,10 @@ fn tests() {
("expect(files.length).toEqual(1);", None), ("expect(files.length).toEqual(1);", None),
("expect(files.length).toStrictEqual(1);", None), ("expect(files.length).toStrictEqual(1);", None),
("expect(files.length).not.toStrictEqual(1);", None), ("expect(files.length).not.toStrictEqual(1);", None),
(
"expect((meta.get('pages') as YArray<unknown>).length).toBe((originalMeta.get('pages') as YArray<unknown>).length);",
None
),
]; ];
let fix = vec![ let fix = vec![
@ -240,6 +242,11 @@ fn tests() {
("expect(files.length).toEqual(1);", "expect(files).toHaveLength(1);", None), ("expect(files.length).toEqual(1);", "expect(files).toHaveLength(1);", None),
("expect(files.length).toStrictEqual(1);", "expect(files).toHaveLength(1);", None), ("expect(files.length).toStrictEqual(1);", "expect(files).toHaveLength(1);", None),
("expect(files.length).not.toStrictEqual(1);", "expect(files).not.toHaveLength(1);", None), ("expect(files.length).not.toStrictEqual(1);", "expect(files).not.toHaveLength(1);", None),
(
"expect((meta.get('pages') as YArray<unknown>).length).toBe((originalMeta.get('pages') as YArray<unknown>).length);",
"expect((meta.get('pages') as YArray<unknown>)).toHaveLength((originalMeta.get('pages') as YArray<unknown>).length);",
None
),
]; ];
Tester::new(PreferToHaveLength::NAME, pass, fail) Tester::new(PreferToHaveLength::NAME, pass, fail)

View file

@ -70,3 +70,10 @@ source: crates/oxc_linter/src/tester.rs
· ───────────── · ─────────────
╰──── ╰────
help: Replace `expect(files.length).not.toStrictEqual` with `expect(files).not.toHaveLength`. help: Replace `expect(files.length).not.toStrictEqual` with `expect(files).not.toHaveLength`.
⚠ eslint-plugin-jest(prefer-to-have-length): Suggest using `toHaveLength()`.
╭─[prefer_to_have_length.tsx:1:55]
1 │ expect((meta.get('pages') as YArray<unknown>).length).toBe((originalMeta.get('pages') as YArray<unknown>).length);
· ────
╰────
help: Replace `expect((meta.get('pages') as YArray<unknown>).length).toBe` with `expect((meta.get('pages') as YArray<unknown>)).toHaveLength`.