journal/Journal.DevTool/tests/DevTool.Tests/WorkspaceLoaderTests.cs

57 lines
1.6 KiB
C#

using Sdt.Config;
using Xunit;
namespace DevTool.Tests;
public sealed class WorkspaceLoaderTests
{
[Fact]
public void FindAndLoad_DoesNotThrow_WhenAutoDiscoverHitsStrictLegacyProject()
{
var root = Path.Combine(Path.GetTempPath(), "sdt-workspace-" + Guid.NewGuid().ToString("N"));
Directory.CreateDirectory(root);
File.WriteAllText(Path.Combine(root, "devtool.json"), """
{
"name": "legacy",
"version": "0.1.0",
"targets": [
{
"id": "build",
"label": "Build",
"group": "Build",
"command": "dotnet",
"args": ["build"],
"workingDir": ".",
"dependsOn": []
}
],
"workflows": []
}
""");
Environment.SetEnvironmentVariable("SDT_LEGACY_MODE", null);
var result = WorkspaceLoader.FindAndLoad(root);
Assert.Null(result);
}
[Fact]
public void ResolveProjectRoot_AcceptsAbsolutePaths()
{
var root = Path.GetFullPath(Path.Combine(Path.GetTempPath(), "ws-" + Guid.NewGuid().ToString("N")));
var abs = Path.GetFullPath(Path.Combine(Path.GetTempPath(), "proj-" + Guid.NewGuid().ToString("N")));
var project = new WorkspaceProject { Path = abs };
var resolved = WorkspaceLoader.ResolveProjectRoot(root, project);
Assert.Equal(abs, resolved, ignoreCase: OperatingSystem.IsWindows());
}
[Fact]
public void WorkspaceProject_AdditionalFields_DefaultsAreSafe()
{
var project = new WorkspaceProject();
Assert.Empty(project.Tags);
Assert.Empty(project.ToolFamilies);
Assert.False(project.Disabled);
}
}