// ReSharper disable once UnusedMember.Global
 public static void DotNetCoreTest(
     this ICakeContext context,
     FilePath project,
     XUnit2Settings xunitSettings)
 {
     DotNetCoreTest(context, new DotNetCoreTestSettings(), project, xunitSettings);
 }
Пример #2
0
    static XUnit2Settings BuildXUnit2Settings(ParsedProject projectUnderTest, AnyUnitTestSettings settings,
                                              DirectoryPath outputDir)
    {
        var outputFile = outputDir.CombineWithFilePath(projectUnderTest.Project.AssemblyName + ".xunit2.xml");

        var traitArgs = new List <KeyValuePair <string, string> >();

        AddTraits(traitArgs, "-notrait", settings.ExcludedTraits);
        AddTraits(traitArgs, "-trait", settings.IncludedTraits);

        var s = new XUnit2Settings();

        XBuildHelper.ApplyToolSettings(s, NUnitToolArgs);
        s.ShadowCopy            = settings.ShadowCopyAssemblies;
        s.UseX86                = settings.ForceX86 || projectUnderTest.Platform == PlatformTarget.x86;
        s.ArgumentCustomization = args =>
        {
            foreach (var traitArg in traitArgs)
            {
                args.Append(traitArg.Key);
                args.AppendQuoted(traitArg.Value);
            }

            args.Append("-xml");
            args.AppendQuoted(outputFile.MakeAbsolute(Context.Environment).FullPath);
            return(args);
        };
        return(s);
    }
Пример #3
0
            public void Should_Capture_XUnit2()
            {
                // Given
                var fixture = new SpecFlowTestExecutionReporterFixture();

                fixture.FileSystem.CreateFile("/Working/tools/xunit.console.exe");

                var xUnit2Settings = new XUnit2Settings {
                    ShadowCopy = false
                };

                xUnit2Settings.ArgumentCustomization = builder => builder.Append("-nunit \"/Working/TestResult.xml\"");

                fixture.Action = context =>
                {
                    context.XUnit2(new FilePath[] { "./Test.dll" }, xUnit2Settings);
                };

                // When
                var result = fixture.Run();

                // Then
                Assert.Equal("nunitexecutionreport \"/Working/Tests.csproj\" " +
                             "/xmlTestResult:\"/Working/TestResult.xml\"", result.Args);
            }
Пример #4
0
            public void MaxThreads_Must_Not_Be_Negative()
            {
                // Given
                var settings = new XUnit2Settings();

                // When, Then
                Assert.Throws <ArgumentOutOfRangeException>(() => settings.MaxThreads = -1);
            }
Пример #5
0
            public void Should_Set_MaxThreads_Option_To_Null_By_Default()
            {
                // Given, When
                var settings = new XUnit2Settings();

                // Then
                Assert.Null(settings.MaxThreads);
            }
Пример #6
0
            public void Should_Set_Parallelism_Option_To_None_By_Default()
            {
                // Given, When
                var settings = new XUnit2Settings();

                // Then
                Assert.Equal(settings.Parallelism, ParallelismOption.None);
            }
Пример #7
0
            public void Should_Enable_Shadow_Copying_By_Default()
            {
                // Given, When
                var settings = new XUnit2Settings();

                // Then
                Assert.True(settings.ShadowCopy);
            }
Пример #8
0
            public void Should_Disable_HTML_Report_By_Default()
            {
                // Given, When
                var settings = new XUnit2Settings();

                // Then
                Assert.False(settings.HtmlReport);
            }
Пример #9
0
            public void Should_Set_Output_Directory_To_Null_By_Default()
            {
                // Given, When
                var settings = new XUnit2Settings();

                // Then
                Assert.Null(settings.OutputDirectory);
            }
Пример #10
0
            public void Should_Set_ReportName_To_Null_By_Default()
            {
                // Given, When
                var settings = new XUnit2Settings();

                // Then
                Assert.Null(settings.ReportName);
            }
Пример #11
0
            public void Should_Set_UseX86_To_False_By_Default()
            {
                // Given, When
                var settings = new XUnit2Settings();

                // Then
                Assert.False(settings.UseX86);
            }
Пример #12
0
            public void Should_Set_TraitsToInclude_To_Empty_By_Default()
            {
                // Given, When
                var settings = new XUnit2Settings();

                // Then
                Assert.Empty(settings.TraitsToInclude);
            }
Пример #13
0
            public void Should_Set_NoAppDomain_To_False_By_Default()
            {
                // Given, When
                var settings = new XUnit2Settings();

                // Then
                Assert.False(settings.NoAppDomain);
            }
