public static void MiniCoverReport(this ICakeContext ctx, MiniCoverSettings settings) { if (ctx == null) { throw new ArgumentNullException(nameof(ctx)); } ctx.EnsureToolsProjectLocated(); foreach (Enum flag in Enum.GetValues(typeof(ReportType))) { if (settings.ReportType.HasFlag(flag)) { var subcommand = typeof(ReportType).GetMember(flag.ToString())[0].GetCustomAttributes(typeof(ReportCommandAttribute), false)[0] as ReportCommandAttribute; ctx.MiniCoverReport(settings, subcommand.CommandName, a => { a.AppendReportOutput(settings, subcommand.OutputName ?? string.Empty); if (subcommand.SupportsThreshold) { a.Append("--threshold"); a.Append(settings.FailureThreshold.ToString("0.00")); } if (AdditionalArguments.TryGetValue((ReportType)flag, out var additionalArgs)) { additionalArgs.Invoke(settings, a); } }); } } }
internal static ProcessArgumentBuilder AppendGlobPatterns(this ProcessArgumentBuilder builder, MiniCoverSettings settings) { foreach (var glob in settings.AssemblyIncludePatterns) { builder.Append("--assemblies"); builder.AppendQuoted(glob); } foreach (var glob in settings.AssemblyExcludeGlobPatterns) { builder.Append("--exclude-assemblies"); builder.AppendQuoted(glob); } foreach (var glob in settings.SourcesGlobPatterns) { builder.Append("--sources"); builder.AppendQuoted(glob); } foreach (var glob in settings.SourcesExcludeGlobPatterns) { builder.Append("--exclude-sources"); builder.AppendQuoted(glob); } return(builder); }
public static void MiniCoverReport( this ICakeContext ctx, MiniCoverSettings settings, string reportName, Action <ProcessArgumentBuilder> additionalArgs ) { if (ctx == null) { throw new ArgumentNullException(nameof(ctx)); } ctx.EnsureToolsProjectLocated(); var args = new ProcessArgumentBuilder().AppendReportCommand(reportName, settings); additionalArgs?.Invoke(args); try { ctx.DotNetCoreTool(MiniCoverSettings.MiniCoverToolsProject, "minicover", args); } catch (Exception ex) when(settings.NonFatalThreshold) { // TODO: Better detection of when failure is actually due to coverage threshold ctx.Debug("Report generation failed silently: {0}", ex); } }
internal static ProcessArgumentBuilder AppendReportOutput(this ProcessArgumentBuilder builder, MiniCoverSettings settings, string suffix = "") { if (!string.IsNullOrEmpty(settings?.ReportPrefix)) { builder.Append("--output"); builder.AppendQuoted($"{settings.ReportPrefix}{suffix}"); } return(builder); }
public static void MiniCoverUninstrument( this ICakeContext ctx, MiniCoverSettings settings ) { ctx.EnsureToolsProjectLocated(); ctx.DotNetCoreTool( MiniCoverSettings.MiniCoverToolsProject, "minicover", new ProcessArgumentBuilder().AppendMiniCoverCommand("uninstrument", settings) ); }
public static void MiniCoverReport( this ICakeContext ctx, MiniCoverSettings settings, string reportName ) { if (ctx == null) { throw new ArgumentNullException(nameof(ctx)); } ctx.EnsureToolsProjectLocated(); ctx.MiniCoverReport(settings, reportName, null); }
public static void MiniCoverInstrument(this ICakeContext ctx, MiniCoverSettings settings) { if (ctx == null) { throw new ArgumentNullException(nameof(ctx)); } ctx.EnsureToolsProjectLocated(); var args = new ProcessArgumentBuilder().AppendMiniCoverCommand("instrument", settings); args.AppendGlobPatterns(settings); args.AppendHitsFile(settings); ctx.DotNetCoreTool(MiniCoverSettings.MiniCoverToolsProject, "minicover", args); }
internal static ProcessArgumentBuilder AppendMiniCoverCommand( this ProcessArgumentBuilder builder, string subcommand, MiniCoverSettings settings ) { builder.Append(subcommand); if (settings.MiniCoverWorkingDirectory != null) { builder.Append("--workdir"); builder.AppendQuoted(settings.MiniCoverWorkingDirectory.FullPath); } return(builder); }
internal static ProcessArgumentBuilder AppendReportCommand( this ProcessArgumentBuilder builder, string subcommand, MiniCoverSettings settings ) { builder.AppendMiniCoverCommand(subcommand, settings); if (!string.IsNullOrEmpty(settings.CoverageFileName)) { builder.Append("--coverage-file"); builder.AppendQuoted(settings.CoverageFileName); } return(builder); }
public static void MiniCover(this ICakeContext ctx, Action <ICakeContext> action, MiniCoverSettings settings) { if (ctx == null) { throw new ArgumentNullException(nameof(ctx)); } if (action == null) { throw new ArgumentNullException(nameof(action)); } if (settings == null) { throw new ArgumentNullException(nameof(settings)); } ctx.EnsureToolsProjectLocated(); ctx.MiniCoverInstrument(settings); ctx.MiniCoverReset(settings); action.Invoke(ctx); ctx.MiniCoverUninstrument(settings); ctx.MiniCoverReport(settings); }
internal static ProcessArgumentBuilder AppendHitsFile(this ProcessArgumentBuilder builder, MiniCoverSettings settings) { if (!string.IsNullOrEmpty(settings.HitsFileName)) { builder.Append("--hits-file"); builder.AppendQuoted(settings.HitsFileName); } return(builder); }