File: Program.cs
Web Access
Project: src\eng\tools\HelixTestRunner\HelixTestRunner.csproj (HelixTestRunner)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Globalization;
using System.Threading.Tasks;
 
namespace HelixTestRunner;
 
class Program
{
    static async Task Main(string[] args)
    {
        try
        {
            var runner = new TestRunner(HelixTestRunnerOptions.Parse(args));
 
            var keepGoing = runner.SetupEnvironment();
            if (keepGoing)
            {
                keepGoing = await runner.InstallDotnetToolsAsync();
            }
 
            if (keepGoing)
            {
                if (runner.Options.InstallPlaywright)
                {
                    keepGoing = runner.InstallPlaywright();
                }
                else
                {
                    ProcessUtil.PrintMessage("Playwright install skipped.");
                }
            }
 
            runner.DisplayContents();
 
            if (keepGoing)
            {
                if (!await runner.CheckTestDiscoveryAsync())
                {
                    ProcessUtil.PrintMessage("RunTest stopping due to test discovery failure.");
                    Environment.Exit(1);
                    return;
                }
 
                ProcessUtil.PrintMessage("Start running tests");
                var exitCode = await runner.RunTestsAsync();
                ProcessUtil.PrintMessage("Running tests complete");
 
                ProcessUtil.PrintMessage("Uploading test results");
                runner.UploadResults();
                ProcessUtil.PrintMessage("Test results uploaded");
 
                ProcessUtil.PrintMessage($"Completed Helix job with exit code '{exitCode}'");
                Environment.Exit(exitCode);
            }
 
            ProcessUtil.PrintMessage("Tests were not run due to previous failures. Exit code=1");
            Environment.Exit(1);
        }
        catch (Exception e)
        {
            ProcessUtil.PrintMessage($"HelixTestRunner uncaught exception: {e.ToString()}");
            Environment.Exit(1);
        }
    }
}