| File: TestServices\AlternateWorkflowConventions.cs | Web Access |
| Project: src\tests\AnalyzeCiFailure.Tests\AnalyzeCiFailure.Tests.csproj (AnalyzeCiFailure.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Text.Json.Nodes; using AnalyzeCiFailure; namespace Infrastructure.Tests; /// <summary>Supplies controllable alternate-workflow artifact expectations for common collector contract tests.</summary> internal sealed class AlternateWorkflowConventions(TestArtifactFormat format, TestEvidencePolicy policy) : IGitHubWorkflowConventions { internal List<string> DescribedJobs { get; } = []; internal Dictionary<string, TestArtifactExpectation> AdditionalJobs { get; } = []; internal List<TestArtifactExpectation> AdditionalArtifacts { get; } = []; internal bool RejectDescriptions { get; init; } public string WorkflowPath => ".github/workflows/alternate.yml"; public bool IsAggregationJob(JsonObject job) => CiFailureJson.Text(job["name"]) == "Alternate gate"; public IReadOnlyList<TestArtifactExpectation> DescribeTestArtifacts(JsonObject job, int runAttempt) { var name = CiFailureJson.Text(job["name"])!; DescribedJobs.Add(name); if (RejectDescriptions) { throw new ValidationException("Alternate tests have an invalid artifact convention"); } if (AdditionalJobs.TryGetValue(name, out var plan)) { return [plan]; } return name == "Alternate tests" ? [new TestArtifactExpectation(name, $"alternate-results-{runAttempt}", format, policy), .. AdditionalArtifacts] : []; } }