Forge
csharpdeeb25a2
1using CascadeIDE.Services.Roslyn;
2using Xunit;
3
4namespace CascadeIDE.Tests;
5
6public sealed class RoslynEditorWorkspacePathTests
7{
8 [Fact]
9 public void Resolve_SlnPath_ReturnsSln()
10 {
11 var path = RoslynEditorWorkspacePath.Resolve(@"C:\repo\app.sln", @"C:\repo\src\Foo.cs");
12 Assert.Equal(@"C:\repo\app.sln", path);
13 }
14
15 [Fact]
16 public void Resolve_SlnxPath_FindsCsprojNearFile()
17 {
18 var root = Path.Combine(Path.GetTempPath(), "cide-roslyn-path-" + Guid.NewGuid().ToString("N"));
19 var srcDir = Path.Combine(root, "src");
20 Directory.CreateDirectory(srcDir);
21 var csproj = Path.Combine(srcDir, "App.csproj");
22 File.WriteAllText(csproj, "<Project Sdk=\"Microsoft.NET.Sdk\" />");
23 var cs = Path.Combine(srcDir, "Foo.cs");
24 File.WriteAllText(cs, "class Foo {}");
25 var slnx = Path.Combine(root, "App.slnx");
26 File.WriteAllText(slnx, "<Solution><Project Path=\"src/App.csproj\" /></Solution>");
27
28 try
29 {
30 var path = RoslynEditorWorkspacePath.Resolve(slnx, cs, root);
31 Assert.Equal(csproj, path);
32 }
33 finally
34 {
35 try { Directory.Delete(root, recursive: true); } catch { /* best effort */ }
36 }
37 }
38
39 [Fact]
40 public void Resolve_FolderWorkspace_FindsNearestCsproj()
41 {
42 var root = Path.Combine(Path.GetTempPath(), "cide-roslyn-path-" + Guid.NewGuid().ToString("N"));
43 var srcDir = Path.Combine(root, "src");
44 Directory.CreateDirectory(srcDir);
45 var csproj = Path.Combine(root, "App.csproj");
46 File.WriteAllText(csproj, "<Project Sdk=\"Microsoft.NET.Sdk\" />");
47 var cs = Path.Combine(srcDir, "Foo.cs");
48 File.WriteAllText(cs, "class Foo {}");
49
50 try
51 {
52 var path = RoslynEditorWorkspacePath.Resolve(null, cs, root);
53 Assert.Equal(csproj, path);
54 }
55 finally
56 {
57 try { Directory.Delete(root, recursive: true); } catch { /* best effort */ }
58 }
59 }
60}
61
View only · write via MCP/CIDE