37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
import sys
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
TOOLS_SCRIPTS_DIR = Path(__file__).resolve().parents[1]
|
|
if str(TOOLS_SCRIPTS_DIR) not in sys.path:
|
|
sys.path.insert(0, str(TOOLS_SCRIPTS_DIR))
|
|
|
|
import fix_skills_metadata
|
|
|
|
|
|
class FixSkillsMetadataSecurityTests(unittest.TestCase):
|
|
def test_skips_symlinked_skill_markdown(self):
|
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
root = Path(temp_dir)
|
|
skill_dir = root / "safe-skill"
|
|
outside_dir = root / "outside"
|
|
skill_dir.mkdir()
|
|
outside_dir.mkdir()
|
|
|
|
target = outside_dir / "SKILL.md"
|
|
target.write_text("---\nname: outside\n---\nbody\n", encoding="utf-8")
|
|
(skill_dir / "SKILL.md").symlink_to(target)
|
|
|
|
fix_skills_metadata.fix_skills(root)
|
|
|
|
self.assertEqual(
|
|
target.read_text(encoding="utf-8"),
|
|
"---\nname: outside\n---\nbody\n",
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|