diff --git a/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs b/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs index 668396baa8..2a106e0132 100644 --- a/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs +++ b/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs @@ -164,9 +164,9 @@ private void PrintTable(SummaryTable table, ILogger logger) logger.WriteStatistic(ColumnsStartWithSeparator ? TableHeaderSeparator.TrimStart().TrimEnd() + "-" : "-"); logger.WriteLineStatistic(string.Join("", - table.Columns.Where(c => c.NeedToShow).Select(column => + table.Columns.Where(c => c.NeedToShow).Select((column, index) => new string('-', column.Width - 1) + GetHeaderSeparatorIndicator(column.OriginalColumn.IsNumeric) + - GetHeaderSeparatorColumnDivider(column.Index, table.ColumnCount)))); + GetHeaderSeparatorColumnDivider(index, table.Columns.Where(c => c.NeedToShow).Count())))); } int rowCounter = 0; diff --git a/tests/BenchmarkDotNet.Tests/Exporters/MarkdownExporterVerifyTests.cs b/tests/BenchmarkDotNet.Tests/Exporters/MarkdownExporterVerifyTests.cs index 9d957f4f61..fca08d0c0e 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/MarkdownExporterVerifyTests.cs +++ b/tests/BenchmarkDotNet.Tests/Exporters/MarkdownExporterVerifyTests.cs @@ -14,6 +14,8 @@ using JetBrains.Annotations; using VerifyXunit; using Xunit; +using BenchmarkDotNet.Columns; +using System.Reflection; namespace BenchmarkDotNet.Tests.Exporters { @@ -40,9 +42,8 @@ public Task GroupExporterTest(Type benchmarkType) var logger = new AccumulationLogger(); logger.WriteLine("=== " + benchmarkType.Name + " ==="); - var exporter = MarkdownExporter.Mock; - var summary = MockFactory.CreateSummary(benchmarkType); + var summary = MockFactory.CreateSummary(benchmarkType, benchmarkType.GetCustomAttribute()?.Config.GetColumnHidingRules().ToArray() ?? []); exporter.ExportToLog(summary, logger); var validator = BaselineValidator.FailOnError; @@ -219,8 +220,8 @@ [Benchmark] public void Bar() { } [SimpleJob(id: "Job1", baseline: true), SimpleJob(id: "Job2")] public class MethodJobBaseline_MethodsJobs { - [Benchmark(Baseline = true)] public void Foo() {} - [Benchmark] public void Bar() {} + [Benchmark(Baseline = true)] public void Foo() { } + [Benchmark] public void Bar() { } } [RankColumn, LogicalGroupColumn, BaselineColumn] @@ -229,8 +230,8 @@ public class MethodJobBaseline_MethodsJobsParams { [Params(2, 10), UsedImplicitly] public int Param; - [Benchmark(Baseline = true)] public void Foo() {} - [Benchmark] public void Bar() {} + [Benchmark(Baseline = true)] public void Foo() { } + [Benchmark] public void Bar() { } } /* Invalid */ @@ -238,16 +239,16 @@ [Benchmark] public void Bar() {} [RankColumn, LogicalGroupColumn, BaselineColumn] public class Invalid_TwoMethodBaselines { - [Benchmark(Baseline = true)] public void Foo() {} - [Benchmark(Baseline = true)] public void Bar() {} + [Benchmark(Baseline = true)] public void Foo() { } + [Benchmark(Baseline = true)] public void Bar() { } } [RankColumn, LogicalGroupColumn, BaselineColumn] [SimpleJob(id: "Job1", baseline: true), SimpleJob(id: "Job2", baseline: true)] public class Invalid_TwoJobBaselines { - [Benchmark] public void Foo() {} - [Benchmark] public void Bar() {} + [Benchmark] public void Foo() { } + [Benchmark] public void Bar() { } } /* Escape Params */ @@ -260,6 +261,13 @@ public class Escape_ParamsAndArguments [Benchmark] public void Foo(char charArg) {} [Benchmark] public void Bar() {} } + + /* Hide Column */ + [HideColumns(Column.StdDev)] + public class HideColumns_TableMarkDown + { + [Benchmark] public void Foo() { } + } } } } diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_HideColumns_TableMarkDown.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_HideColumns_TableMarkDown.verified.txt new file mode 100644 index 0000000000..5b932e42da --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_HideColumns_TableMarkDown.verified.txt @@ -0,0 +1,15 @@ +=== HideColumns_TableMarkDown === + +BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V) +MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores +Frequency: 2531248 Hz, Resolution: 395.062 ns, Timer: TSC + [Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION + DefaultJob : extra output line + +StdDev=8.80 ns + + Method | Mean | Error | +------- |---------:|--------:| + Foo | 114.5 ns | 5.88 ns | + +Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs b/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs index eb8402f5db..8c0ce0019e 100644 --- a/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs +++ b/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs @@ -24,7 +24,7 @@ namespace BenchmarkDotNet.Tests.Mocks { public static class MockFactory { - public static Summary CreateSummary(Type benchmarkType) + public static Summary CreateSummary(Type benchmarkType, params IColumnHidingRule[] columHidingRules) { var runInfo = BenchmarkConverter.TypeToBenchmarks(benchmarkType); return new Summary( @@ -36,7 +36,7 @@ public static Summary CreateSummary(Type benchmarkType) TimeSpan.FromMinutes(1), TestCultureInfo.Instance, ImmutableArray.Empty, - ImmutableArray.Empty); + ImmutableArray.Create(columHidingRules)); } public static Summary CreateSummary(IConfig config) => new Summary(