import tempfile
import unittest
from pathlib import Path
from unittest.mock import patch
from scripts.export_skill import bootstrap_skill, export_skill
class ExportSkillTests(unittest.TestCase):
def test_export_skill_builds_clean_skill_layout(self):
with tempfile.TemporaryDirectory() as tmp_dir:
target_dir = Path(tmp_dir) / "slidea"
exported_dir = export_skill(target_dir)
self.assertEqual(exported_dir, target_dir)
self.assertTrue((target_dir / "SKILL.md").exists())
self.assertFalse((target_dir / "README.md").exists())
self.assertTrue((target_dir / "INSTALL.md").exists())
self.assertTrue((target_dir / "core").exists())
self.assertTrue((target_dir / "scripts" / "run_ppt_pipeline.py").exists())
self.assertTrue((target_dir / "scripts" / "patch_render_missing.py").exists())
self.assertTrue((target_dir / "scripts" / "utils").exists())
self.assertTrue((target_dir / "scripts" / "install" / "install.py").exists())
self.assertTrue(
(target_dir / "scripts" / "install" / "extra_install_linux_rhel.sh").exists()
)
self.assertFalse((target_dir / "scripts" / "export_skill.py").exists())
def test_bootstrap_skill_runs_exported_installer(self):
with tempfile.TemporaryDirectory() as tmp_dir:
target_dir = Path(tmp_dir) / "slidea"
export_skill(target_dir)
with patch("scripts.export_skill.subprocess.run") as mock_run:
bootstrap_skill(target_dir)
mock_run.assert_called_once()
command = mock_run.call_args.args[0]
self.assertEqual(command[1], str(target_dir / "scripts" / "install" / "install.py"))
self.assertEqual(mock_run.call_args.kwargs["cwd"], target_dir)
self.assertTrue(mock_run.call_args.kwargs["check"])
if __name__ == "__main__":
unittest.main()