Task PopulateTasksAsync() { // Missing: // api-diff testSelector.SelectTests(); DeviceLoader.LoadAllAsync().DoNotAwait(); var simTasksFactory = new RunSimulatorTasksFactory(); var loadsim = simTasksFactory.CreateAsync(this, processManager, testVariationsFactory) .ContinueWith((v) => { if (v.Status == TaskStatus.RanToCompletion) { Console.WriteLine("Simulator tasks created"); Tasks.AddRange(v.Result); } else { Console.WriteLine($"Failed to create simulator tasks: {v.Exception}"); } }); //Tasks.AddRange (await CreateRunSimulatorTasksAsync ()); var crashReportSnapshotFactory = new CrashSnapshotReporterFactory(processManager); // all factories are enumerators \o/ var testFactories = new IEnumerable <AppleTestTask> [] { new MacTestTasksEnumerable(this, processManager, crashReportSnapshotFactory, testVariationsFactory), new NUnitTestTasksEnumerable(this, processManager), new MakeTestTaskEnumerable(this, processManager) }; // add all tests defined by the factory foreach (var f in testFactories) { Tasks.AddRange(f); } // individual special tasks var buildXtroTests = new MakeTask(jenkins: this, processManager: processManager) { Platform = TestPlatform.All, TestName = "Xtro", Target = "wrench", WorkingDirectory = Path.Combine(HarnessConfiguration.RootDirectory, "xtro-sharpie"), Ignored = !IncludeXtro, Timeout = TimeSpan.FromMinutes(15), }; var runXtroReporter = new RunXtroTask(this, buildXtroTests, processManager, crashReportSnapshotFactory) { Platform = TestPlatform.Mac, TestName = buildXtroTests.TestName, Ignored = buildXtroTests.Ignored, WorkingDirectory = buildXtroTests.WorkingDirectory, }; Tasks.Add(runXtroReporter); var buildDotNetGeneratorProject = new TestProject(Path.GetFullPath(Path.Combine(HarnessConfiguration.RootDirectory, "bgen", "bgen-tests.csproj"))); var buildDotNetGenerator = new DotNetBuildTask(jenkins: this, testProject: buildDotNetGeneratorProject, processManager: processManager) { TestProject = new TestProject(Path.GetFullPath(Path.Combine(HarnessConfiguration.RootDirectory, "bgen", "bgen-tests.csproj"))), SpecifyPlatform = false, SpecifyConfiguration = false, Platform = TestPlatform.iOS, }; var runDotNetGenerator = new DotNetTestTask(this, buildDotNetGenerator, processManager) { TestProject = buildDotNetGeneratorProject, Platform = TestPlatform.iOS, TestName = "Generator tests", Mode = ".NET", Ignored = !IncludeBtouch, }; Tasks.Add(runDotNetGenerator); var buildDotNetTestsProject = new TestProject(Path.GetFullPath(Path.Combine(HarnessConfiguration.RootDirectory, "dotnet", "UnitTests", "DotNetUnitTests.csproj"))); var buildDotNetTests = new DotNetBuildTask(this, testProject: buildDotNetTestsProject, processManager: processManager) { SpecifyPlatform = false, Platform = TestPlatform.All, ProjectConfiguration = "Debug", Ignored = !IncludeDotNet, }; var runDotNetTests = new DotNetTestTask(this, buildDotNetTests, processManager) { TestProject = buildDotNetTestsProject, Platform = TestPlatform.All, TestName = "DotNet tests", Timeout = TimeSpan.FromMinutes(5), Ignored = !IncludeDotNet, }; Tasks.Add(runDotNetTests); var deviceTestFactory = new RunDeviceTasksFactory(); var loaddev = deviceTestFactory.CreateAsync(this, processManager, testVariationsFactory).ContinueWith((v) => { Console.WriteLine("Got device tasks completed"); Tasks.AddRange(v.Result); }); return(Task.WhenAll(loadsim, loaddev)); }
IEnumerable <ITestTask> CreateMacCatalystTests(CrashSnapshotReporterFactory crashSnapshotReporterFactory) { var projectTasks = new List <RunTestTask> (); foreach (var project in Harness.IOSTestProjects) { if (!project.IsExecutableProject) { continue; } if (project.SkipMacCatalystVariation) { continue; } if (!project.GenerateVariations) { continue; } var ignored = project.Ignore ?? !IncludeMacCatalyst; if (!IsIncluded(project)) { ignored = true; } var macCatalystProject = project.GenerateVariations ? project.AsMacCatalystProject() : project; var build = new MSBuildTask(jenkins: this, testProject: macCatalystProject, processManager: processManager) { ProjectConfiguration = "Debug", ProjectPlatform = "iPhoneSimulator", Platform = TestPlatform.MacCatalyst, TestName = project.Name, }; build.CloneTestProject(MainLog, processManager, macCatalystProject, HarnessConfiguration.RootDirectory); RunTestTask task; if (project.IsNUnitProject) { var dll = Path.Combine(Path.GetDirectoryName(build.TestProject.Path), project.Xml.GetOutputAssemblyPath(build.ProjectPlatform, build.ProjectConfiguration).Replace('\\', '/')); task = new NUnitExecuteTask(this, build, processManager) { TestLibrary = dll, Mode = "MacCatalyst", }; } else { task = new MacExecuteTask(this, build, processManager, crashSnapshotReporterFactory) { IsUnitTest = true, }; } task.Ignored = ignored; task.Platform = build.Platform; task.TestName = project.Name; task.Timeout = TimeSpan.FromMinutes(120); task.Variation = task.ProjectConfiguration; if (project.IsDotNetProject) { task.Variation += " [dotnet]"; } projectTasks.Add(task); } return(projectTasks); }