Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/Runner.Listener/Runner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ public async Task<int> ExecuteCommand(CommandSettings command)
var pat = command.GetGitHubPersonalAccessToken(required: true);
var checkExtensions = HostContext.GetService<IExtensionManager>().GetExtensions<ICheckExtension>();
var sortedChecks = checkExtensions.OrderBy(x => x.Order);
var hasFailure = false;
foreach (var check in sortedChecks)
{
_term.WriteLine($"**********************************************************************************************************************");
Expand All @@ -122,6 +123,7 @@ public async Task<int> ExecuteCommand(CommandSettings command)
var result = await check.RunCheck(url, pat);
if (!result)
{
hasFailure = true;
_term.WriteLine($"** **");
_term.WriteLine($"** F A I L **");
_term.WriteLine($"** **");
Expand All @@ -144,7 +146,7 @@ public async Task<int> ExecuteCommand(CommandSettings command)
_term.WriteLine();
}

return Constants.Runner.ReturnCode.Success;
return hasFailure ? Constants.Runner.ReturnCode.TerminatedError : Constants.Runner.ReturnCode.Success;
}

// Configure runner prompt for args if not supplied
Expand Down
39 changes: 39 additions & 0 deletions src/Test/L0/Listener/RunnerL0.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.Threading.Tasks;
using GitHub.DistributedTask.WebApi;
using GitHub.Runner.Listener;
using GitHub.Runner.Listener.Check;
using GitHub.Runner.Listener.Configuration;
using GitHub.Services.Common;
using GitHub.Services.WebApi;
Expand Down Expand Up @@ -216,6 +217,44 @@ public async Task TestExecuteCommandForRunAsService(string[] args, bool configur
}
}

[Theory]
[InlineData(true, Constants.Runner.ReturnCode.Success)]
[InlineData(false, Constants.Runner.ReturnCode.TerminatedError)]
[Trait("Level", "L0")]
[Trait("Category", "Runner")]
public async Task TestCheckCommandReturnsNonZeroWhenCheckFails(bool checkResult, int expectedReturnCode)
{
using (var hc = new TestHostContext(this))
{
var extensionManager = new Mock<IExtensionManager>();
var check = new Mock<ICheckExtension>();
check.Setup(x => x.Order).Returns(1);
check.Setup(x => x.CheckName).Returns("test check");
check.Setup(x => x.CheckDescription).Returns("test description");
check.Setup(x => x.CheckLog).Returns("test log");
check.Setup(x => x.HelpLink).Returns("test help");
check.Setup(x => x.RunCheck("https://github.com/actions/runner", "token"))
.ReturnsAsync(checkResult);

extensionManager.Setup(x => x.GetExtensions<ICheckExtension>())
.Returns(new List<ICheckExtension> { check.Object });

hc.SetSingleton<IConfigurationManager>(_configurationManager.Object);
hc.SetSingleton<IPromptManager>(_promptManager.Object);
hc.SetSingleton<IExtensionManager>(extensionManager.Object);
hc.SetSingleton<IRunnerServer>(_runnerServer.Object);
hc.EnqueueInstance<IErrorThrottler>(_acquireJobThrottler.Object);

var command = new CommandSettings(hc, new[] { "--check", "--url", "https://github.com/actions/runner", "--pat", "token" });

var runner = new Runner.Listener.Runner();
runner.Initialize(hc);
var result = await runner.ExecuteCommand(command);

Assert.Equal(expectedReturnCode, result);
}
}

[Fact]
[Trait("Level", "L0")]
[Trait("Category", "Runner")]
Expand Down