From fbe7eb463d5575cd7757036d95966e8e717824e1 Mon Sep 17 00:00:00 2001 From: camc314 <18101008+camc314@users.noreply.github.com> Date: Fri, 18 Jul 2025 13:48:59 +0000 Subject: [PATCH] fix(linter/filename-case): fix default config when no config is provided (#12389) fixes #12276 --- .../src/rules/unicorn/filename_case.rs | 18 +++++++++++++++++- .../src/snapshots/unicorn_filename_case.snap | 5 +++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/crates/oxc_linter/src/rules/unicorn/filename_case.rs b/crates/oxc_linter/src/rules/unicorn/filename_case.rs index f768fb332f158..26aa9517687bc 100644 --- a/crates/oxc_linter/src/rules/unicorn/filename_case.rs +++ b/crates/oxc_linter/src/rules/unicorn/filename_case.rs @@ -23,7 +23,7 @@ impl std::ops::Deref for FilenameCase { } } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone)] pub struct FilenameCaseConfig { /// Whether kebab case is allowed. kebab_case: bool, @@ -37,6 +37,19 @@ pub struct FilenameCaseConfig { multi_extensions: bool, } +impl Default for FilenameCaseConfig { + fn default() -> Self { + Self { + kebab_case: true, + camel_case: false, + snake_case: false, + pascal_case: false, + ignore: None, + multi_extensions: true, + } + } +} + declare_oxc_lint!( /// ### What it does /// @@ -141,6 +154,7 @@ impl Rule for FilenameCase { let mut config = FilenameCaseConfig { multi_extensions: true, ..Default::default() }; if let Some(value) = value.get(0) { + config.kebab_case = false; if let Some(Value::String(val)) = value.get("ignore") { config.ignore = RegexBuilder::new(val).build().ok(); } @@ -380,6 +394,7 @@ fn test() { "src/foo/foo_bar.test_utils.js", serde_json::json!([{ "case": "snakeCase", "multipleFileExtensions": false }]), ), + ("", None, None, Some(PathBuf::from("foo-bar.tsx"))), ]; let fail = vec![ @@ -425,6 +440,7 @@ fn test() { "src/foo/foo_bar.test-utils.js", serde_json::json!([{ "case": "snakeCase", "multipleFileExtensions": false }]), ), + ("", None, None, Some(PathBuf::from("FooBar.tsx"))), ]; Tester::new(FilenameCase::NAME, FilenameCase::PLUGIN, pass, fail).test_and_snapshot(); diff --git a/crates/oxc_linter/src/snapshots/unicorn_filename_case.snap b/crates/oxc_linter/src/snapshots/unicorn_filename_case.snap index 00aaa70519196..3aec1b0c8876e 100644 --- a/crates/oxc_linter/src/snapshots/unicorn_filename_case.snap +++ b/crates/oxc_linter/src/snapshots/unicorn_filename_case.snap @@ -155,3 +155,8 @@ source: crates/oxc_linter/src/tester.rs ╭─[filename_case.tsx:1:1] ╰──── help: Rename the file to 'foo_bar.test_utils.js' + + ⚠ eslint-plugin-unicorn(filename-case): Filename should be in kebab case + ╭─[filename_case.tsx:1:1] + ╰──── + help: Rename the file to 'foo-bar.tsx'