diff --git a/tests/test_init_javascript.py b/tests/test_init_javascript.py index fe69d4a0d..194a3ed8c 100644 --- a/tests/test_init_javascript.py +++ b/tests/test_init_javascript.py @@ -8,6 +8,8 @@ import pytest from codeflash.cli_cmds.init_javascript import ( JsPackageManager, + ProjectLanguage, + detect_project_language, determine_js_package_manager, get_package_install_command, should_modify_package_json_config, @@ -344,3 +346,95 @@ class TestCollectJsSetupInfoSkipConfirm: assert setup_info.module_root_override is None assert setup_info.formatter_override is None assert setup_info.git_remote == "origin" + + +class TestDetectProjectLanguage: + """Tests for detect_project_language function.""" + + def test_detects_java_from_pom_xml(self, tmp_project: Path) -> None: + (tmp_project / "pom.xml").write_text("") + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.JAVA + + def test_detects_java_from_build_gradle(self, tmp_project: Path) -> None: + (tmp_project / "build.gradle").write_text("") + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.JAVA + + def test_detects_java_from_build_gradle_kts(self, tmp_project: Path) -> None: + (tmp_project / "build.gradle.kts").write_text("") + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.JAVA + + def test_detects_typescript_from_tsconfig(self, tmp_project: Path) -> None: + (tmp_project / "tsconfig.json").write_text("{}") + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.TYPESCRIPT + + def test_detects_javascript_from_package_json(self, tmp_project: Path) -> None: + (tmp_project / "package.json").write_text("{}") + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.JAVASCRIPT + + def test_detects_python_from_pyproject_toml(self, tmp_project: Path) -> None: + (tmp_project / "pyproject.toml").write_text("") + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.PYTHON + + def test_defaults_to_python_for_empty_directory(self, tmp_project: Path) -> None: + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.PYTHON + + def test_java_takes_priority_over_python(self, tmp_project: Path) -> None: + (tmp_project / "pom.xml").write_text("") + (tmp_project / "pyproject.toml").write_text("") + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.JAVA + + def test_java_takes_priority_over_javascript(self, tmp_project: Path) -> None: + (tmp_project / "build.gradle").write_text("") + (tmp_project / "package.json").write_text("{}") + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.JAVA + + def test_java_takes_priority_over_typescript(self, tmp_project: Path) -> None: + (tmp_project / "pom.xml").write_text("") + (tmp_project / "tsconfig.json").write_text("{}") + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.JAVA + + def test_javascript_with_js_indicators_over_python(self, tmp_project: Path) -> None: + (tmp_project / "package.json").write_text("{}") + (tmp_project / "pyproject.toml").write_text("") + (tmp_project / "node_modules").mkdir() + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.JAVASCRIPT + + def test_python_over_package_json_without_js_indicators(self, tmp_project: Path) -> None: + (tmp_project / "package.json").write_text("{}") + (tmp_project / "pyproject.toml").write_text("") + + result = detect_project_language(tmp_project) + + assert result == ProjectLanguage.PYTHON