Forge
csharp8e44aa49
1using McpToolManifest;
2
3namespace GitMcp.Tests;
4
5public sealed class McpToolManifestTests
6{
7 [Fact]
8 public void Mcp_tools_manifest_matches_ToolCatalog_names_and_descriptions()
9 {
10 var manifestPath = Path.Combine(AppContext.BaseDirectory, "mcp-tools.manifest.json");
11 Assert.True(File.Exists(manifestPath), $"Missing copied manifest: {manifestPath}");
12
13 var doc = McpToolManifestReader.Load(manifestPath);
14 var validation = McpToolManifestReader.Validate(doc);
15 Assert.True(validation.Count == 0, string.Join(Environment.NewLine, validation));
16
17 Assert.Equal("git-mcp", doc.McpId);
18
19 var catalog = ToolCatalog.Build();
20 var manifestNames = doc.Tools.Select(t => t.Name).ToArray();
21 var catalogNames = catalog.Select(t => t.Name).ToArray();
22 var nameDiff = ToolCatalogNameComparer.Compare(manifestNames, catalogNames);
23 Assert.True(nameDiff.Count == 0, string.Join(Environment.NewLine, nameDiff));
24
25 var catalogByName = catalog.ToDictionary(t => t.Name, t => t.Description, StringComparer.Ordinal);
26 Assert.Equal(catalogByName.Count, doc.Tools.Count);
27 foreach (var tool in doc.Tools)
28 {
29 Assert.True(catalogByName.TryGetValue(tool.Name, out var expected), $"Unexpected tool in manifest: {tool.Name}");
30 Assert.Equal(expected, tool.Description);
31 }
32 }
33}
34
View only · write via MCP/CIDE