60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using Sdt.Config;
|
|
using Sdt.Core;
|
|
using Xunit;
|
|
|
|
namespace DevTool.Tests;
|
|
|
|
public sealed class RequirementResolverTests
|
|
{
|
|
private readonly RequirementResolver _resolver = new();
|
|
|
|
[Fact]
|
|
public void TauriBuildAction_RequiresNodeNpmCargo_NotGlobalTauri()
|
|
{
|
|
var step = new WorkflowStep
|
|
{
|
|
Id = "tauri",
|
|
Label = "tauri",
|
|
Action = "tauri-build",
|
|
};
|
|
|
|
var tools = _resolver.Resolve(step).Select(r => r.Tool).ToHashSet(StringComparer.OrdinalIgnoreCase);
|
|
Assert.Contains("node", tools);
|
|
Assert.Contains("npm", tools);
|
|
Assert.Contains("cargo", tools);
|
|
Assert.DoesNotContain("tauri", tools);
|
|
}
|
|
|
|
[Fact]
|
|
public void LegacyPwshTarget_InferenceMatchesExpected()
|
|
{
|
|
var target = new BuildTarget
|
|
{
|
|
Id = "web",
|
|
Label = "Web",
|
|
Command = "pwsh",
|
|
Args = ["-NoProfile", "-File", "scripts/publish-app.ps1", "-Target", "web"],
|
|
};
|
|
|
|
var tools = _resolver.Resolve(target).Select(r => r.Tool).ToHashSet(StringComparer.OrdinalIgnoreCase);
|
|
Assert.Contains("python", tools);
|
|
Assert.Contains("node", tools);
|
|
Assert.Contains("npm", tools);
|
|
}
|
|
|
|
[Fact]
|
|
public void MavenCommand_InferenceRequiresMaven()
|
|
{
|
|
var step = new WorkflowStep
|
|
{
|
|
Id = "maven-build",
|
|
Label = "maven",
|
|
Command = "mvn",
|
|
Args = ["package"],
|
|
};
|
|
|
|
var tools = _resolver.Resolve(step).Select(r => r.Tool).ToHashSet(StringComparer.OrdinalIgnoreCase);
|
|
Assert.Contains("maven", tools);
|
|
}
|
|
}
|