public static void TestDotNetCoreProjects(ICakeContext context, TaskConfig config) { DotNetCoreConfig dotNetCoreConfig = config.Load <DotNetCoreConfig>(); DotNetCoreConfig.TestConfig test = dotNetCoreConfig.Test; DotNetCoreConfig.CoverageConfig coverage = dotNetCoreConfig.Coverage; if (test.Skip) { context.LogInfo("Skipping tests."); return; } EnvConfig env = config.Load <EnvConfig>(); string testProjectFile = test.ProjectFile; if (testProjectFile is null) { throw new TaskConfigException("Build solution or project file not specified."); } var coverletSettings = new CoverletSettings { CollectCoverage = true, CoverletOutputFormat = CoverletOutputFormat.opencover, CoverletOutputDirectory = Path.Combine(env.Directories.TestOutput, "coverage"), }; IList <string> excludeFilters = coverage.ExcludeFilters; if (excludeFilters.Count > 0) { coverletSettings.Exclude = excludeFilters.ToList(); } IList <string> includeFilters = coverage.IncludeFilters; if (includeFilters.Count > 0) { coverletSettings.Include = includeFilters.ToList(); } var settings = new DotNetCoreTestSettings { Configuration = env.Configuration, OutputDirectory = Path.Combine(env.Directories.BinaryOutput, "__build"), Logger = test.Logger ?? "trx", ResultsDirectory = Path.Combine(env.Directories.TestOutput, "testresults"), NoBuild = true, NoRestore = true, Verbosity = context.Log.Verbosity.ToVerbosity(), }; string filter = test.Filter; if (!string.IsNullOrWhiteSpace(filter)) { settings.Filter = filter; } context.DotNetCoreTest(testProjectFile, settings, coverletSettings); }
public static void ConfigureDotNetCore(TaskConfig config) { DotNetCoreConfig cfg = config.Load <DotNetCoreConfig>(); EnvConfig env = config.Load <EnvConfig>(); string workingDirectory = env.Directories.Working ?? Directory.GetCurrentDirectory(); cfg.Build.ProjectFile = (Func <string>)(() => GetBuildProjectFile(workingDirectory)); cfg.Test.Skip = false; cfg.Test.ProjectFile = (Func <string>)(() => GetBuildProjectFile(workingDirectory)); cfg.Test.Logger = "trx";
public static void PublishDotNetProjects(ICakeContext ctx, TaskConfig config) { EnvConfig env = config.Load <EnvConfig>(); IList <DotNetCorePublisher> publishers = env.Publishers.OfType <DotNetCorePublisher>().ToList(); if (publishers.Count == 0) { ctx.LogInfo("No .NET Core projects to publish. Specify a publisher."); } foreach (DotNetCorePublisher publisher in publishers) { string publishDirectory = Path.Combine(env.Directories.PublishOutput, publisher.GetType().Name + Guid.NewGuid().ToString("N")); if (!Directory.Exists(publishDirectory)) { Directory.CreateDirectory(publishDirectory); } publisher.SetOutput(publishDirectory); switch (publisher) { case AspNetCorePublisher aspnet: PublishAspNetCore(ctx, config, aspnet); break; case NuGetPublisher nuget: DotNetCoreConfig dnc = config.Load <DotNetCoreConfig>(); if (nuget.Source is null) { nuget.Source = dnc.NuGetPublisher.SourceFn; } if (nuget.Source is null) { nuget.Source = _ => "https: //api.nuget.org/v3/index.json"; } if (nuget.ApiKey is null) { nuget.ApiKey = dnc.NuGetPublisher.ApiKeyFn; } PublishNuGet(ctx, config, nuget); break; default: throw new TaskConfigException($"Unrecognized .NET Core publisher type: {publisher.GetType().FullName}."); } } }
public static void CleanDotNetCoreSolution(ICakeContext context, TaskConfig config) { context.LogInfo("Shutting down .NET Core build server"); context.DotNetCoreBuildServerShutdown(); DotNetCoreConfig cfg = config.Load <DotNetCoreConfig>(); string cleanProjectFile = cfg.Build.ProjectFile.Resolve(); if (cleanProjectFile is null) { throw new TaskConfigException("Build solution or project file not specified."); } context.DotNetCoreClean(cleanProjectFile, new DotNetCoreCleanSettings { Verbosity = context.Log.Verbosity.ToVerbosity(), }); }