Address situation if FileTable is null + add sanity check for adding file to fileTable

This commit is contained in:
Ethan Chiu
2020-07-08 14:00:12 -04:00
parent 35879fc3b1
commit 8828263795
2 changed files with 9 additions and 5 deletions
+7 -3
View File
@@ -74,8 +74,12 @@ namespace GitHub.Runner.Worker
var fileId = templateContext.GetFileId(fileRelativePath); var fileId = templateContext.GetFileId(fileRelativePath);
// Add this file to the FileTable in executionContext if it hasn't been added already // Add this file to the FileTable in executionContext if it hasn't been added already
// we use > since fileID is zero indexed // we use > since fileID is 1 indexed
if (fileId > executionContext.FileTable?.Count) if (executionContext.FileTable == null)
{
executionContext.FileTable = new string[0];
}
else if (fileId > executionContext.FileTable.Count)
{ {
executionContext.FileTable.Add(fileRelativePath); executionContext.FileTable.Add(fileRelativePath);
} }
@@ -136,7 +140,7 @@ namespace GitHub.Runner.Worker
if (actionDefinition.Execution == null) if (actionDefinition.Execution == null)
{ {
executionContext.Debug($"Loaded action.yml file: {StringUtil.ConvertToJson(actionDefinition)}"); executionContext.Debug($"Loaded action.yml file: {StringUtil.ConvertToJson(actionDefinition)}");
throw new ArgumentException($"Top level 'runs:' section is required for {manifestFile}"); throw new ArgumentException($"Top level 'runs:' section is required for {fileRelativePath}");
} }
else else
{ {
+2 -2
View File
@@ -53,7 +53,7 @@ namespace GitHub.Runner.Worker
Dictionary<string, VariableValue> JobOutputs { get; } Dictionary<string, VariableValue> JobOutputs { get; }
IDictionary<String, String> EnvironmentVariables { get; } IDictionary<String, String> EnvironmentVariables { get; }
IDictionary<String, ContextScope> Scopes { get; } IDictionary<String, ContextScope> Scopes { get; }
IList<String> FileTable { get; } IList<String> FileTable { get; set; }
StepsContext StepsContext { get; } StepsContext StepsContext { get; }
DictionaryContextData ExpressionValues { get; } DictionaryContextData ExpressionValues { get; }
IList<IFunctionInfo> ExpressionFunctions { get; } IList<IFunctionInfo> ExpressionFunctions { get; }
@@ -150,7 +150,7 @@ namespace GitHub.Runner.Worker
public Dictionary<string, VariableValue> JobOutputs { get; private set; } public Dictionary<string, VariableValue> JobOutputs { get; private set; }
public IDictionary<String, String> EnvironmentVariables { get; private set; } public IDictionary<String, String> EnvironmentVariables { get; private set; }
public IDictionary<String, ContextScope> Scopes { get; private set; } public IDictionary<String, ContextScope> Scopes { get; private set; }
public IList<String> FileTable { get; private set; } public IList<String> FileTable { get; set; }
public StepsContext StepsContext { get; private set; } public StepsContext StepsContext { get; private set; }
public DictionaryContextData ExpressionValues { get; } = new DictionaryContextData(); public DictionaryContextData ExpressionValues { get; } = new DictionaryContextData();
public IList<IFunctionInfo> ExpressionFunctions { get; } = new List<IFunctionInfo>(); public IList<IFunctionInfo> ExpressionFunctions { get; } = new List<IFunctionInfo>();