forked from yusufkaraaslan/Skill_Seekers
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_package_structure.py
More file actions
244 lines (175 loc) · 8.93 KB
/
test_package_structure.py
File metadata and controls
244 lines (175 loc) · 8.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
"""Test suite for Python package structure.
Tests that the package structure is correct and imports work properly.
This ensures modern Python packaging (src/ layout, pyproject.toml) is successful.
"""
import sys
from pathlib import Path
import pytest
class TestCliPackage:
"""Test skill_seekers.cli package structure and imports."""
def test_cli_package_exists(self):
"""Test that skill_seekers.cli package can be imported."""
import skill_seekers.cli
assert skill_seekers.cli is not None
def test_cli_has_version(self):
"""Test that skill_seekers.cli package has __version__."""
import skill_seekers.cli
assert hasattr(skill_seekers.cli, "__version__")
assert skill_seekers.cli.__version__ == "2.7.0"
def test_cli_has_all(self):
"""Test that skill_seekers.cli package has __all__ export list."""
import skill_seekers.cli
assert hasattr(skill_seekers.cli, "__all__")
assert isinstance(skill_seekers.cli.__all__, list)
assert len(skill_seekers.cli.__all__) > 0
def test_llms_txt_detector_import(self):
"""Test that LlmsTxtDetector can be imported from skill_seekers.cli."""
from skill_seekers.cli import LlmsTxtDetector
assert LlmsTxtDetector is not None
def test_llms_txt_downloader_import(self):
"""Test that LlmsTxtDownloader can be imported from skill_seekers.cli."""
from skill_seekers.cli import LlmsTxtDownloader
assert LlmsTxtDownloader is not None
def test_llms_txt_parser_import(self):
"""Test that LlmsTxtParser can be imported from skill_seekers.cli."""
from skill_seekers.cli import LlmsTxtParser
assert LlmsTxtParser is not None
def test_open_folder_import(self):
"""Test that open_folder can be imported from skill_seekers.cli (if utils exists)."""
try:
from skill_seekers.cli import open_folder
# If import succeeds, function should not be None
assert open_folder is not None
except ImportError:
# If utils.py doesn't exist, that's okay for now
pytest.skip("utils.py not found, skipping open_folder test")
def test_cli_exports_match_all(self):
"""Test that exported items in __all__ can actually be imported."""
import skill_seekers.cli as cli
for item_name in cli.__all__:
if item_name == "open_folder" and cli.open_folder is None:
# open_folder might be None if utils doesn't exist
continue
assert hasattr(cli, item_name), f"{item_name} not found in cli package"
class TestMcpPackage:
"""Test skill_seekers.mcp package structure and imports."""
def test_mcp_package_exists(self):
"""Test that skill_seekers.mcp package can be imported."""
import skill_seekers.mcp
assert skill_seekers.mcp is not None
def test_mcp_has_version(self):
"""Test that skill_seekers.mcp package has __version__."""
import skill_seekers.mcp
assert hasattr(skill_seekers.mcp, "__version__")
assert skill_seekers.mcp.__version__ == "2.7.0"
def test_mcp_has_all(self):
"""Test that skill_seekers.mcp package has __all__ export list."""
import skill_seekers.mcp
assert hasattr(skill_seekers.mcp, "__all__")
assert isinstance(skill_seekers.mcp.__all__, list)
def test_mcp_tools_package_exists(self):
"""Test that skill_seekers.mcp.tools subpackage can be imported."""
import skill_seekers.mcp.tools
assert skill_seekers.mcp.tools is not None
def test_mcp_tools_has_version(self):
"""Test that skill_seekers.mcp.tools has __version__."""
import skill_seekers.mcp.tools
assert hasattr(skill_seekers.mcp.tools, "__version__")
assert skill_seekers.mcp.tools.__version__ == "2.7.0"
class TestPackageStructure:
"""Test overall package structure integrity (src/ layout)."""
def test_cli_init_file_exists(self):
"""Test that src/skill_seekers/cli/__init__.py exists."""
init_file = Path(__file__).parent.parent / "src" / "skill_seekers" / "cli" / "__init__.py"
assert init_file.exists(), "src/skill_seekers/cli/__init__.py not found"
def test_mcp_init_file_exists(self):
"""Test that src/skill_seekers/mcp/__init__.py exists."""
init_file = Path(__file__).parent.parent / "src" / "skill_seekers" / "mcp" / "__init__.py"
assert init_file.exists(), "src/skill_seekers/mcp/__init__.py not found"
def test_mcp_tools_init_file_exists(self):
"""Test that src/skill_seekers/mcp/tools/__init__.py exists."""
init_file = (
Path(__file__).parent.parent / "src" / "skill_seekers" / "mcp" / "tools" / "__init__.py"
)
assert init_file.exists(), "src/skill_seekers/mcp/tools/__init__.py not found"
def test_cli_init_has_docstring(self):
"""Test that skill_seekers.cli/__init__.py has a module docstring."""
import skill_seekers.cli
assert skill_seekers.cli.__doc__ is not None
assert len(skill_seekers.cli.__doc__) > 50 # Should have substantial documentation
def test_mcp_init_has_docstring(self):
"""Test that skill_seekers.mcp/__init__.py has a module docstring."""
import skill_seekers.mcp
assert skill_seekers.mcp.__doc__ is not None
assert len(skill_seekers.mcp.__doc__) > 50 # Should have substantial documentation
class TestImportPatterns:
"""Test that various import patterns work correctly."""
def test_direct_module_import(self):
"""Test importing modules directly."""
from skill_seekers.cli import llms_txt_detector, llms_txt_downloader, llms_txt_parser
assert llms_txt_detector is not None
assert llms_txt_downloader is not None
assert llms_txt_parser is not None
def test_class_import_from_package(self):
"""Test importing classes from package."""
from skill_seekers.cli import LlmsTxtDetector, LlmsTxtDownloader, LlmsTxtParser
assert LlmsTxtDetector.__name__ == "LlmsTxtDetector"
assert LlmsTxtDownloader.__name__ == "LlmsTxtDownloader"
assert LlmsTxtParser.__name__ == "LlmsTxtParser"
def test_package_level_import(self):
"""Test importing entire packages."""
assert "skill_seekers" in sys.modules
assert "skill_seekers.cli" in sys.modules
assert "skill_seekers.mcp" in sys.modules
assert "skill_seekers.mcp.tools" in sys.modules
class TestBackwardsCompatibility:
"""Test that existing code patterns still work."""
def test_direct_file_import_still_works(self):
"""Test that direct file imports still work (backwards compatible)."""
# This ensures we didn't break existing code
from skill_seekers.cli.llms_txt_detector import LlmsTxtDetector
from skill_seekers.cli.llms_txt_downloader import LlmsTxtDownloader
from skill_seekers.cli.llms_txt_parser import LlmsTxtParser
assert LlmsTxtDetector is not None
assert LlmsTxtDownloader is not None
assert LlmsTxtParser is not None
def test_module_path_import_still_works(self):
"""Test that full module path imports still work."""
import skill_seekers.cli.llms_txt_detector
import skill_seekers.cli.llms_txt_downloader
import skill_seekers.cli.llms_txt_parser
assert skill_seekers.cli.llms_txt_detector is not None
assert skill_seekers.cli.llms_txt_downloader is not None
assert skill_seekers.cli.llms_txt_parser is not None
class TestRootPackage:
"""Test root skill_seekers package."""
def test_root_package_exists(self):
"""Test that skill_seekers root package can be imported."""
import skill_seekers
assert skill_seekers is not None
def test_root_has_version(self):
"""Test that skill_seekers root package has __version__."""
import skill_seekers
assert hasattr(skill_seekers, "__version__")
assert skill_seekers.__version__ == "2.7.0"
def test_root_has_metadata(self):
"""Test that skill_seekers root package has metadata."""
import skill_seekers
assert hasattr(skill_seekers, "__author__")
assert hasattr(skill_seekers, "__license__")
assert skill_seekers.__license__ == "MIT"
class TestCLIEntryPoints:
"""Test that CLI entry points are properly configured."""
def test_main_cli_module_exists(self):
"""Test that main.py module exists and can be imported."""
from skill_seekers.cli import main
assert main is not None
assert hasattr(main, "main")
assert callable(main.main)
def test_main_cli_has_parser(self):
"""Test that main.py has parser creation function."""
from skill_seekers.cli.main import create_parser
parser = create_parser()
assert parser is not None
# Test that main subcommands are configured
assert parser.prog == "skill-seekers"