From 67419240907d7e5da52e78821272f5d6d7f27433 Mon Sep 17 00:00:00 2001 From: Marco Rossignoli Date: Sat, 16 Jan 2021 17:51:47 +0100 Subject: [PATCH 1/4] fix multiline lambda --- src/coverlet.core/Coverage.cs | 4 +-- .../Coverage/CoverageTests.Lambda.cs | 36 +++++++++++++++++++ .../Samples/Instrumentation.Lambda.cs | 27 ++++++++++++++ 3 files changed, 65 insertions(+), 2 deletions(-) diff --git a/src/coverlet.core/Coverage.cs b/src/coverlet.core/Coverage.cs index e2a74a18a..cdee8156a 100644 --- a/src/coverlet.core/Coverage.cs +++ b/src/coverlet.core/Coverage.cs @@ -405,8 +405,8 @@ private void CalculateCoverage() { if (hitCandidate != hitCandidateToCompare && !hitCandidateToCompare.isBranch) { - if (hitCandidateToCompare.start >= hitCandidate.start && - hitCandidateToCompare.end <= hitCandidate.end) + if (hitCandidateToCompare.start > hitCandidate.start && + hitCandidateToCompare.end < hitCandidate.end) { for (int i = hitCandidateToCompare.start; i <= (hitCandidateToCompare.end == 0 ? hitCandidateToCompare.start : hitCandidateToCompare.end); diff --git a/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs b/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs index 6ef519102..9cc278b1a 100644 --- a/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs +++ b/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs @@ -102,5 +102,41 @@ public void Lambda_Issue760() File.Delete(path); } } + + [Fact] + public void Issue_1056() + { + string path = Path.GetTempFileName(); + try + { + FunctionExecutor.RunAsync(async (string[] pathSerialize) => + { + CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run(instance => + { + instance.T1(); + return Task.CompletedTask; + }, + persistPrepareResultToFile: pathSerialize[0]); + + return 0; + }, new string[] { path }); + + TestInstrumentationHelper.GetCoverageResult(path) + .GenerateReport(show: true) + .Document("Instrumentation.Lambda.cs") + .AssertLinesCoveredFromTo(BuildConfiguration.Debug, 110, 119) + .AssertLinesCoveredFromTo(BuildConfiguration.Debug, 122, 124) + .AssertLinesCoveredFromTo(BuildConfiguration.Debug, 127, 129) + .AssertLinesCoveredFromTo(BuildConfiguration.Debug, 131, 131) + .AssertLinesCovered((110, 1), (111, 2), (112, 2), (113, 2), (114, 2), (115, 2), (116, 2), (117, 2), (118, 2), (119, 1), + (122, 2), (123, 2), (124, 2), + (127, 2), (128, 2), (129, 2), + (131, 4)); + } + finally + { + File.Delete(path); + } + } } } \ No newline at end of file diff --git a/test/coverlet.core.tests/Samples/Instrumentation.Lambda.cs b/test/coverlet.core.tests/Samples/Instrumentation.Lambda.cs index b179b7ebf..dcf4ffee1 100644 --- a/test/coverlet.core.tests/Samples/Instrumentation.Lambda.cs +++ b/test/coverlet.core.tests/Samples/Instrumentation.Lambda.cs @@ -103,4 +103,31 @@ public async Task Foreach() return sum; } } + + public class Issue_1056 + { + public void T1() + { + Do(x => WriteLine(x.GetType().Name)); + Do(x => WriteLine(x + .GetType() + .Name)); + Do2(x => x.GetType().Name.Length); + Do2(x => x.GetType() + .Name + .Length); + } + + private static void Do(System.Action action) + { + action(new object()); + } + + private static object Do2(System.Func func) + { + return func(new object()); + } + + public void WriteLine(string str) { } + } } From f73c68c473ddd7ed6e12132cc0638841ec85df9e Mon Sep 17 00:00:00 2001 From: Marco Rossignoli Date: Sun, 17 Jan 2021 10:28:59 +0100 Subject: [PATCH 2/4] cleanup --- test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs b/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs index 9cc278b1a..3f04a502b 100644 --- a/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs +++ b/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs @@ -122,7 +122,6 @@ public void Issue_1056() }, new string[] { path }); TestInstrumentationHelper.GetCoverageResult(path) - .GenerateReport(show: true) .Document("Instrumentation.Lambda.cs") .AssertLinesCoveredFromTo(BuildConfiguration.Debug, 110, 119) .AssertLinesCoveredFromTo(BuildConfiguration.Debug, 122, 124) From 28b83d2b31a8a7ddf6416899e8708aa0358dea2c Mon Sep 17 00:00:00 2001 From: Marco Rossignoli Date: Sun, 17 Jan 2021 10:38:54 +0100 Subject: [PATCH 3/4] fix test --- test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs b/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs index 3f04a502b..9261c8474 100644 --- a/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs +++ b/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs @@ -109,7 +109,7 @@ public void Issue_1056() string path = Path.GetTempFileName(); try { - FunctionExecutor.RunAsync(async (string[] pathSerialize) => + FunctionExecutor.Run(async (string[] pathSerialize) => { CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run(instance => { From f1db677c1e2c974449ee3e482f14a1d62fa7a312 Mon Sep 17 00:00:00 2001 From: Marco Rossignoli Date: Sun, 17 Jan 2021 10:48:29 +0100 Subject: [PATCH 4/4] fix test --- test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs | 2 +- .../Coverage/InstrumenterHelper.Assertions.cs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs b/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs index 9261c8474..37b3e76aa 100644 --- a/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs +++ b/test/coverlet.core.tests/Coverage/CoverageTests.Lambda.cs @@ -127,7 +127,7 @@ public void Issue_1056() .AssertLinesCoveredFromTo(BuildConfiguration.Debug, 122, 124) .AssertLinesCoveredFromTo(BuildConfiguration.Debug, 127, 129) .AssertLinesCoveredFromTo(BuildConfiguration.Debug, 131, 131) - .AssertLinesCovered((110, 1), (111, 2), (112, 2), (113, 2), (114, 2), (115, 2), (116, 2), (117, 2), (118, 2), (119, 1), + .AssertLinesCovered(BuildConfiguration.Debug, (110, 1), (111, 2), (112, 2), (113, 2), (114, 2), (115, 2), (116, 2), (117, 2), (118, 2), (119, 1), (122, 2), (123, 2), (124, 2), (127, 2), (128, 2), (129, 2), (131, 4)); diff --git a/test/coverlet.core.tests/Coverage/InstrumenterHelper.Assertions.cs b/test/coverlet.core.tests/Coverage/InstrumenterHelper.Assertions.cs index 92da3b47e..07f3e2bad 100644 --- a/test/coverlet.core.tests/Coverage/InstrumenterHelper.Assertions.cs +++ b/test/coverlet.core.tests/Coverage/InstrumenterHelper.Assertions.cs @@ -246,6 +246,11 @@ public static Document AssertLinesCoveredAllBut(this Document document, BuildCon return document; } + public static Document AssertLinesCoveredFromTo(this Document document, int from, int to) + { + return AssertLinesCoveredFromTo(document, BuildConfiguration.Debug | BuildConfiguration.Release, from, to); + } + public static Document AssertLinesCoveredFromTo(this Document document, BuildConfiguration configuration, int from, int to) { if (document is null)