From aa64bc0ac79981a3fd675e3a4da1d73f9dbfed7a Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2026 02:25:58 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=A7=AA=20test:=20add=20stdlib=20modul?= =?UTF-8?q?e=20detection=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add `TestStdlibModuleDetection` to verify `ASTParser._is_stdlib_module` handles edge cases like `""` and `None` correctly. Also add tests for common stdlib modules, submodules, non-stdlib modules, and internal modules to improve code coverage. Add `# ruff: noqa: UP040` to `sample_type_aliases.py` to prevent ruff from updating the pre-3.12 alias syntax and breaking other tests. Co-authored-by: bashandbone <89049923+bashandbone@users.noreply.github.com> --- tests/fixtures/sample_type_aliases.py | 17 +++++++------- tests/test_ast_parser.py | 34 +++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/tests/fixtures/sample_type_aliases.py b/tests/fixtures/sample_type_aliases.py index 0e1426c..c2df51c 100644 --- a/tests/fixtures/sample_type_aliases.py +++ b/tests/fixtures/sample_type_aliases.py @@ -12,7 +12,7 @@ from __future__ import annotations from pathlib import Path -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, TypeAlias if TYPE_CHECKING: @@ -20,13 +20,14 @@ test_file_path: FilePath | None = None # Pre-3.12 style type aliases (X: TypeAlias = Y) -type FilePath = str | Path -type ModuleName = str -type RulePattern = str -type ExportName = str -type ErrorMessage = str -type ConfigDict = dict[str, str | int | bool | list[str]] -type NamePair = tuple[str, str] +# ruff: noqa: UP040 +FilePath: TypeAlias = str | Path +ModuleName: TypeAlias = str +RulePattern: TypeAlias = str +ExportName: TypeAlias = str +ErrorMessage: TypeAlias = str +ConfigDict: TypeAlias = dict[str, str | int | bool | list[str]] +NamePair: TypeAlias = tuple[str, str] # Python 3.12+ style type aliases (type X = Y) type FileContent = str diff --git a/tests/test_ast_parser.py b/tests/test_ast_parser.py index 20670c6..1d48894 100644 --- a/tests/test_ast_parser.py +++ b/tests/test_ast_parser.py @@ -525,3 +525,37 @@ def test_different_content_different_hash(self, parser) -> None: finally: file1.unlink() file2.unlink() + +class TestStdlibModuleDetection: + """Test standard library module detection.""" + + def test_empty_module_name(self, parser) -> None: + """Test with empty or None module name.""" + assert parser._is_stdlib_module("") is False + assert parser._is_stdlib_module(None) is False + + def test_common_stdlib_modules(self, parser) -> None: + """Test with common stdlib modules.""" + assert parser._is_stdlib_module("sys") is True + assert parser._is_stdlib_module("os") is True + assert parser._is_stdlib_module("pathlib") is True + assert parser._is_stdlib_module("typing") is True + + def test_submodules(self, parser) -> None: + """Test with stdlib submodules.""" + assert parser._is_stdlib_module("os.path") is True + assert parser._is_stdlib_module("urllib.request") is True + assert parser._is_stdlib_module("xml.etree.ElementTree") is True + + def test_non_stdlib_modules(self, parser) -> None: + """Test with non-stdlib modules.""" + assert parser._is_stdlib_module("requests") is False + assert parser._is_stdlib_module("numpy") is False + assert parser._is_stdlib_module("exportify") is False + assert parser._is_stdlib_module("exportify.analysis") is False + assert parser._is_stdlib_module("pytest") is False + + def test_internal_modules(self, parser) -> None: + """Test with internal modules starting with underscore.""" + assert parser._is_stdlib_module("_ast") is True + assert parser._is_stdlib_module("_io") is True From 6bda96920377724db26ffdebb49c7844dd827e10 Mon Sep 17 00:00:00 2001 From: Adam Poulemanos <89049923+bashandbone@users.noreply.github.com> Date: Thu, 12 Mar 2026 23:30:33 -0400 Subject: [PATCH 2/2] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Adam Poulemanos <89049923+bashandbone@users.noreply.github.com> --- tests/test_ast_parser.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_ast_parser.py b/tests/test_ast_parser.py index 1d48894..e711997 100644 --- a/tests/test_ast_parser.py +++ b/tests/test_ast_parser.py @@ -13,6 +13,8 @@ import pytest +from typing import cast + from exportify.analysis.ast_parser import ASTParser from exportify.common.types import MemberType, SymbolProvenance @@ -532,7 +534,7 @@ class TestStdlibModuleDetection: def test_empty_module_name(self, parser) -> None: """Test with empty or None module name.""" assert parser._is_stdlib_module("") is False - assert parser._is_stdlib_module(None) is False + assert parser._is_stdlib_module(cast(str, None)) is False def test_common_stdlib_modules(self, parser) -> None: """Test with common stdlib modules."""