Пример #14
0
            public void Should_Set_Parallelism_Option_To_Null_By_Default()
            {
                // Given, When
                var settings = new XUnit2Settings();

                // Then
                Assert.Null(settings.Parallelism);
            }
 public static void DotNetCoreTest(
     this ICakeContext context,
     DotNetCoreTestSettings settings,
     FilePath project,
     XUnit2Settings xunitSettings)
 {
     settings.ArgumentCustomization = args => ProcessArguments(context, args, project, xunitSettings);
     context.DotNetCoreTest(project.FullPath, settings);
 }
Пример #16
0
            public void Should_Set_Switches_For_TraitsToExclude_Defined_In_Settings()
            {
                // Given
                var fixture  = new XUnit2RunnerFixture();
                var runner   = fixture.CreateRunner();
                var settings =
                    new XUnit2Settings()
                    .ExcludeTrait("Trait1", "value1A", "value1B")
                    .ExcludeTrait("Trait2", "value2");

                // When
                runner.Run("./Test1.dll", settings);

                // Then
                fixture.ProcessRunner.Received(1).Start(
                    Arg.Any <FilePath>(),
                    Arg.Is <ProcessSettings>(p =>
                                             p.Arguments.Render() ==
                                             "\"/Working/Test1.dll\" -notrait \"Trait1=value1A\" -notrait \"Trait1=value1B\" -notrait \"Trait2=value2\""));
            }
        private static ProcessArgumentBuilder ProcessArguments(
            ICakeContext cakeContext,
            ProcessArgumentBuilder builder,
            FilePath project,
            XUnit2Settings settings)
        {
            // No shadow copy?
            if (!settings.ShadowCopy)
            {
                throw new CakeException("-noshadow is not supported in .netcoreapp");
            }

            // No app domain?
            if (settings.NoAppDomain)
            {
                throw new CakeException("-noappdomain is not supported in .netcoreapp");
            }

            if (settings.OutputDirectory == null &&
                (settings.HtmlReport || settings.NUnitReport || settings.XmlReport))
            {
                throw new CakeException("OutputDirectory must not be null");
            }

            // Generate NUnit Style XML report?
            if (settings.NUnitReport)
            {
                var reportFileName   = new FilePath(project.GetDirectory().GetDirectoryName());
                var assemblyFilename = reportFileName.AppendExtension(".xml");
                var outputPath       = settings.OutputDirectory.MakeAbsolute(cakeContext.Environment)
                                       .GetFilePath(assemblyFilename);

                builder.Append("-nunit");
                builder.AppendQuoted(outputPath.FullPath);
            }

            // Generate HTML report?
            if (settings.HtmlReport)
            {
                var reportFileName   = new FilePath(project.GetDirectory().GetDirectoryName());
                var assemblyFilename = reportFileName.AppendExtension(".html");
                var outputPath       = settings.OutputDirectory.MakeAbsolute(cakeContext.Environment)
                                       .GetFilePath(assemblyFilename);

                builder.Append("-html");
                builder.AppendQuoted(outputPath.FullPath);
            }

            if (settings.XmlReportV1)
            {
                throw new CakeException("-xmlv1 is not supported in .netcoreapp");
            }

            // Generate XML report?
            if (settings.XmlReport)
            {
                var reportFileName   = new FilePath(project.GetDirectory().GetDirectoryName());
                var assemblyFilename = reportFileName.AppendExtension(".xml");
                var outputPath       = settings.OutputDirectory.MakeAbsolute(cakeContext.Environment)
                                       .GetFilePath(assemblyFilename);

                builder.Append("-xml");
                builder.AppendQuoted(outputPath.FullPath);
            }

            // parallelize test execution?
            if (settings.Parallelism != null && settings.Parallelism != ParallelismOption.None)
            {
                builder.Append($"-parallel {settings.Parallelism.ToString().ToLowerInvariant()}");
            }

            // max thread count for collection parallelization
            if (settings.MaxThreads.HasValue)
            {
                if (settings.MaxThreads.Value == 0)
                {
                    builder.Append("-maxthreads unlimited");
                }
                else
                {
                    builder.Append($"-maxthreads {settings.MaxThreads.Value}");
                }
            }

            foreach (var trait in settings.TraitsToInclude
                     .SelectMany(pair => pair.Value.Select(v => new { Name = pair.Key, Value = v })))
            {
                builder.Append("-trait \"{0}={1}\"", trait.Name, trait.Value);
            }

            foreach (var trait in settings.TraitsToExclude
                     .SelectMany(pair => pair.Value.Select(v => new { Name = pair.Key, Value = v })))
            {
                builder.Append($"-notrait \"{trait.Name}={trait.Value}\"");
            }

            return(builder);
        }