54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
"""
|
|
Tests for #681 — Python scripts have shebangs.
|
|
"""
|
|
|
|
import os
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
REPO_ROOT = Path(__file__).parent.parent
|
|
|
|
# Files mentioned in issue #681
|
|
ISSUE_FILES = [
|
|
"bin/glitch_patterns.py",
|
|
"bin/nostr-agent-demo.py",
|
|
"bin/soul_eval_gate.py",
|
|
"scripts/captcha_bypass_handler.py",
|
|
"scripts/diagram_meaning_extractor.py",
|
|
"scripts/visual_pr_reviewer.py",
|
|
]
|
|
|
|
|
|
class TestShebangs(unittest.TestCase):
|
|
def test_all_issue_files_have_shebangs(self):
|
|
"""All files listed in #681 have #!/usr/bin/env python3 shebang."""
|
|
for relpath in ISSUE_FILES:
|
|
filepath = REPO_ROOT / relpath
|
|
with self.subTest(file=relpath):
|
|
self.assertTrue(filepath.exists(), f"{relpath} not found")
|
|
with open(filepath) as f:
|
|
first_line = f.readline().strip()
|
|
self.assertEqual(
|
|
first_line, "#!/usr/bin/env python3",
|
|
f"{relpath} missing shebang, first line: {first_line}"
|
|
)
|
|
|
|
def test_bin_scripts_have_shebangs(self):
|
|
"""All .py files in bin/ have shebangs."""
|
|
bin_dir = REPO_ROOT / "bin"
|
|
if not bin_dir.exists():
|
|
self.skipTest("bin/ not found")
|
|
|
|
for filepath in bin_dir.glob("*.py"):
|
|
with self.subTest(file=filepath.name):
|
|
with open(filepath) as f:
|
|
first_line = f.readline().strip()
|
|
self.assertTrue(
|
|
first_line.startswith("#!"),
|
|
f"bin/{filepath.name} missing shebang"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|