49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
"""Tests for Pi full-adaptation package wiring.
|
|
|
|
TDD RED phase: these tests define the minimum package-level contract:
|
|
- The Pi package must ship both skill and extension resources.
|
|
- The extension entrypoint must exist inside the package.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
PACKAGE_JSON = REPO_ROOT / ".pi" / "skills" / "planning-with-files" / "package.json"
|
|
EXT_INDEX = (
|
|
REPO_ROOT
|
|
/ ".pi"
|
|
/ "skills"
|
|
/ "planning-with-files"
|
|
/ "extensions"
|
|
/ "planning-with-files"
|
|
/ "index.ts"
|
|
)
|
|
|
|
|
|
class PiExtensionPackagingTests(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
self.pkg = json.loads(PACKAGE_JSON.read_text(encoding="utf-8"))
|
|
|
|
def test_manifest_declares_pi_extension_entry(self) -> None:
|
|
pi_block = self.pkg.get("pi", {})
|
|
self.assertIn("extensions", pi_block)
|
|
self.assertIn(
|
|
"extensions/planning-with-files/index.ts",
|
|
pi_block.get("extensions", []),
|
|
)
|
|
|
|
def test_manifest_files_include_extensions_dir(self) -> None:
|
|
files = self.pkg.get("files", [])
|
|
self.assertIn("extensions/", files)
|
|
|
|
def test_extension_entrypoint_exists(self) -> None:
|
|
self.assertTrue(EXT_INDEX.exists(), f"missing extension entrypoint: {EXT_INDEX}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|