コード例 #1
0
ファイル: Jenkins.cs プロジェクト: kiddailey/xamarin-macios
        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));
        }
コード例 #2
0
        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);
        }