Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
"""Tests for optional-skills/devops/setup-wizard-generator (template integrity)."""
|
||||
|
||||
import re
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
import yaml
|
||||
|
||||
SKILL_DIR = (
|
||||
Path(__file__).resolve().parents[2]
|
||||
/ "optional-skills"
|
||||
/ "devops"
|
||||
/ "setup-wizard-generator"
|
||||
)
|
||||
SKILL_MD = SKILL_DIR / "SKILL.md"
|
||||
TEMPLATE = SKILL_DIR / "templates" / "template.sh"
|
||||
|
||||
|
||||
class TestFrontmatter:
|
||||
def _fm(self):
|
||||
text = SKILL_MD.read_text(encoding="utf-8")
|
||||
m = re.match(r"^---\n(.*?)\n---\n", text, re.DOTALL)
|
||||
assert m, "SKILL.md missing YAML frontmatter"
|
||||
return yaml.safe_load(m.group(1))
|
||||
|
||||
def test_name_matches_directory(self):
|
||||
assert self._fm()["name"] == "setup-wizard-generator"
|
||||
|
||||
def test_description_length(self):
|
||||
assert len(self._fm()["description"]) <= 60
|
||||
|
||||
def test_license_and_platforms(self):
|
||||
fm = self._fm()
|
||||
assert fm["license"] == "MIT"
|
||||
assert "linux" in fm["platforms"]
|
||||
|
||||
|
||||
class TestTemplate:
|
||||
def test_template_exists(self):
|
||||
assert TEMPLATE.is_file()
|
||||
|
||||
def test_bash_syntax(self):
|
||||
proc = subprocess.run(
|
||||
["bash", "-n", str(TEMPLATE)], capture_output=True, text=True
|
||||
)
|
||||
assert proc.returncode == 0, proc.stderr
|
||||
|
||||
def test_stages_marker_present(self):
|
||||
text = TEMPLATE.read_text(encoding="utf-8")
|
||||
assert "STAGES" in text, "authoring marker missing"
|
||||
|
||||
def test_library_helpers_defined(self):
|
||||
text = TEMPLATE.read_text(encoding="utf-8")
|
||||
for helper in (
|
||||
"stage()",
|
||||
"say()",
|
||||
"step()",
|
||||
"open_url()",
|
||||
"write_env()",
|
||||
"set_secret()",
|
||||
"finish()",
|
||||
):
|
||||
assert helper in text, f"missing library helper {helper}"
|
||||
|
||||
def test_ask_secret_defined(self):
|
||||
# secret entry must exist (hidden input path)
|
||||
assert "ask_secret" in TEMPLATE.read_text(encoding="utf-8")
|
||||
|
||||
def test_total_stages_variable(self):
|
||||
assert re.search(
|
||||
r"^TOTAL_STAGES=", TEMPLATE.read_text(encoding="utf-8"), re.MULTILINE
|
||||
)
|
||||
|
||||
|
||||
class TestSkillBody:
|
||||
def test_references_template_path(self):
|
||||
assert "templates/template.sh" in SKILL_MD.read_text(encoding="utf-8")
|
||||
|
||||
def test_no_upstream_harness_residue(self):
|
||||
text = SKILL_MD.read_text(encoding="utf-8").lower()
|
||||
for token in ("claude", "/wizard", "slash command"):
|
||||
assert token not in text, f"upstream residue: {token}"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(pytest.main([__file__, "-q"]))
|
||||
Reference in New Issue
Block a user