forked from yusufkaraaslan/Skill_Seekers
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_cli_paths.py
More file actions
204 lines (154 loc) · 7.05 KB
/
test_cli_paths.py
File metadata and controls
204 lines (154 loc) · 7.05 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
#!/usr/bin/env python3
"""
Test suite for modern CLI command patterns
Tests that all CLI scripts use correct unified CLI commands in usage messages and print statements
"""
import os
import subprocess
import sys
import unittest
from pathlib import Path
# Add parent directory to path
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
class TestModernCLICommands(unittest.TestCase):
"""Test that all CLI scripts use modern unified CLI commands"""
def test_doc_scraper_uses_modern_commands(self):
"""Test doc_scraper.py uses skill-seekers commands"""
script_path = (
Path(__file__).parent.parent / "src" / "skill_seekers" / "cli" / "doc_scraper.py"
)
with open(script_path) as f:
content = f.read()
# Should use modern commands
self.assertIn("skill-seekers scrape", content)
# Should NOT use old python3 cli/ pattern
self.assertNotIn("python3 cli/doc_scraper.py", content)
def test_enhance_skill_local_uses_modern_commands(self):
"""Test enhance_skill_local.py uses skill-seekers commands"""
script_path = (
Path(__file__).parent.parent
/ "src"
/ "skill_seekers"
/ "cli"
/ "enhance_skill_local.py"
)
with open(script_path) as f:
content = f.read()
# Should use modern commands
self.assertIn("skill-seekers", content)
# Should NOT use old python3 cli/ pattern
self.assertNotIn("python3 cli/enhance_skill_local.py", content)
def test_estimate_pages_uses_modern_commands(self):
"""Test estimate_pages.py uses skill-seekers commands"""
script_path = (
Path(__file__).parent.parent / "src" / "skill_seekers" / "cli" / "estimate_pages.py"
)
with open(script_path) as f:
content = f.read()
# Should use modern commands
self.assertIn("skill-seekers estimate", content)
# Should NOT use old python3 cli/ pattern
self.assertNotIn("python3 cli/estimate_pages.py", content)
def test_package_skill_uses_modern_commands(self):
"""Test package_skill.py uses skill-seekers commands"""
script_path = (
Path(__file__).parent.parent / "src" / "skill_seekers" / "cli" / "package_skill.py"
)
with open(script_path) as f:
content = f.read()
# Should use modern commands
self.assertIn("skill-seekers package", content)
# Should NOT use old python3 cli/ pattern
self.assertNotIn("python3 cli/package_skill.py", content)
def test_github_scraper_uses_modern_commands(self):
"""Test github_scraper.py uses skill-seekers commands"""
script_path = (
Path(__file__).parent.parent / "src" / "skill_seekers" / "cli" / "github_scraper.py"
)
with open(script_path) as f:
content = f.read()
# Should use modern commands
self.assertIn("skill-seekers", content)
# Should NOT use old python3 cli/ pattern
self.assertNotIn("python3 cli/github_scraper.py", content)
class TestUnifiedCLIEntryPoints(unittest.TestCase):
"""Test that unified CLI entry points work correctly"""
def test_main_cli_help_output(self):
"""Test skill-seekers --help works"""
try:
result = subprocess.run(
["skill-seekers", "--help"], capture_output=True, text=True, timeout=5
)
# Should return successfully
self.assertIn(
result.returncode,
[0, 2],
f"skill-seekers --help failed with code {result.returncode}",
)
# Should show subcommands
output = result.stdout + result.stderr
self.assertIn("scrape", output)
self.assertIn("github", output)
self.assertIn("package", output)
except FileNotFoundError:
# If skill-seekers is not installed, skip this test
self.skipTest("skill-seekers command not found - install package first")
def test_main_cli_version_output(self):
"""Test skill-seekers --version works"""
try:
result = subprocess.run(
["skill-seekers", "--version"], capture_output=True, text=True, timeout=5
)
# Should return successfully
self.assertEqual(
result.returncode, 0, f"skill-seekers --version failed: {result.stderr}"
)
# Should show version
output = result.stdout + result.stderr
self.assertIn("2.7.0", output)
except FileNotFoundError:
# If skill-seekers is not installed, skip this test
self.skipTest("skill-seekers command not found - install package first")
class TestNoHardcodedPaths(unittest.TestCase):
"""Test that no scripts have hardcoded absolute paths"""
def test_no_hardcoded_paths_in_cli_scripts(self):
"""Test that CLI scripts don't have hardcoded paths"""
cli_dir = Path(__file__).parent.parent / "src" / "skill_seekers" / "cli"
hardcoded_paths = [
"/mnt/skills/examples/skill-creator/scripts/",
"/home/",
"/Users/",
]
for script_path in cli_dir.glob("*.py"):
with open(script_path) as f:
content = f.read()
for hardcoded_path in hardcoded_paths:
self.assertNotIn(
hardcoded_path,
content,
f"{script_path.name} contains hardcoded path: {hardcoded_path}",
)
class TestPackageStructure(unittest.TestCase):
"""Test that package structure is correct"""
def test_src_layout_exists(self):
"""Test that src/ layout directory exists"""
src_dir = Path(__file__).parent.parent / "src" / "skill_seekers"
self.assertTrue(src_dir.exists(), "src/skill_seekers/ directory should exist")
def test_cli_package_exists(self):
"""Test that CLI package exists in src/"""
cli_dir = Path(__file__).parent.parent / "src" / "skill_seekers" / "cli"
self.assertTrue(cli_dir.exists(), "src/skill_seekers/cli/ directory should exist")
init_file = cli_dir / "__init__.py"
self.assertTrue(init_file.exists(), "src/skill_seekers/cli/__init__.py should exist")
def test_mcp_package_exists(self):
"""Test that MCP package exists in src/"""
mcp_dir = Path(__file__).parent.parent / "src" / "skill_seekers" / "mcp"
self.assertTrue(mcp_dir.exists(), "src/skill_seekers/mcp/ directory should exist")
init_file = mcp_dir / "__init__.py"
self.assertTrue(init_file.exists(), "src/skill_seekers/mcp/__init__.py should exist")
def test_main_cli_file_exists(self):
"""Test that main.py unified CLI exists"""
main_file = Path(__file__).parent.parent / "src" / "skill_seekers" / "cli" / "main.py"
self.assertTrue(main_file.exists(), "src/skill_seekers/cli/main.py should exist")
if __name__ == "__main__":
unittest.main()