49 lines
1.7 KiB
C#
49 lines
1.7 KiB
C#
using System;
|
|
using Moq;
|
|
using NixWslWrapper.Cli;
|
|
using NixWslWrapper.Core.Domain;
|
|
using NixWslWrapper.Core.Interfaces;
|
|
using Xunit;
|
|
|
|
namespace NixWslWrapper.Tests
|
|
{
|
|
public class CliTests
|
|
{
|
|
[Fact]
|
|
public void CliController_ForwardArguments_ShouldReturnExecutorExitCode()
|
|
{
|
|
var mockExecutor = new Mock<ICommandExecutor>();
|
|
var mockVerifier = new Mock<IPrerequisiteVerifier>();
|
|
var expectedResult = new ExecutionResult(42);
|
|
mockExecutor
|
|
.Setup(m => m.Execute(It.IsAny<NixArguments>(), It.IsAny<WslTarget>()))
|
|
.Returns(expectedResult);
|
|
|
|
var controller = new CliController(mockExecutor.Object, mockVerifier.Object);
|
|
string[] cliArgs = new[] { "run", "nixpkgs#hello" };
|
|
|
|
int exitCode = controller.Run(cliArgs);
|
|
|
|
Assert.Equal(42, exitCode);
|
|
mockExecutor.Verify(m => m.Execute(
|
|
It.Is<NixArguments>(a => a.RawArguments.Length == 2 && a.RawArguments[0] == "run"),
|
|
It.IsAny<WslTarget>()
|
|
), Times.Once);
|
|
}
|
|
|
|
[Fact]
|
|
public void CliController_HelpMenuFlag_ShouldReturnZeroImmediately()
|
|
{
|
|
var mockExecutor = new Mock<ICommandExecutor>();
|
|
var mockVerifier = new Mock<IPrerequisiteVerifier>();
|
|
var controller = new CliController(mockExecutor.Object, mockVerifier.Object);
|
|
string[] cliArgs = new[] { "--wsl-help" };
|
|
|
|
int exitCode = controller.Run(cliArgs);
|
|
|
|
Assert.Equal(0, exitCode);
|
|
mockExecutor.Verify(m => m.Execute(It.IsAny<NixArguments>(), It.IsAny<WslTarget>()), Times.Never);
|
|
}
|
|
}
|
|
}
|