From 64add0a02fc059b89d51e132ebee0917221a51ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 6 Jan 2026 06:24:14 +0000 Subject: [PATCH 1/3] Initial plan From 8d563826ee2f6d0508f21f164070eeaa8c0244d4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 6 Jan 2026 06:36:50 +0000 Subject: [PATCH 2/3] test: Add comprehensive tests for language-language (closes #54) Co-authored-by: jade-codes <9397730+jade-codes@users.noreply.github.com> --- .../src/scanner/tests/tests_language.rs | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/crates/mother-core/src/scanner/tests/tests_language.rs b/crates/mother-core/src/scanner/tests/tests_language.rs index 2894832..3477b2d 100644 --- a/crates/mother-core/src/scanner/tests/tests_language.rs +++ b/crates/mother-core/src/scanner/tests/tests_language.rs @@ -56,3 +56,79 @@ fn test_language_display() { assert_eq!(format!("{}", Language::SysML), "sysml"); assert_eq!(format!("{}", Language::KerML), "kerml"); } + +#[test] +fn test_language_extensions() { + // Test that each language returns the correct extensions + assert_eq!(Language::Rust.extensions(), &["rs"]); + assert_eq!(Language::Python.extensions(), &["py"]); + assert_eq!(Language::TypeScript.extensions(), &["ts", "tsx"]); + assert_eq!(Language::JavaScript.extensions(), &["js", "jsx", "mjs", "cjs"]); + assert_eq!(Language::Go.extensions(), &["go"]); + assert_eq!(Language::SysML.extensions(), &["sysml"]); + assert_eq!(Language::KerML.extensions(), &["kerml"]); +} + +#[test] +fn test_extensions_consistency_with_from_extension() { + // Verify that all extensions returned by extensions() can be parsed by from_extension() + for language in [ + Language::Rust, + Language::Python, + Language::TypeScript, + Language::JavaScript, + Language::Go, + Language::SysML, + Language::KerML, + ] { + for ext in language.extensions() { + assert_eq!( + Language::from_extension(ext), + Some(language), + "Extension '{}' should map to {:?}", + ext, + language + ); + } + } +} + +#[test] +fn test_extensions_are_not_empty() { + // Ensure every language has at least one extension + for language in [ + Language::Rust, + Language::Python, + Language::TypeScript, + Language::JavaScript, + Language::Go, + Language::SysML, + Language::KerML, + ] { + assert!( + !language.extensions().is_empty(), + "{:?} should have at least one extension", + language + ); + } +} + +#[test] +fn test_extensions_multiple_for_typescript() { + // TypeScript should support both .ts and .tsx files + let extensions = Language::TypeScript.extensions(); + assert_eq!(extensions.len(), 2); + assert!(extensions.contains(&"ts")); + assert!(extensions.contains(&"tsx")); +} + +#[test] +fn test_extensions_multiple_for_javascript() { + // JavaScript should support .js, .jsx, .mjs, and .cjs files + let extensions = Language::JavaScript.extensions(); + assert_eq!(extensions.len(), 4); + assert!(extensions.contains(&"js")); + assert!(extensions.contains(&"jsx")); + assert!(extensions.contains(&"mjs")); + assert!(extensions.contains(&"cjs")); +} From fbe88a41dc7236e5d7541b431e551dadb59f526c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 6 Jan 2026 06:42:37 +0000 Subject: [PATCH 3/3] style: Format code with rustfmt Co-authored-by: jade-codes <9397730+jade-codes@users.noreply.github.com> --- crates/mother-core/src/scanner/tests/tests_language.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/mother-core/src/scanner/tests/tests_language.rs b/crates/mother-core/src/scanner/tests/tests_language.rs index 3477b2d..d0c9326 100644 --- a/crates/mother-core/src/scanner/tests/tests_language.rs +++ b/crates/mother-core/src/scanner/tests/tests_language.rs @@ -63,7 +63,10 @@ fn test_language_extensions() { assert_eq!(Language::Rust.extensions(), &["rs"]); assert_eq!(Language::Python.extensions(), &["py"]); assert_eq!(Language::TypeScript.extensions(), &["ts", "tsx"]); - assert_eq!(Language::JavaScript.extensions(), &["js", "jsx", "mjs", "cjs"]); + assert_eq!( + Language::JavaScript.extensions(), + &["js", "jsx", "mjs", "cjs"] + ); assert_eq!(Language::Go.extensions(), &["go"]); assert_eq!(Language::SysML.extensions(), &["sysml"]); assert_eq!(Language::KerML.extensions(), &["kerml"]);