Forge
csharpdeeb25a2
1using CascadeIDE.Features.Launch.DataAcquisition;
2using Xunit;
3
4namespace CascadeIDE.Tests;
5
6public sealed class LaunchProfilesStoreTests
7{
8 [Fact]
9 public void Migrates_From_StartupProjectJson_To_Toml_And_Yields_Active_Project()
10 {
11 var root = Path.Combine(Path.GetTempPath(), "cide-launch-profiles-" + Guid.NewGuid().ToString("n"));
12 Directory.CreateDirectory(root);
13 try
14 {
15 var sln = Path.Combine(root, "Test.sln");
16 File.WriteAllText(sln, "\n");
17
18 var cide = Path.Combine(root, ".cascade-ide");
19 Directory.CreateDirectory(cide);
20 File.WriteAllText(
21 Path.Combine(cide, "startup-project.json"),
22 """{"StartupProjectRelativePath":"sub/P.csproj"}""" + "\n");
23
24 Assert.True(LaunchProfilesStore.TryGetActiveProjectRelativePath(sln, out var rel, out var err), err);
25 var expected = Path.Combine("sub", "P.csproj");
26 Assert.Equal(expected, rel);
27 Assert.True(File.Exists(Path.Combine(cide, LaunchProfilesStore.FileName)));
28 }
29 finally
30 {
31 try { Directory.Delete(root, recursive: true); }
32 catch { /* tmp cleanup best-effort */ }
33 }
34 }
35
36 [Fact]
37 public void Missing_Profile_Yields_profile_not_found()
38 {
39 var root = Path.Combine(Path.GetTempPath(), "cide-launch-bad-" + Guid.NewGuid().ToString("n"));
40 Directory.CreateDirectory(root);
41 try
42 {
43 var sln = Path.Combine(root, "A.sln");
44 File.WriteAllText(sln, "\n");
45 var cide = Path.Combine(root, ".cascade-ide");
46 Directory.CreateDirectory(cide);
47 File.WriteAllText(
48 Path.Combine(cide, LaunchProfilesStore.FileName),
49 "version = 1\nactive_profile = \"X\"\n[profiles.x]\nproject = \"P.csproj\"\n");
50
51 Assert.False(LaunchProfilesStore.TryResolveProfileForLaunch(sln, "does_not_exist", out _, out var err));
52 Assert.Contains("profile_not_found", err, StringComparison.Ordinal);
53 }
54 finally
55 {
56 try { Directory.Delete(root, recursive: true); }
57 catch { /* ignore */ }
58 }
59 }
60}
61
View only · write via MCP/CIDE