csharpcf25d736 | 1 | using CascadeIDE.Models; |
| 2 | using CascadeIDE.Services; |
| 3 | using Xunit; |
| 4 | |
| 5 | namespace CascadeIDE.Tests; |
| 6 | |
| 7 | public sealed class McpAgentNotesServiceKbBaseTests |
| 8 | { |
| 9 | [Fact] |
| 10 | public void ReadKnowledgeFile_LoadsEmbeddedSmoke_WhenRuntimeNotConfigured() |
| 11 | { |
| 12 | AgentNotesRuntimeLoader.Reset(); |
| 13 | using var stream = typeof(KbBaseEmbeddedBundleProvisioner).Assembly.GetManifestResourceStream( |
| 14 | KbBaseEmbeddedBundleProvisioner.ResourceName); |
| 15 | if (stream is null) |
| 16 | return; // KbBase/kb-base-cide.zip optional in checkout — см. tools/publish-kb-base-embed.ps1 |
| 17 | |
| 18 | var embeddedRoot = KbBaseEmbeddedBundleProvisioner.TryGetEmbeddedCanonRoot(); |
| 19 | if (embeddedRoot is null) |
| 20 | return; |
| 21 | |
| 22 | var smokePath = Path.Combine(embeddedRoot, "knowledge", "kb-base-cide-smoke.md"); |
| 23 | if (!File.Exists(smokePath)) |
| 24 | return; // zip без smoke-файла в этой сборке |
| 25 | |
| 26 | var svc = new McpAgentNotesService(() => new CascadeIdeSettings()); |
| 27 | var text = svc.ReadKnowledgeFile("kb-base-cide-smoke.md").Trim(); |
| 28 | |
| 29 | Assert.Equal("kb-base-cide-smoke", text); |
| 30 | } |
| 31 | } |
| 32 | |
View only · write via MCP/CIDE