Test installing multiple extensions.
(self, temp_dir, project_dir)
| 2789 | assert not prompt_file.exists() |
| 2790 | |
| 2791 | def test_multiple_extensions(self, temp_dir, project_dir): |
| 2792 | """Test installing multiple extensions.""" |
| 2793 | import yaml |
| 2794 | |
| 2795 | # Create two extensions |
| 2796 | for i in range(1, 3): |
| 2797 | ext_dir = temp_dir / f"ext{i}" |
| 2798 | ext_dir.mkdir() |
| 2799 | |
| 2800 | manifest_data = { |
| 2801 | "schema_version": "1.0", |
| 2802 | "extension": { |
| 2803 | "id": f"ext{i}", |
| 2804 | "name": f"Extension {i}", |
| 2805 | "version": "1.0.0", |
| 2806 | "description": f"Extension {i}", |
| 2807 | }, |
| 2808 | "requires": {"speckit_version": ">=0.1.0"}, |
| 2809 | "provides": { |
| 2810 | "commands": [ |
| 2811 | { |
| 2812 | "name": f"speckit.ext{i}.cmd", |
| 2813 | "file": "commands/cmd.md", |
| 2814 | } |
| 2815 | ] |
| 2816 | }, |
| 2817 | } |
| 2818 | |
| 2819 | with open(ext_dir / "extension.yml", 'w') as f: |
| 2820 | yaml.dump(manifest_data, f) |
| 2821 | |
| 2822 | (ext_dir / "commands").mkdir() |
| 2823 | (ext_dir / "commands" / "cmd.md").write_text("---\ndescription: Test\n---\nTest") |
| 2824 | |
| 2825 | manager = ExtensionManager(project_dir) |
| 2826 | |
| 2827 | # Install both |
| 2828 | manager.install_from_directory(temp_dir / "ext1", "0.1.0", register_commands=False) |
| 2829 | manager.install_from_directory(temp_dir / "ext2", "0.1.0", register_commands=False) |
| 2830 | |
| 2831 | # Verify both installed |
| 2832 | installed = manager.list_installed() |
| 2833 | assert len(installed) == 2 |
| 2834 | assert {ext["id"] for ext in installed} == {"ext1", "ext2"} |
| 2835 | |
| 2836 | # Remove first |
| 2837 | manager.remove("ext1") |
| 2838 | |
| 2839 | # Verify only second remains |
| 2840 | installed = manager.list_installed() |
| 2841 | assert len(installed) == 1 |
| 2842 | assert installed[0]["id"] == "ext2" |
| 2843 | |
| 2844 | |
| 2845 | # ===== Extension Catalog Tests ===== |
nothing calls this directly
no test coverage detected