set context steps.<id>.outcome

This commit is contained in:
eric sciple
2020-01-13 19:13:36 -05:00
parent 02639a2092
commit 7a18d3001d
4 changed files with 50 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
using GitHub.DistributedTask.WebApi;
using GitHub.DistributedTask.Pipelines.ContextData;
using GitHub.DistributedTask.WebApi;
using System;
namespace GitHub.Runner.Common.Util
@@ -75,5 +76,29 @@ namespace GitHub.Runner.Common.Util
throw new NotSupportedException(result.ToString());
}
}
public static StringContextData ToContextData(this TaskResult result)
{
string str;
switch (result)
{
case TaskResult.Succeeded:
str = "success";
break;
case TaskResult.Failed:
str = "failure";
break;
case TaskResult.Canceled:
str = "cancelled";
break;
case TaskResult.Skipped:
str = "skipped";
break;
default:
throw new NotSupportedException($"Unexpected task result '{result}' when converting to context data");
}
return str;
}
}
}

View File

@@ -309,6 +309,12 @@ namespace GitHub.Runner.Worker
Result = result;
}
// update context
if (!string.IsNullOrEmpty(ContextName))
{
StepsContext.SetOutcome(ScopeName, ContextName, Result.Value.ToContextData());
}
// report total delay caused by server throttling.
if (_totalThrottlingDelayInMilliseconds > 0)
{

View File

@@ -56,13 +56,13 @@ namespace GitHub.Runner.Worker
}
}
public void SetResult(
public void SetOutcome(
string scopeName,
string stepName,
string result)
StringContextData outcome)
{
var step = GetStep(scopeName, stepName);
step["result"] = new StringContextData(result);
step["outcome"] = outcome;
}
private DictionaryContextData GetStep(string scopeName, string stepName)

View File

@@ -202,5 +202,20 @@ namespace GitHub.Runner.Common.Tests.Util
Assert.Equal(TaskResult.Skipped, merged);
}
}
[Fact]
[Trait("Level", "L0")]
[Trait("Category", "Common")]
public void ToContextData()
{
// Arrange
using (TestHostContext hc = new TestHostContext(this))
{
Assert.Equal("success", TaskResult.Succeeded.ToContextData().ToString());
Assert.Equal("failure", TaskResult.Failed.ToContextData().ToString());
Assert.Equal("cancelled", TaskResult.Canceled.ToContextData().ToString());
Assert.Equal("skipped", TaskResult.Skipped.ToContextData().ToString());
}
}
}
}