From 3bc49d0567e0eecf4f295947add53fde2ea9a346 Mon Sep 17 00:00:00 2001 From: TingluoHuang Date: Wed, 27 Oct 2021 14:36:24 -0400 Subject: [PATCH] l0. --- src/Misc/externals.sh | 2 +- src/Test/L0/Worker/ActionManagerL0.cs | 76 ++++++++++++++++++- src/Test/L0/Worker/ActionManifestManagerL0.cs | 2 + 3 files changed, 76 insertions(+), 4 deletions(-) diff --git a/src/Misc/externals.sh b/src/Misc/externals.sh index 1cb8d42e8..fe7a74b9a 100755 --- a/src/Misc/externals.sh +++ b/src/Misc/externals.sh @@ -143,8 +143,8 @@ fi # Download the external tools for Linux PACKAGERUNTIMEs. if [[ "$PACKAGERUNTIME" == "linux-x64" ]]; then acquireExternalTool "$NODE_URL/v${NODE12_VERSION}/node-v${NODE12_VERSION}-linux-x64.tar.gz" node12 fix_nested_dir - acquireExternalTool "$NODE_URL/v${NODE16_VERSION}/node-v${NODE16_VERSION}-linux-x64.tar.gz" node16 fix_nested_dir acquireExternalTool "https://vstsagenttools.blob.core.windows.net/tools/nodejs/${NODE12_VERSION}/alpine/x64/node-v${NODE12_VERSION}-alpine-x64.tar.gz" node12_alpine + acquireExternalTool "$NODE_URL/v${NODE16_VERSION}/node-v${NODE16_VERSION}-linux-x64.tar.gz" node16 fix_nested_dir acquireExternalTool "https://vstsagenttools.blob.core.windows.net/tools/nodejs/${NODE16_VERSION}/alpine/x64/node-v${NODE16_VERSION}-alpine-x64.tar.gz" node16_alpine fi diff --git a/src/Test/L0/Worker/ActionManagerL0.cs b/src/Test/L0/Worker/ActionManagerL0.cs index 62701bde8..5334b236f 100644 --- a/src/Test/L0/Worker/ActionManagerL0.cs +++ b/src/Test/L0/Worker/ActionManagerL0.cs @@ -965,7 +965,7 @@ namespace GitHub.Runner.Common.Tests.Worker }; //Act - var result = await _actionManager.PrepareActionsAsync(_ec.Object, actions); + var result = await _actionManager.PrepareActionsAsync(_ec.Object, actions); //Assert Assert.Equal(1, result.PreStepTracker.Count); @@ -1288,7 +1288,7 @@ runs: [Fact] [Trait("Level", "L0")] [Trait("Category", "Worker")] - public void LoadsNodeActionDefinition() + public void LoadsNode12ActionDefinition() { try { @@ -1344,8 +1344,78 @@ runs: Assert.True(string.IsNullOrEmpty(inputDefaults["entryPoint"])); Assert.NotNull(definition.Data.Execution); // execution - Assert.NotNull((definition.Data.Execution as NodeJSActionExecutionData)); + Assert.NotNull(definition.Data.Execution as NodeJSActionExecutionData); Assert.Equal("task.js", (definition.Data.Execution as NodeJSActionExecutionData).Script); + Assert.Equal("node12", (definition.Data.Execution as NodeJSActionExecutionData).NodeVersion); + } + finally + { + Teardown(); + } + } + + [Fact] + [Trait("Level", "L0")] + [Trait("Category", "Worker")] + public void LoadsNode16ActionDefinition() + { + try + { + // Arrange. + Setup(); + const string Content = @" +# Container action +name: 'Hello World' +description: 'Greet the world and record the time' +author: 'GitHub' +inputs: + greeting: # id of input + description: 'The greeting we choose - will print ""{greeting}, World!"" on stdout' + required: true + default: 'Hello' + entryPoint: # id of input + description: 'optional docker entrypoint overwrite.' + required: false +outputs: + time: # id of output + description: 'The time we did the greeting' +icon: 'hello.svg' # vector art to display in the GitHub Marketplace +color: 'green' # optional, decorates the entry in the GitHub Marketplace +runs: + using: 'node16' + main: 'task.js' +"; + Pipelines.ActionStep instance; + string directory; + CreateAction(yamlContent: Content, instance: out instance, directory: out directory); + + // Act. + Definition definition = _actionManager.LoadAction(_ec.Object, instance); + + // Assert. + Assert.NotNull(definition); + Assert.Equal(directory, definition.Directory); + Assert.NotNull(definition.Data); + Assert.NotNull(definition.Data.Inputs); // inputs + Dictionary inputDefaults = new Dictionary(StringComparer.OrdinalIgnoreCase); + foreach (var input in definition.Data.Inputs) + { + var name = input.Key.AssertString("key").Value; + var value = input.Value.AssertScalar("value").ToString(); + + _hc.GetTrace().Info($"Default: {name} = {value}"); + inputDefaults[name] = value; + } + + Assert.Equal(2, inputDefaults.Count); + Assert.True(inputDefaults.ContainsKey("greeting")); + Assert.Equal("Hello", inputDefaults["greeting"]); + Assert.True(string.IsNullOrEmpty(inputDefaults["entryPoint"])); + Assert.NotNull(definition.Data.Execution); // execution + + Assert.NotNull(definition.Data.Execution as NodeJSActionExecutionData); + Assert.Equal("task.js", (definition.Data.Execution as NodeJSActionExecutionData).Script); + Assert.Equal("node16", (definition.Data.Execution as NodeJSActionExecutionData).NodeVersion); } finally { diff --git a/src/Test/L0/Worker/ActionManifestManagerL0.cs b/src/Test/L0/Worker/ActionManifestManagerL0.cs index 8ccdb095c..d11f3c1e8 100644 --- a/src/Test/L0/Worker/ActionManifestManagerL0.cs +++ b/src/Test/L0/Worker/ActionManifestManagerL0.cs @@ -408,6 +408,7 @@ namespace GitHub.Runner.Common.Tests.Worker var nodeAction = result.Execution as NodeJSActionExecutionData; Assert.Equal("main.js", nodeAction.Script); + Assert.Equal("node12", nodeAction.NodeVersion); } finally { @@ -450,6 +451,7 @@ namespace GitHub.Runner.Common.Tests.Worker var nodeAction = result.Execution as NodeJSActionExecutionData; Assert.Equal("main.js", nodeAction.Script); + Assert.Equal("node16", nodeAction.NodeVersion); } finally {