diff --git a/CHANGELOG.md b/CHANGELOG.md index 75c9309c8..60597c85b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ Status of the `main` branch. Changes prior to the next official version change w - `SvelteLanguageServer`: Fix diagnostics requests for TypeScript/JavaScript files incorrectly being processed by the Svelte LS instead of the TypeScript LS. - Improve quoting of arguments in shell executions + - `typescript` / `typescript_vts`: No longer ignore directories named `coverage`. This was intended to skip + coverage-report output, but matched by bare dirname and so also hid legitimate source directories named + `coverage` (e.g. `src/routes/coverage/`) from symbol tools. Generated report dirs are already covered by + gitignore. Fixes #1523. * JetBrains: - Add configuration option `jetbrains_launch_command`, allowing Serena to spawn IDE instances automatically diff --git a/src/solidlsp/language_servers/typescript_language_server.py b/src/solidlsp/language_servers/typescript_language_server.py index 731ad835f..fdf7d1794 100644 --- a/src/solidlsp/language_servers/typescript_language_server.py +++ b/src/solidlsp/language_servers/typescript_language_server.py @@ -132,7 +132,6 @@ def is_ignored_dirname(self, dirname: str) -> bool: "node_modules", "dist", "build", - "coverage", ] @staticmethod diff --git a/src/solidlsp/language_servers/vts_language_server.py b/src/solidlsp/language_servers/vts_language_server.py index 5525809b4..0789c3f3b 100644 --- a/src/solidlsp/language_servers/vts_language_server.py +++ b/src/solidlsp/language_servers/vts_language_server.py @@ -71,7 +71,6 @@ def is_ignored_dirname(self, dirname: str) -> bool: "node_modules", "dist", "build", - "coverage", ] @classmethod diff --git a/test/solidlsp/typescript/test_typescript_ignored_dirs.py b/test/solidlsp/typescript/test_typescript_ignored_dirs.py new file mode 100644 index 000000000..7bbb0dfc2 --- /dev/null +++ b/test/solidlsp/typescript/test_typescript_ignored_dirs.py @@ -0,0 +1,35 @@ +""" +Tests for TypeScript language server directory-ignoring behavior. + +Regression test for the case where a *source* directory named `coverage` +(e.g. `src/routes/coverage/`) was hard-ignored by `is_ignored_dirname`, +hiding it from symbol tools. Only generated coverage-report dirs should be +excluded, and those are handled by gitignore. +""" + +import pytest + +from solidlsp import SolidLanguageServer +from solidlsp.ls_config import Language + +pytestmark = pytest.mark.typescript + + +@pytest.mark.parametrize("language_server", [Language.TYPESCRIPT], indirect=True) +class TestTypescriptIgnoredDirectories: + """TypeScript-specific directory ignoring behavior.""" + + def test_generated_dirs_still_ignored(self, language_server: SolidLanguageServer) -> None: + assert language_server.is_ignored_dirname("node_modules"), "node_modules should be ignored" + assert language_server.is_ignored_dirname("dist"), "dist should be ignored" + assert language_server.is_ignored_dirname("build"), "build should be ignored" + # VCS dir handled by the base class + assert language_server.is_ignored_dirname(".git"), ".git should be ignored" + + def test_source_dirs_not_ignored(self, language_server: SolidLanguageServer) -> None: + # `coverage` is a legitimate source/module name; only generated + # coverage-report dirs (which are gitignored) should be excluded. + assert not language_server.is_ignored_dirname("coverage"), "coverage source dir should not be ignored" + assert not language_server.is_ignored_dirname("src"), "src should not be ignored" + assert not language_server.is_ignored_dirname("lib"), "lib should not be ignored" + assert not language_server.is_ignored_dirname("routes"), "routes should not be ignored"