From 56eb2e8dcc93645ce93a2b8870ec920527c46747 Mon Sep 17 00:00:00 2001 From: Lucas Lara Date: Tue, 15 Dec 2020 19:55:57 +0100 Subject: [PATCH 1/6] Add worker thread tests --- sample/src/Sample/WorkerThread.cs | 26 +++++++++++++ .../Sample.UnitTests/WorkerThreadTests.cs | 17 ++++++++ .../Instrumentation/BaseTest.cs | 8 +++- .../Instrumentation/WorkerThread.cs | 39 +++++++++++++++++++ 4 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 sample/src/Sample/WorkerThread.cs create mode 100644 sample/tests/Sample.UnitTests/WorkerThreadTests.cs create mode 100644 tests/MiniCover.UnitTests/Instrumentation/WorkerThread.cs diff --git a/sample/src/Sample/WorkerThread.cs b/sample/src/Sample/WorkerThread.cs new file mode 100644 index 0000000000..e2a196f501 --- /dev/null +++ b/sample/src/Sample/WorkerThread.cs @@ -0,0 +1,26 @@ +using System.Threading; +using System.Threading.Tasks; + +namespace Sample +{ + public static class WorkerThread + { + public static Task RunWorkerThread() + { + var tcs = new TaskCompletionSource(); + var thread = new Thread(() => DoWork(tcs)); + thread.Start(); + return tcs.Task; + } + + private static void DoWork(TaskCompletionSource tcs) + { + for (int i = 0; i < 3; i++) + { + Thread.Sleep(100); + } + + tcs.SetResult(true); + } + } +} diff --git a/sample/tests/Sample.UnitTests/WorkerThreadTests.cs b/sample/tests/Sample.UnitTests/WorkerThreadTests.cs new file mode 100644 index 0000000000..e5d07ee308 --- /dev/null +++ b/sample/tests/Sample.UnitTests/WorkerThreadTests.cs @@ -0,0 +1,17 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using Sample.TryFinally; +using Xunit; + +namespace Sample.UnitTests +{ + public class WorkerThreadTests + { + [Fact] + public async Task TestWorkerThread() + { + await WorkerThread.RunWorkerThread(); + } + } +} diff --git a/tests/MiniCover.UnitTests/Instrumentation/BaseTest.cs b/tests/MiniCover.UnitTests/Instrumentation/BaseTest.cs index 30448ddc9d..d698a74efa 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/BaseTest.cs +++ b/tests/MiniCover.UnitTests/Instrumentation/BaseTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Reflection; @@ -76,10 +76,16 @@ public void Test() { HitContext.Current.Hits.Should().BeEquivalentTo(ExpectedHits); } + + if (ExpectedHitCount != null) + { + HitContext.Current.Hits.Sum(h => h.Value).Should().Be(ExpectedHitCount); + } } public virtual string ExpectedIL => null; public virtual IDictionary ExpectedHits => null; + public virtual int? ExpectedHitCount => null; public virtual InstrumentedSequence[] ExpectedInstructions => null; public virtual void FunctionalTest() { } diff --git a/tests/MiniCover.UnitTests/Instrumentation/WorkerThread.cs b/tests/MiniCover.UnitTests/Instrumentation/WorkerThread.cs new file mode 100644 index 0000000000..f77e00af9e --- /dev/null +++ b/tests/MiniCover.UnitTests/Instrumentation/WorkerThread.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using FluentAssertions; +using MiniCover.Model; + +namespace MiniCover.UnitTests.Instrumentation +{ + public class WorkerThread : BaseTest + { + public static class Class + { + public static Task RunWorkerThread() + { + var tcs = new TaskCompletionSource(); + var thread = new Thread(() => DoWork(tcs)); + thread.Start(); + return tcs.Task; + } + + private static void DoWork(TaskCompletionSource tcs) + { + Thread.Sleep(100); + tcs.SetResult(true); + } + } + + public WorkerThread() : base(typeof(Class)) + { + } + + public override void FunctionalTest() + { + Class.RunWorkerThread().GetAwaiter().GetResult(); + } + + public override int? ExpectedHitCount => 7; + } +} From 6456dd5d1beb5fd02ab521620a020af26d5fe317 Mon Sep 17 00:00:00 2001 From: Lucas Lara Date: Tue, 15 Dec 2020 23:24:14 +0100 Subject: [PATCH 2/6] Create libraries --- MiniCover.sln | 37 ++++++- azure-pipelines.yml | 4 +- build.sh | 14 +-- .../AssemblyDefinitionExtensions.cs | 2 +- .../Extensions/CodeExtensions.cs | 2 +- .../CustomAttributeProviderExtensions.cs | 2 +- .../Extensions/DocumentExtensions.cs | 2 +- .../Extensions/EnumerableExtensions.cs | 2 +- .../Extensions/GraphNodeExtensions.cs | 4 +- .../Extensions}/ILProcessorExtensions.cs | 3 +- .../Extensions/InstructionExtensions.cs | 7 +- .../Extensions/MethodDefinitionExtensions.cs | 15 +-- .../Extensions/ModuleDefinitionExtensions.cs | 2 +- .../Extensions/ObjectExtensions.cs | 2 +- .../Extensions/TypeDefinitionExtensions.cs | 2 +- .../FileSystem/CachedFileReader.cs | 4 +- .../FileSystem/IFileReader.cs | 2 +- .../Hits}/HitsInfo.cs | 20 +--- src/MiniCover.Core/Hits/HitsReader.cs | 27 +++++ src/MiniCover.Core/Hits/HitsResetter.cs | 59 +++++++++++ src/MiniCover.Core/Hits/IHitsReader.cs | 7 ++ src/MiniCover.Core/Hits/IHitsResetter.cs | 9 ++ .../Instrumentation/AssemblyInstrumenter.cs | 9 +- .../Instrumentation/CustomAssemblyResolver.cs | 8 +- .../Instrumentation/IUninstrumenter.cs | 4 +- .../Instrumentation/InstrumentationContext.cs | 2 +- .../Instrumentation/Instrumenter.cs | 8 +- .../Instrumentation/MethodInstrumenter.cs | 30 +++--- .../Patterns/LambdaInitPattern.cs | 4 +- .../Instrumentation/TypeInstrumenter.cs | 8 +- .../Instrumentation/Uninstrumenter.cs | 6 +- src/MiniCover.Core/MiniCover.Core.csproj | 30 ++++++ .../Model/AssemblyLocation.cs | 2 +- .../Model/GraphNode.cs | 2 +- .../Model/InstrumentationResult.cs | 57 ++++++++++ .../Model/InstrumentedAssembly.cs | 24 +++-- .../Model/InstrumentedBranch.cs | 2 +- .../Model/InstrumentedCondition.cs | 2 +- .../Model/InstrumentedMethod.cs | 9 ++ .../Model/InstrumentedSequence.cs | 2 +- .../Model/SourceFile.cs | 2 +- .../Utils/DepsJsonUtils.cs | 2 +- .../Utils/FileUtils.cs | 2 +- .../MiniCover.HitServices.csproj | 1 + .../Clover/CloverCounter.cs | 0 .../Clover/CloverReport.cs | 12 ++- .../Clover/ICloverReport.cs | 2 +- .../Cobertura/CoberturaReport.cs | 14 ++- .../Cobertura/ICoberturaReport.cs | 2 +- .../Console}/ConsoleReport.cs | 22 +++- .../Console}/IConsoleReport.cs | 4 +- .../Coveralls/CoverallsReport.cs | 21 ++-- .../Coveralls/ICoverallsReport.cs | 2 +- .../Coveralls/Models/CoverallsCommitModel.cs | 0 .../Coveralls/Models/CoverallsGitModel.cs | 0 .../Coveralls/Models/CoverallsJobModel.cs | 0 .../Coveralls/Models/CoverallsRemoteModel.cs | 0 .../Models/CoverallsSourceFileModel.cs | 0 .../Helpers/ConsoleBox.cs | 0 .../Helpers/ConsoleTable.cs | 10 +- .../Helpers/ISummaryFactory.cs | 15 +++ .../Helpers/Summary.cs | 0 .../Helpers/SummaryFactory.cs | 35 +++--- .../Helpers/SummaryRow.cs | 2 +- .../Html/HtmlReport.cs | 26 +++-- .../Html/HtmlSourceFileReport.cs | 16 ++- .../Html/IHtmlReport.cs | 2 +- .../Html/IHtmlSourceFileReport.cs | 10 ++ .../Html/Shared.css | 0 .../Html/Shared.js | 0 .../Html/SourceFile.css | 0 .../Html/Summary.css | 0 .../MiniCover.Reports.csproj | 48 +++++++++ .../NCover/INCoverReport.cs | 2 +- .../NCover/NCoverReport.cs | 12 ++- .../OpenCover/IOpenCoverReport.cs | 2 +- .../OpenCover/OpenCoverReport.cs | 12 ++- src/MiniCover.Reports/Utils/PathUtils.cs | 23 ++++ .../Utils/ResourceUtils.cs | 2 +- .../Commands/ConsoleReportCommand.cs | 2 +- .../CommandLine/Commands/InstrumentCommand.cs | 4 +- .../CommandLine/Commands/ResetCommand.cs | 44 ++------ .../Commands/UninstrumentCommand.cs | 4 +- .../Options/CoverageLoadedFileOption.cs | 2 +- .../Options/ICoverageLoadedFileOption.cs | 2 +- .../CommandLine/Options/ThresholdOption.cs | 2 +- .../CommandLine/Options/VerbosityOption.cs | 2 +- .../{Infrastructure => }/IO/ConsoleOutput.cs | 2 +- .../{Infrastructure => }/IO/IOutput.cs | 2 +- .../{Infrastructure => }/IO/OutputLogger.cs | 2 +- .../IO/OutputLoggerProvider.cs | 2 +- src/MiniCover/Infrastructure/Verbosity.cs | 12 --- src/MiniCover/MiniCover.csproj | 36 ++----- src/MiniCover/Model/InstrumentationResult.cs | 38 ------- src/MiniCover/Model/InstrumentedMethod.cs | 40 ------- src/MiniCover/Program.cs | 18 ++-- src/MiniCover/Properties/AssemblyInfo.cs | 3 - .../Properties/InternalVisibility.cs | 3 - .../Reports/Helpers/ISummaryFactory.cs | 9 -- .../Extensions/GraphNodeExtensionsTests.cs | 4 +- .../Hits}/HitsInfoTests.cs | 1 + .../Instrumentation/AsyncMethod.cs | 100 +++++++++--------- .../Instrumentation/BaseTest.cs | 5 +- .../ConstructorGenericCallThis.cs | 8 +- .../ConstructorWithCallBase.cs | 10 +- .../ConstructorWithTryFinally.cs | 12 +-- .../Instrumentation/EnumerableMethod.cs | 80 +++++++------- .../ExcludedFromCodeCoverageClass.cs | 8 +- .../ExcludedFromCodeCoverageMethod.cs | 8 +- .../Instrumentation/FieldInitialization.cs | 8 +- .../Instrumentation/For.cs | 32 +++--- .../Instrumentation/If.cs | 20 ++-- .../Instrumentation/IfInline.cs | 12 +-- .../Instrumentation/IfInlineNested.cs | 12 +-- .../Instrumentation/IfWithAnd.cs | 20 ++-- .../Instrumentation/Lambda.cs | 32 +++--- .../Instrumentation/LongMethod.cs | 2 +- .../Instrumentation/Or.cs | 12 +-- .../Instrumentation/OrWithEquals.cs | 12 +-- .../Instrumentation/StaticMethod.cs | 6 +- .../Instrumentation/Switch.cs | 28 ++--- .../Instrumentation/ThrowException.cs | 6 +- .../Instrumentation/Using.cs | 6 +- .../Instrumentation/WorkerThread.cs | 4 +- .../MiniCover.Core.UnitTests.csproj | 28 +++++ .../TestHelpers/ILFormatter.cs | 0 .../TestHelpers/InstrumentationExtensions.cs | 10 +- .../TestHelpers/TestBase.cs | 26 +++++ .../Utils/DepsJsonUtilsTests.cs | 4 +- .../Utils/FileUtilsTests.cs | 4 +- .../MiniCover.HitServices.UnitTests.csproj | 3 +- .../MiniCover.Reports.UnitTests.csproj | 26 +++++ .../TestHelpers/TestBase.cs | 26 +++++ .../Utils/ResourceUtilsTests.cs | 4 +- .../MiniCover.TestHelpers.csproj | 11 ++ .../StringExtensions.cs | 2 +- .../TestBase.cs | 2 +- .../CommandLine/CommandTests.cs | 3 +- .../Commands/CloverReportCommandTests.cs | 8 +- .../Commands/CoberturaReportCommandTests.cs | 2 +- .../Commands/ConsoleReportCommandTests.cs | 4 +- .../Commands/CoverallsReportCommandTests.cs | 4 +- .../Commands/HtmlReportCommandTests.cs | 2 +- .../Commands/NCoverReportCommandTests.cs | 2 +- .../Commands/OpenCoverReportCommandTests.cs | 2 +- .../Commands/UninstrumentCommandTests.cs | 4 +- .../Options/CloverOutputOptionTests.cs | 2 +- .../Options/CoberturaOutputOptionTests.cs | 2 +- .../Options/CoverageFileOptionTests.cs | 5 +- .../Options/CoverageLoadedFileOptionTests.cs | 2 +- .../Options/HitsDirectoryOptionTests.cs | 2 +- .../Options/HtmlOutputDirectoryOptionTests.cs | 2 +- .../Options/NCoverOutputOptionTests.cs | 2 +- .../Options/OpenCoverOutputOptionTests.cs | 2 +- .../Options/ParentDirectoryOptionTests.cs | 2 +- .../Options/VerbosityOptionTests.cs | 2 +- .../Options/WorkingDirectoryOptionTests.cs | 2 +- .../MiniCover.UnitTests.csproj | 32 +++--- 158 files changed, 1000 insertions(+), 651 deletions(-) rename src/{MiniCover => MiniCover.Core}/Extensions/AssemblyDefinitionExtensions.cs (94%) rename src/{MiniCover => MiniCover.Core}/Extensions/CodeExtensions.cs (98%) rename src/{MiniCover => MiniCover.Core}/Extensions/CustomAttributeProviderExtensions.cs (95%) rename src/{MiniCover => MiniCover.Core}/Extensions/DocumentExtensions.cs (97%) rename src/{MiniCover => MiniCover.Core}/Extensions/EnumerableExtensions.cs (91%) rename src/{MiniCover => MiniCover.Core}/Extensions/GraphNodeExtensions.cs (97%) rename src/{MiniCover/Instrumentation => MiniCover.Core/Extensions}/ILProcessorExtensions.cs (99%) rename src/{MiniCover => MiniCover.Core}/Extensions/InstructionExtensions.cs (93%) rename src/{MiniCover => MiniCover.Core}/Extensions/MethodDefinitionExtensions.cs (82%) rename src/{MiniCover => MiniCover.Core}/Extensions/ModuleDefinitionExtensions.cs (97%) rename src/{MiniCover => MiniCover.Core}/Extensions/ObjectExtensions.cs (96%) rename src/{MiniCover => MiniCover.Core}/Extensions/TypeDefinitionExtensions.cs (97%) rename src/{MiniCover/Infrastructure => MiniCover.Core}/FileSystem/CachedFileReader.cs (92%) rename src/{MiniCover/Infrastructure => MiniCover.Core}/FileSystem/IFileReader.cs (71%) rename src/{MiniCover/HitServices => MiniCover.Core/Hits}/HitsInfo.cs (71%) create mode 100644 src/MiniCover.Core/Hits/HitsReader.cs create mode 100644 src/MiniCover.Core/Hits/HitsResetter.cs create mode 100644 src/MiniCover.Core/Hits/IHitsReader.cs create mode 100644 src/MiniCover.Core/Hits/IHitsResetter.cs rename src/{MiniCover => MiniCover.Core}/Instrumentation/AssemblyInstrumenter.cs (97%) rename src/{MiniCover => MiniCover.Core}/Instrumentation/CustomAssemblyResolver.cs (96%) rename src/{MiniCover => MiniCover.Core}/Instrumentation/IUninstrumenter.cs (59%) rename src/{MiniCover => MiniCover.Core}/Instrumentation/InstrumentationContext.cs (94%) rename src/{MiniCover => MiniCover.Core}/Instrumentation/Instrumenter.cs (98%) rename src/{MiniCover => MiniCover.Core}/Instrumentation/MethodInstrumenter.cs (93%) rename src/{MiniCover => MiniCover.Core}/Instrumentation/Patterns/LambdaInitPattern.cs (93%) rename src/{MiniCover => MiniCover.Core}/Instrumentation/TypeInstrumenter.cs (93%) rename src/{MiniCover => MiniCover.Core}/Instrumentation/Uninstrumenter.cs (94%) create mode 100644 src/MiniCover.Core/MiniCover.Core.csproj rename src/{MiniCover => MiniCover.Core}/Model/AssemblyLocation.cs (88%) rename src/{MiniCover => MiniCover.Core}/Model/GraphNode.cs (91%) create mode 100644 src/MiniCover.Core/Model/InstrumentationResult.cs rename src/{MiniCover => MiniCover.Core}/Model/InstrumentedAssembly.cs (77%) rename src/{MiniCover => MiniCover.Core}/Model/InstrumentedBranch.cs (88%) rename src/{MiniCover => MiniCover.Core}/Model/InstrumentedCondition.cs (89%) create mode 100644 src/MiniCover.Core/Model/InstrumentedMethod.cs rename src/{MiniCover => MiniCover.Core}/Model/InstrumentedSequence.cs (96%) rename src/{MiniCover => MiniCover.Core}/Model/SourceFile.cs (95%) rename src/{MiniCover => MiniCover.Core}/Utils/DepsJsonUtils.cs (99%) rename src/{MiniCover => MiniCover.Core}/Utils/FileUtils.cs (97%) rename src/{MiniCover/Reports => MiniCover.Reports}/Clover/CloverCounter.cs (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Clover/CloverReport.cs (96%) rename src/{MiniCover/Reports => MiniCover.Reports}/Clover/ICloverReport.cs (87%) rename src/{MiniCover/Reports => MiniCover.Reports}/Cobertura/CoberturaReport.cs (97%) rename src/{MiniCover/Reports => MiniCover.Reports}/Cobertura/ICoberturaReport.cs (87%) rename src/{MiniCover/Reports => MiniCover.Reports/Console}/ConsoleReport.cs (85%) rename src/{MiniCover/Reports => MiniCover.Reports/Console}/IConsoleReport.cs (66%) rename src/{MiniCover/Reports => MiniCover.Reports}/Coveralls/CoverallsReport.cs (89%) rename src/{MiniCover/Reports => MiniCover.Reports}/Coveralls/ICoverallsReport.cs (96%) rename src/{MiniCover/Reports => MiniCover.Reports}/Coveralls/Models/CoverallsCommitModel.cs (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Coveralls/Models/CoverallsGitModel.cs (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Coveralls/Models/CoverallsJobModel.cs (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Coveralls/Models/CoverallsRemoteModel.cs (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Coveralls/Models/CoverallsSourceFileModel.cs (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Helpers/ConsoleBox.cs (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Helpers/ConsoleTable.cs (93%) create mode 100644 src/MiniCover.Reports/Helpers/ISummaryFactory.cs rename src/{MiniCover/Reports => MiniCover.Reports}/Helpers/Summary.cs (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Helpers/SummaryFactory.cs (91%) rename src/{MiniCover/Reports => MiniCover.Reports}/Helpers/SummaryRow.cs (92%) rename src/{MiniCover/Reports => MiniCover.Reports}/Html/HtmlReport.cs (87%) rename src/{MiniCover/Reports => MiniCover.Reports}/Html/HtmlSourceFileReport.cs (95%) rename src/{MiniCover/Reports => MiniCover.Reports}/Html/IHtmlReport.cs (88%) create mode 100644 src/MiniCover.Reports/Html/IHtmlSourceFileReport.cs rename src/{MiniCover/Reports => MiniCover.Reports}/Html/Shared.css (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Html/Shared.js (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Html/SourceFile.css (100%) rename src/{MiniCover/Reports => MiniCover.Reports}/Html/Summary.css (100%) create mode 100644 src/MiniCover.Reports/MiniCover.Reports.csproj rename src/{MiniCover/Reports => MiniCover.Reports}/NCover/INCoverReport.cs (87%) rename src/{MiniCover/Reports => MiniCover.Reports}/NCover/NCoverReport.cs (92%) rename src/{MiniCover/Reports => MiniCover.Reports}/OpenCover/IOpenCoverReport.cs (87%) rename src/{MiniCover/Reports => MiniCover.Reports}/OpenCover/OpenCoverReport.cs (95%) create mode 100644 src/MiniCover.Reports/Utils/PathUtils.cs rename src/{MiniCover => MiniCover.Reports}/Utils/ResourceUtils.cs (92%) rename src/MiniCover/{Infrastructure => }/IO/ConsoleOutput.cs (97%) rename src/MiniCover/{Infrastructure => }/IO/IOutput.cs (86%) rename src/MiniCover/{Infrastructure => }/IO/OutputLogger.cs (98%) rename src/MiniCover/{Infrastructure => }/IO/OutputLoggerProvider.cs (91%) delete mode 100644 src/MiniCover/Infrastructure/Verbosity.cs delete mode 100644 src/MiniCover/Model/InstrumentationResult.cs delete mode 100644 src/MiniCover/Model/InstrumentedMethod.cs delete mode 100644 src/MiniCover/Properties/AssemblyInfo.cs delete mode 100644 src/MiniCover/Properties/InternalVisibility.cs delete mode 100644 src/MiniCover/Reports/Helpers/ISummaryFactory.cs rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Extensions/GraphNodeExtensionsTests.cs (98%) rename tests/{MiniCover.UnitTests/HitServices => MiniCover.Core.UnitTests/Hits}/HitsInfoTests.cs (99%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/AsyncMethod.cs (71%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/BaseTest.cs (96%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/ConstructorGenericCallThis.cs (84%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/ConstructorWithCallBase.cs (82%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/ConstructorWithTryFinally.cs (85%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/EnumerableMethod.cs (66%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/ExcludedFromCodeCoverageClass.cs (87%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/ExcludedFromCodeCoverageMethod.cs (87%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/FieldInitialization.cs (83%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/For.cs (82%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/If.cs (84%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/IfInline.cs (89%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/IfInlineNested.cs (91%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/IfWithAnd.cs (87%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/Lambda.cs (77%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/LongMethod.cs (99%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/Or.cs (83%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/OrWithEquals.cs (89%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/StaticMethod.cs (89%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/Switch.cs (84%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/ThrowException.cs (91%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/Using.cs (93%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Instrumentation/WorkerThread.cs (92%) create mode 100644 tests/MiniCover.Core.UnitTests/MiniCover.Core.UnitTests.csproj rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/TestHelpers/ILFormatter.cs (100%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/TestHelpers/InstrumentationExtensions.cs (96%) create mode 100644 tests/MiniCover.Core.UnitTests/TestHelpers/TestBase.cs rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Utils/DepsJsonUtilsTests.cs (98%) rename tests/{MiniCover.UnitTests => MiniCover.Core.UnitTests}/Utils/FileUtilsTests.cs (97%) create mode 100644 tests/MiniCover.Reports.UnitTests/MiniCover.Reports.UnitTests.csproj create mode 100644 tests/MiniCover.Reports.UnitTests/TestHelpers/TestBase.cs rename tests/{MiniCover.UnitTests => MiniCover.Reports.UnitTests}/Utils/ResourceUtilsTests.cs (80%) create mode 100644 tests/MiniCover.TestHelpers/MiniCover.TestHelpers.csproj rename tests/{MiniCover.UnitTests/TestHelpers => MiniCover.TestHelpers}/StringExtensions.cs (95%) rename tests/{MiniCover.UnitTests => MiniCover.TestHelpers}/TestBase.cs (93%) diff --git a/MiniCover.sln b/MiniCover.sln index 7a467d7ead..9f88e16004 100644 --- a/MiniCover.sln +++ b/MiniCover.sln @@ -3,16 +3,26 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.27130.2036 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MiniCover", "src\MiniCover\MiniCover.csproj", "{CE06DCCF-32DB-44F2-B6D8-37DD0395C406}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniCover", "src\MiniCover\MiniCover.csproj", "{CE06DCCF-32DB-44F2-B6D8-37DD0395C406}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{32DDAE15-CEC4-4D44-9561-AF82BE1C2DA9}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MiniCover.UnitTests", "tests\MiniCover.UnitTests\MiniCover.UnitTests.csproj", "{7373D72F-D0A7-4D74-BA48-39E4CA7679DE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniCover.UnitTests", "tests\MiniCover.UnitTests\MiniCover.UnitTests.csproj", "{7373D72F-D0A7-4D74-BA48-39E4CA7679DE}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MiniCover.HitServices", "src\MiniCover.HitServices\MiniCover.HitServices.csproj", "{0A895434-3E4B-4BA7-BA90-C4894BECEECA}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MiniCover.HitServices.UnitTests", "tests\MiniCover.HitServices.UnitTests\MiniCover.HitServices.UnitTests.csproj", "{AF2FD8B1-8CF7-46FB-B94D-6D892B5A33C9}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniCover.Core", "src\MiniCover.Core\MiniCover.Core.csproj", "{F3CF9511-1A18-44E5-96D1-F7330C7A7C1E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniCover.Reports", "src\MiniCover.Reports\MiniCover.Reports.csproj", "{FEC52983-15CF-4420-8700-0E0B6E16B101}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniCover.Core.UnitTests", "tests\MiniCover.Core.UnitTests\MiniCover.Core.UnitTests.csproj", "{6610CDC4-7860-4D3D-BCE3-B8B6383A9CFB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniCover.Reports.UnitTests", "tests\MiniCover.Reports.UnitTests\MiniCover.Reports.UnitTests.csproj", "{2000A3C7-504B-4760-9DC1-167B96C04E77}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniCover.TestHelpers", "tests\MiniCover.TestHelpers\MiniCover.TestHelpers.csproj", "{21EEDEA8-B073-4868-9E29-D0574547B884}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -35,6 +45,26 @@ Global {AF2FD8B1-8CF7-46FB-B94D-6D892B5A33C9}.Debug|Any CPU.Build.0 = Debug|Any CPU {AF2FD8B1-8CF7-46FB-B94D-6D892B5A33C9}.Release|Any CPU.ActiveCfg = Release|Any CPU {AF2FD8B1-8CF7-46FB-B94D-6D892B5A33C9}.Release|Any CPU.Build.0 = Release|Any CPU + {F3CF9511-1A18-44E5-96D1-F7330C7A7C1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F3CF9511-1A18-44E5-96D1-F7330C7A7C1E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F3CF9511-1A18-44E5-96D1-F7330C7A7C1E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F3CF9511-1A18-44E5-96D1-F7330C7A7C1E}.Release|Any CPU.Build.0 = Release|Any CPU + {FEC52983-15CF-4420-8700-0E0B6E16B101}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FEC52983-15CF-4420-8700-0E0B6E16B101}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FEC52983-15CF-4420-8700-0E0B6E16B101}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FEC52983-15CF-4420-8700-0E0B6E16B101}.Release|Any CPU.Build.0 = Release|Any CPU + {6610CDC4-7860-4D3D-BCE3-B8B6383A9CFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6610CDC4-7860-4D3D-BCE3-B8B6383A9CFB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6610CDC4-7860-4D3D-BCE3-B8B6383A9CFB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6610CDC4-7860-4D3D-BCE3-B8B6383A9CFB}.Release|Any CPU.Build.0 = Release|Any CPU + {2000A3C7-504B-4760-9DC1-167B96C04E77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2000A3C7-504B-4760-9DC1-167B96C04E77}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2000A3C7-504B-4760-9DC1-167B96C04E77}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2000A3C7-504B-4760-9DC1-167B96C04E77}.Release|Any CPU.Build.0 = Release|Any CPU + {21EEDEA8-B073-4868-9E29-D0574547B884}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21EEDEA8-B073-4868-9E29-D0574547B884}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21EEDEA8-B073-4868-9E29-D0574547B884}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21EEDEA8-B073-4868-9E29-D0574547B884}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -42,6 +72,9 @@ Global GlobalSection(NestedProjects) = preSolution {7373D72F-D0A7-4D74-BA48-39E4CA7679DE} = {32DDAE15-CEC4-4D44-9561-AF82BE1C2DA9} {AF2FD8B1-8CF7-46FB-B94D-6D892B5A33C9} = {32DDAE15-CEC4-4D44-9561-AF82BE1C2DA9} + {6610CDC4-7860-4D3D-BCE3-B8B6383A9CFB} = {32DDAE15-CEC4-4D44-9561-AF82BE1C2DA9} + {2000A3C7-504B-4760-9DC1-167B96C04E77} = {32DDAE15-CEC4-4D44-9561-AF82BE1C2DA9} + {21EEDEA8-B073-4868-9E29-D0574547B884} = {32DDAE15-CEC4-4D44-9561-AF82BE1C2DA9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C9809608-5E38-4E98-80B5-7CD7859FF4E8} diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 87107cfeb3..661948094f 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -111,8 +111,8 @@ jobs: useGlobalJson: true - bash: | export Version=${TagName:1} - dotnet pack -c Release - dotnet nuget push nupkg/*.nupkg -k $NUGET_KEY -s https://api.nuget.org/v3/index.json + dotnet pack -c Release -o nupkg + dotnet nuget push "nupkg/*.nupkg" -k $NUGET_KEY -s https://api.nuget.org/v3/index.json env: TagName: '$(Build.SourceBranchName)' NUGET_KEY: '$(NUGET_KEY)' diff --git a/build.sh b/build.sh index 17a9ab3f8c..73fdae651d 100755 --- a/build.sh +++ b/build.sh @@ -19,17 +19,17 @@ echo "# Start Uninstrument" ./minicover.sh uninstrument echo "# End Uninstrument" -echo "# Start CoberturaReport" -./minicover.sh coberturareport -echo "# End CoberturaReport" +echo "# Start Report" +./minicover.sh report --threshold 34 +echo "# End Report" echo "# Start HtmlReport" -./minicover.sh htmlreport --threshold 35 +./minicover.sh htmlreport --threshold 34 echo "# End HtmlReport" -echo "# Start Report" -./minicover.sh report --threshold 35 -echo "# End Report" +echo "# Start CoberturaReport" +./minicover.sh coberturareport +echo "# End CoberturaReport" if [ -n "${BUILD_BUILDID}" ] && [ -n "${COVERALLS_REPO_TOKEN}" ]; then echo "# Start Coveralls Report" diff --git a/src/MiniCover/Extensions/AssemblyDefinitionExtensions.cs b/src/MiniCover.Core/Extensions/AssemblyDefinitionExtensions.cs similarity index 94% rename from src/MiniCover/Extensions/AssemblyDefinitionExtensions.cs rename to src/MiniCover.Core/Extensions/AssemblyDefinitionExtensions.cs index 453f842da1..742fdf975e 100644 --- a/src/MiniCover/Extensions/AssemblyDefinitionExtensions.cs +++ b/src/MiniCover.Core/Extensions/AssemblyDefinitionExtensions.cs @@ -3,7 +3,7 @@ using Mono.Cecil; using Mono.Cecil.Cil; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class AssemblyDefinitionExtensions { diff --git a/src/MiniCover/Extensions/CodeExtensions.cs b/src/MiniCover.Core/Extensions/CodeExtensions.cs similarity index 98% rename from src/MiniCover/Extensions/CodeExtensions.cs rename to src/MiniCover.Core/Extensions/CodeExtensions.cs index 4a628d4292..6018c53bab 100644 --- a/src/MiniCover/Extensions/CodeExtensions.cs +++ b/src/MiniCover.Core/Extensions/CodeExtensions.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class CodeExtensions { diff --git a/src/MiniCover/Extensions/CustomAttributeProviderExtensions.cs b/src/MiniCover.Core/Extensions/CustomAttributeProviderExtensions.cs similarity index 95% rename from src/MiniCover/Extensions/CustomAttributeProviderExtensions.cs rename to src/MiniCover.Core/Extensions/CustomAttributeProviderExtensions.cs index 8840b8d2de..b706b04465 100644 --- a/src/MiniCover/Extensions/CustomAttributeProviderExtensions.cs +++ b/src/MiniCover.Core/Extensions/CustomAttributeProviderExtensions.cs @@ -1,7 +1,7 @@ using System.Linq; using Mono.Cecil; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class CustomAttributeProviderExtensions { diff --git a/src/MiniCover/Extensions/DocumentExtensions.cs b/src/MiniCover.Core/Extensions/DocumentExtensions.cs similarity index 97% rename from src/MiniCover/Extensions/DocumentExtensions.cs rename to src/MiniCover.Core/Extensions/DocumentExtensions.cs index 1b17a4b881..f53704087e 100644 --- a/src/MiniCover/Extensions/DocumentExtensions.cs +++ b/src/MiniCover.Core/Extensions/DocumentExtensions.cs @@ -3,7 +3,7 @@ using System.Security.Cryptography; using Mono.Cecil.Cil; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class DocumentExtensions { diff --git a/src/MiniCover/Extensions/EnumerableExtensions.cs b/src/MiniCover.Core/Extensions/EnumerableExtensions.cs similarity index 91% rename from src/MiniCover/Extensions/EnumerableExtensions.cs rename to src/MiniCover.Core/Extensions/EnumerableExtensions.cs index 867d31f5e7..8d96048251 100644 --- a/src/MiniCover/Extensions/EnumerableExtensions.cs +++ b/src/MiniCover.Core/Extensions/EnumerableExtensions.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class EnumerableExtensions { diff --git a/src/MiniCover/Extensions/GraphNodeExtensions.cs b/src/MiniCover.Core/Extensions/GraphNodeExtensions.cs similarity index 97% rename from src/MiniCover/Extensions/GraphNodeExtensions.cs rename to src/MiniCover.Core/Extensions/GraphNodeExtensions.cs index d85df9e3f2..4b123a1c6a 100644 --- a/src/MiniCover/Extensions/GraphNodeExtensions.cs +++ b/src/MiniCover.Core/Extensions/GraphNodeExtensions.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class GraphNodeExtensions { diff --git a/src/MiniCover/Instrumentation/ILProcessorExtensions.cs b/src/MiniCover.Core/Extensions/ILProcessorExtensions.cs similarity index 99% rename from src/MiniCover/Instrumentation/ILProcessorExtensions.cs rename to src/MiniCover.Core/Extensions/ILProcessorExtensions.cs index 13d2cbbb53..cd1f91c526 100644 --- a/src/MiniCover/Instrumentation/ILProcessorExtensions.cs +++ b/src/MiniCover.Core/Extensions/ILProcessorExtensions.cs @@ -1,8 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Mono.Cecil.Cil; -namespace Mono.Cecil.Cil +namespace MiniCover.Core.Extensions { public static class ILProcessorExtensions { diff --git a/src/MiniCover/Extensions/InstructionExtensions.cs b/src/MiniCover.Core/Extensions/InstructionExtensions.cs similarity index 93% rename from src/MiniCover/Extensions/InstructionExtensions.cs rename to src/MiniCover.Core/Extensions/InstructionExtensions.cs index 5e8e85eb2a..cea7bc057a 100644 --- a/src/MiniCover/Extensions/InstructionExtensions.cs +++ b/src/MiniCover.Core/Extensions/InstructionExtensions.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; -using MiniCover.Model; +using MiniCover.Core.Model; using Mono.Cecil.Cil; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class InstructionExtensions { @@ -16,8 +16,9 @@ public static GraphNode ToGraph(this Instruction rootInstruction) var pending = new Queue>(); pending.Enqueue(rootNode); - while (pending.TryDequeue(out var node)) + while (pending.Count > 0) { + var node = pending.Dequeue(); foreach (var childInstruction in node.Value.GetChildren()) { if (!cache.TryGetValue(childInstruction, out var childNode)) diff --git a/src/MiniCover/Extensions/MethodDefinitionExtensions.cs b/src/MiniCover.Core/Extensions/MethodDefinitionExtensions.cs similarity index 82% rename from src/MiniCover/Extensions/MethodDefinitionExtensions.cs rename to src/MiniCover.Core/Extensions/MethodDefinitionExtensions.cs index f4de43eb80..42eeff49f8 100644 --- a/src/MiniCover/Extensions/MethodDefinitionExtensions.cs +++ b/src/MiniCover.Core/Extensions/MethodDefinitionExtensions.cs @@ -3,7 +3,7 @@ using Mono.Cecil; using Mono.Cecil.Cil; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class MethodDefinitionExtensions { @@ -27,12 +27,14 @@ public static bool IsExcludedFromCodeCoverage(this MethodDefinition methodDefini var sequencePointsQueue = new Queue(methodDefinition.DebugInformation.SequencePoints); var instructionsQueue = new Queue(methodDefinition.Body.Instructions); - if (sequencePointsQueue.TryDequeue(out var sequencePoint)) + if (sequencePointsQueue.Count > 0) { - while (sequencePointsQueue.TryDequeue(out var nextSequencePoint)) + var sequencePoint = sequencePointsQueue.Dequeue(); + while (sequencePointsQueue.Count > 0) { - while (instructionsQueue.TryPeek(out var instruction) - && instruction.Offset < nextSequencePoint.Offset) + var nextSequencePoint = sequencePointsQueue.Dequeue(); + while (instructionsQueue.Count > 0 + && instructionsQueue.Peek().Offset < nextSequencePoint.Offset) { yield return (sequencePoint, instructionsQueue.Dequeue()); } @@ -40,8 +42,9 @@ public static bool IsExcludedFromCodeCoverage(this MethodDefinition methodDefini sequencePoint = nextSequencePoint; } - while (instructionsQueue.TryDequeue(out var remainingInstruction)) + while (instructionsQueue.Count > 0) { + var remainingInstruction = instructionsQueue.Dequeue(); yield return (sequencePoint, remainingInstruction); } } diff --git a/src/MiniCover/Extensions/ModuleDefinitionExtensions.cs b/src/MiniCover.Core/Extensions/ModuleDefinitionExtensions.cs similarity index 97% rename from src/MiniCover/Extensions/ModuleDefinitionExtensions.cs rename to src/MiniCover.Core/Extensions/ModuleDefinitionExtensions.cs index fcf2c11dac..f9c4d6fb4c 100644 --- a/src/MiniCover/Extensions/ModuleDefinitionExtensions.cs +++ b/src/MiniCover.Core/Extensions/ModuleDefinitionExtensions.cs @@ -3,7 +3,7 @@ using System.Reflection; using Mono.Cecil; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class ModuleDefinitionExtensions { diff --git a/src/MiniCover/Extensions/ObjectExtensions.cs b/src/MiniCover.Core/Extensions/ObjectExtensions.cs similarity index 96% rename from src/MiniCover/Extensions/ObjectExtensions.cs rename to src/MiniCover.Core/Extensions/ObjectExtensions.cs index 2533ca0ec9..c4eb2ba3d5 100644 --- a/src/MiniCover/Extensions/ObjectExtensions.cs +++ b/src/MiniCover.Core/Extensions/ObjectExtensions.cs @@ -2,7 +2,7 @@ using System.Collections.Concurrent; using System.Runtime.CompilerServices; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class ObjectExtensions { diff --git a/src/MiniCover/Extensions/TypeDefinitionExtensions.cs b/src/MiniCover.Core/Extensions/TypeDefinitionExtensions.cs similarity index 97% rename from src/MiniCover/Extensions/TypeDefinitionExtensions.cs rename to src/MiniCover.Core/Extensions/TypeDefinitionExtensions.cs index 97394c219b..f4849997e5 100644 --- a/src/MiniCover/Extensions/TypeDefinitionExtensions.cs +++ b/src/MiniCover.Core/Extensions/TypeDefinitionExtensions.cs @@ -3,7 +3,7 @@ using Mono.Cecil; using Mono.Cecil.Cil; -namespace MiniCover.Extensions +namespace MiniCover.Core.Extensions { public static class TypeDefinitionExtensions { diff --git a/src/MiniCover/Infrastructure/FileSystem/CachedFileReader.cs b/src/MiniCover.Core/FileSystem/CachedFileReader.cs similarity index 92% rename from src/MiniCover/Infrastructure/FileSystem/CachedFileReader.cs rename to src/MiniCover.Core/FileSystem/CachedFileReader.cs index 864f3fd9b5..fecce4a957 100644 --- a/src/MiniCover/Infrastructure/FileSystem/CachedFileReader.cs +++ b/src/MiniCover.Core/FileSystem/CachedFileReader.cs @@ -1,7 +1,7 @@ -using System.IO; +using System.IO; using Microsoft.Extensions.Caching.Memory; -namespace MiniCover.Infrastructure.FileSystem +namespace MiniCover.Core.FileSystem { public class CachedFileReader : IFileReader { diff --git a/src/MiniCover/Infrastructure/FileSystem/IFileReader.cs b/src/MiniCover.Core/FileSystem/IFileReader.cs similarity index 71% rename from src/MiniCover/Infrastructure/FileSystem/IFileReader.cs rename to src/MiniCover.Core/FileSystem/IFileReader.cs index 5d3a9da866..568f185c36 100644 --- a/src/MiniCover/Infrastructure/FileSystem/IFileReader.cs +++ b/src/MiniCover.Core/FileSystem/IFileReader.cs @@ -1,6 +1,6 @@ using System.IO; -namespace MiniCover.Infrastructure.FileSystem +namespace MiniCover.Core.FileSystem { public interface IFileReader { diff --git a/src/MiniCover/HitServices/HitsInfo.cs b/src/MiniCover.Core/Hits/HitsInfo.cs similarity index 71% rename from src/MiniCover/HitServices/HitsInfo.cs rename to src/MiniCover.Core/Hits/HitsInfo.cs index 8557cd5fdc..510f40ee0a 100644 --- a/src/MiniCover/HitServices/HitsInfo.cs +++ b/src/MiniCover.Core/Hits/HitsInfo.cs @@ -3,7 +3,7 @@ using System.Linq; using MiniCover.HitServices; -namespace MiniCover +namespace MiniCover.Core.Hits { public class HitsInfo { @@ -46,24 +46,6 @@ public IEnumerable GetHitContexts(int id) return values.Contexts; } - public static HitsInfo TryReadFromDirectory(string path) - { - var contexts = new List(); - - if (Directory.Exists(path)) - { - foreach (var hitFile in Directory.GetFiles(path, "*.hits")) - { - using (var fileStream = File.Open(hitFile, FileMode.Open, FileAccess.Read)) - { - contexts.AddRange(HitContext.Deserialize(fileStream)); - } - } - } - - return new HitsInfo(contexts); - } - class HitValues { public int HitCount { get; set; } diff --git a/src/MiniCover.Core/Hits/HitsReader.cs b/src/MiniCover.Core/Hits/HitsReader.cs new file mode 100644 index 0000000000..0380799aea --- /dev/null +++ b/src/MiniCover.Core/Hits/HitsReader.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.IO; +using MiniCover.HitServices; + +namespace MiniCover.Core.Hits +{ + public class HitsReader : IHitsReader + { + public HitsInfo TryReadFromDirectory(string path) + { + var contexts = new List(); + + if (Directory.Exists(path)) + { + foreach (var hitFile in Directory.GetFiles(path, "*.hits")) + { + using (var fileStream = File.Open(hitFile, FileMode.Open, FileAccess.Read)) + { + contexts.AddRange(HitContext.Deserialize(fileStream)); + } + } + } + + return new HitsInfo(contexts); + } + } +} diff --git a/src/MiniCover.Core/Hits/HitsResetter.cs b/src/MiniCover.Core/Hits/HitsResetter.cs new file mode 100644 index 0000000000..de04740f06 --- /dev/null +++ b/src/MiniCover.Core/Hits/HitsResetter.cs @@ -0,0 +1,59 @@ +using System; +using System.IO.Abstractions; +using System.Linq; +using Microsoft.Extensions.Logging; + +namespace MiniCover.Core.Hits +{ + public class HitsResetter : IHitsResetter + { + private readonly ILogger _logger; + + public HitsResetter( + ILogger logger) + { + _logger = logger; + } + + public bool ResetHits(IDirectoryInfo hitsDirectory) + { + _logger.LogInformation("Resetting hits directory '{directory}'", hitsDirectory.FullName); + + var hitsFiles = hitsDirectory.Exists + ? hitsDirectory.GetFiles("*.hits") + : new IFileInfo[0]; + + if (!hitsFiles.Any()) + { + _logger.LogInformation("Directory is already cleared"); + return true; + } + + _logger.LogInformation("Found {count} files to clean", hitsFiles.Length); + + var errorsCount = 0; + foreach (var hitsFile in hitsFiles) + { + try + { + hitsFile.Delete(); + _logger.LogTrace("{fileName} - removed", hitsFile.FullName); + } + catch (Exception e) + { + errorsCount++; + _logger.LogError("{fileName} - error: {error}", hitsFile.FullName, e.Message); + } + } + + if (errorsCount != 0) + { + _logger.LogError("Reset operation completed with {errorsCount} errors", errorsCount); + return false; + } + + _logger.LogInformation("Reset operation completed without errors"); + return true; + } + } +} diff --git a/src/MiniCover.Core/Hits/IHitsReader.cs b/src/MiniCover.Core/Hits/IHitsReader.cs new file mode 100644 index 0000000000..f16a012326 --- /dev/null +++ b/src/MiniCover.Core/Hits/IHitsReader.cs @@ -0,0 +1,7 @@ +namespace MiniCover.Core.Hits +{ + public interface IHitsReader + { + HitsInfo TryReadFromDirectory(string path); + } +} \ No newline at end of file diff --git a/src/MiniCover.Core/Hits/IHitsResetter.cs b/src/MiniCover.Core/Hits/IHitsResetter.cs new file mode 100644 index 0000000000..552b6d713d --- /dev/null +++ b/src/MiniCover.Core/Hits/IHitsResetter.cs @@ -0,0 +1,9 @@ +using System.IO.Abstractions; + +namespace MiniCover.Core.Hits +{ + public interface IHitsResetter + { + bool ResetHits(IDirectoryInfo hitsDirectory); + } +} \ No newline at end of file diff --git a/src/MiniCover/Instrumentation/AssemblyInstrumenter.cs b/src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs similarity index 97% rename from src/MiniCover/Instrumentation/AssemblyInstrumenter.cs rename to src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs index 6332ee5457..89ad12e3e3 100644 --- a/src/MiniCover/Instrumentation/AssemblyInstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs @@ -1,17 +1,16 @@ using System; -using System.Collections.Generic; using System.IO; using System.IO.Abstractions; using System.Linq; using System.Reflection; using Microsoft.Extensions.Logging; -using MiniCover.Extensions; +using MiniCover.Core.Extensions; +using MiniCover.Core.Model; +using MiniCover.Core.Utils; using MiniCover.HitServices; -using MiniCover.Model; -using MiniCover.Utils; using Mono.Cecil; -namespace MiniCover.Instrumentation +namespace MiniCover.Core.Instrumentation { public class AssemblyInstrumenter { diff --git a/src/MiniCover/Instrumentation/CustomAssemblyResolver.cs b/src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs similarity index 96% rename from src/MiniCover/Instrumentation/CustomAssemblyResolver.cs rename to src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs index d3167b41bf..7f75c6d06a 100644 --- a/src/MiniCover/Instrumentation/CustomAssemblyResolver.cs +++ b/src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs @@ -5,10 +5,10 @@ using System.Linq; using Microsoft.Extensions.DependencyModel; using Microsoft.Extensions.Logging; -using MiniCover.Utils; +using MiniCover.Core.Utils; using Mono.Cecil; -namespace MiniCover.Instrumentation +namespace MiniCover.Core.Instrumentation { public class CustomAssemblyResolver : DefaultAssemblyResolver { @@ -79,9 +79,9 @@ protected override AssemblyDefinition SearchDirectory(AssemblyNameReference name var file = directory; if (!string.IsNullOrEmpty(library.Path)) - file = Path.Combine(file, Path.Combine(library.Path.Split("/"))); + file = Path.Combine(file, Path.Combine(library.Path.Split('/'))); - file = Path.Combine(file, Path.Combine(runtimeFile.Path.Split("/"))); + file = Path.Combine(file, Path.Combine(runtimeFile.Path.Split('/'))); _logger.LogTrace("Trying to load file {file}", file); diff --git a/src/MiniCover/Instrumentation/IUninstrumenter.cs b/src/MiniCover.Core/Instrumentation/IUninstrumenter.cs similarity index 59% rename from src/MiniCover/Instrumentation/IUninstrumenter.cs rename to src/MiniCover.Core/Instrumentation/IUninstrumenter.cs index 83d093a657..42de866f74 100644 --- a/src/MiniCover/Instrumentation/IUninstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/IUninstrumenter.cs @@ -1,6 +1,6 @@ -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.Instrumentation +namespace MiniCover.Core.Instrumentation { public interface IUninstrumenter { diff --git a/src/MiniCover/Instrumentation/InstrumentationContext.cs b/src/MiniCover.Core/Instrumentation/InstrumentationContext.cs similarity index 94% rename from src/MiniCover/Instrumentation/InstrumentationContext.cs rename to src/MiniCover.Core/Instrumentation/InstrumentationContext.cs index eb844ff25e..1c447db303 100644 --- a/src/MiniCover/Instrumentation/InstrumentationContext.cs +++ b/src/MiniCover.Core/Instrumentation/InstrumentationContext.cs @@ -3,7 +3,7 @@ using System.IO.Abstractions; using System.Linq; -namespace MiniCover.Instrumentation +namespace MiniCover.Core.Instrumentation { public class InstrumentationContext { diff --git a/src/MiniCover/Instrumentation/Instrumenter.cs b/src/MiniCover.Core/Instrumentation/Instrumenter.cs similarity index 98% rename from src/MiniCover/Instrumentation/Instrumenter.cs rename to src/MiniCover.Core/Instrumentation/Instrumenter.cs index 137e3a8622..97c0895374 100644 --- a/src/MiniCover/Instrumentation/Instrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/Instrumenter.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; @@ -6,11 +6,11 @@ using System.Linq; using System.Reflection; using Microsoft.Extensions.Logging; +using MiniCover.Core.Model; +using MiniCover.Core.Utils; using MiniCover.HitServices; -using MiniCover.Model; -using MiniCover.Utils; -namespace MiniCover.Instrumentation +namespace MiniCover.Core.Instrumentation { public class Instrumenter { diff --git a/src/MiniCover/Instrumentation/MethodInstrumenter.cs b/src/MiniCover.Core/Instrumentation/MethodInstrumenter.cs similarity index 93% rename from src/MiniCover/Instrumentation/MethodInstrumenter.cs rename to src/MiniCover.Core/Instrumentation/MethodInstrumenter.cs index 7c7425b794..67f8b0d36e 100644 --- a/src/MiniCover/Instrumentation/MethodInstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/MethodInstrumenter.cs @@ -4,16 +4,16 @@ using System.Linq; using System.Reflection; using Microsoft.Extensions.Logging; -using MiniCover.Extensions; +using MiniCover.Core.Extensions; +using MiniCover.Core.FileSystem; +using MiniCover.Core.Instrumentation.Patterns; +using MiniCover.Core.Model; using MiniCover.HitServices; -using MiniCover.Infrastructure.FileSystem; -using MiniCover.Instrumentation.Patterns; -using MiniCover.Model; using Mono.Cecil; using Mono.Cecil.Cil; using Mono.Cecil.Rocks; -namespace MiniCover.Instrumentation +namespace MiniCover.Core.Instrumentation { public class MethodInstrumenter { @@ -42,12 +42,11 @@ public void InstrumentMethod( { var originalMethod = methodDefinition.ResolveOriginalMethod(); - var instrumentedMethod = instrumentedAssembly.AddMethod(new InstrumentedMethod - { - Class = originalMethod.DeclaringType.FullName, - Name = originalMethod.Name, - FullName = originalMethod.FullName, - }); + var instrumentedMethod = instrumentedAssembly.GetOrAddMethod( + originalMethod.DeclaringType.FullName, + originalMethod.Name, + originalMethod.FullName + ); var methodContextClassReference = methodDefinition.Module.GetOrImportReference(methodScopeType); var enterMethodReference = methodDefinition.Module.GetOrImportReference(enterMethodInfo); @@ -106,17 +105,14 @@ private void InstrumentInstructions( { var hitMethodReference = methodDefinition.Module.GetOrImportReference(hitMethodInfo); - var excludedInstructions = GetExclusions(ilProcessor.Body.Instructions) - .Distinct() - .ToHashSet(); + var excludedInstructions = new HashSet(GetExclusions(ilProcessor.Body.Instructions)); var userSequencePointsInstructions = sequencePointsInstructions .Where(x => !x.sequencePoint.IsHidden && !excludedInstructions.Contains(x.instruction)) .ToArray(); - var userInstructions = userSequencePointsInstructions - .Select(x => x.instruction) - .ToHashSet(); + var userInstructions = new HashSet(userSequencePointsInstructions + .Select(x => x.instruction)); var sequencePointByInstruction = userSequencePointsInstructions .ToDictionary(x => x.instruction, x => x.sequencePoint); diff --git a/src/MiniCover/Instrumentation/Patterns/LambdaInitPattern.cs b/src/MiniCover.Core/Instrumentation/Patterns/LambdaInitPattern.cs similarity index 93% rename from src/MiniCover/Instrumentation/Patterns/LambdaInitPattern.cs rename to src/MiniCover.Core/Instrumentation/Patterns/LambdaInitPattern.cs index 2c00f78713..5aac6d77dc 100644 --- a/src/MiniCover/Instrumentation/Patterns/LambdaInitPattern.cs +++ b/src/MiniCover.Core/Instrumentation/Patterns/LambdaInitPattern.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; -using MiniCover.Extensions; +using MiniCover.Core.Extensions; using Mono.Cecil; using Mono.Cecil.Cil; -namespace MiniCover.Instrumentation.Patterns +namespace MiniCover.Core.Instrumentation.Patterns { public static class LambdaInitPattern { diff --git a/src/MiniCover/Instrumentation/TypeInstrumenter.cs b/src/MiniCover.Core/Instrumentation/TypeInstrumenter.cs similarity index 93% rename from src/MiniCover/Instrumentation/TypeInstrumenter.cs rename to src/MiniCover.Core/Instrumentation/TypeInstrumenter.cs index 0eb029d458..ac6284871c 100644 --- a/src/MiniCover/Instrumentation/TypeInstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/TypeInstrumenter.cs @@ -1,9 +1,9 @@ -using System.Linq; -using MiniCover.Extensions; -using MiniCover.Model; +using System.Linq; +using MiniCover.Core.Extensions; +using MiniCover.Core.Model; using Mono.Cecil; -namespace MiniCover.Instrumentation +namespace MiniCover.Core.Instrumentation { public class TypeInstrumenter { diff --git a/src/MiniCover/Instrumentation/Uninstrumenter.cs b/src/MiniCover.Core/Instrumentation/Uninstrumenter.cs similarity index 94% rename from src/MiniCover/Instrumentation/Uninstrumenter.cs rename to src/MiniCover.Core/Instrumentation/Uninstrumenter.cs index 078a2ccb69..9ab7c96ec2 100644 --- a/src/MiniCover/Instrumentation/Uninstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/Uninstrumenter.cs @@ -1,9 +1,9 @@ using System.IO; using System.IO.Abstractions; -using MiniCover.Model; -using MiniCover.Utils; +using MiniCover.Core.Model; +using MiniCover.Core.Utils; -namespace MiniCover.Instrumentation +namespace MiniCover.Core.Instrumentation { public class Uninstrumenter : IUninstrumenter { diff --git a/src/MiniCover.Core/MiniCover.Core.csproj b/src/MiniCover.Core/MiniCover.Core.csproj new file mode 100644 index 0000000000..537759d0e1 --- /dev/null +++ b/src/MiniCover.Core/MiniCover.Core.csproj @@ -0,0 +1,30 @@ + + + + netstandard2.0 + + + + Lucas Lorentz + MiniCover code coverage measurement core implementation + https://github.com/lucaslorentz/minicover + coverage,cover,minicover + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/MiniCover/Model/AssemblyLocation.cs b/src/MiniCover.Core/Model/AssemblyLocation.cs similarity index 88% rename from src/MiniCover/Model/AssemblyLocation.cs rename to src/MiniCover.Core/Model/AssemblyLocation.cs index fa1b9c5306..dc51a25b3f 100644 --- a/src/MiniCover/Model/AssemblyLocation.cs +++ b/src/MiniCover.Core/Model/AssemblyLocation.cs @@ -1,4 +1,4 @@ -namespace MiniCover.Model +namespace MiniCover.Core.Model { public class AssemblyLocation { diff --git a/src/MiniCover/Model/GraphNode.cs b/src/MiniCover.Core/Model/GraphNode.cs similarity index 91% rename from src/MiniCover/Model/GraphNode.cs rename to src/MiniCover.Core/Model/GraphNode.cs index 95b9101340..1c68063d32 100644 --- a/src/MiniCover/Model/GraphNode.cs +++ b/src/MiniCover.Core/Model/GraphNode.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace MiniCover.Model +namespace MiniCover.Core.Model { public class GraphNode { diff --git a/src/MiniCover.Core/Model/InstrumentationResult.cs b/src/MiniCover.Core/Model/InstrumentationResult.cs new file mode 100644 index 0000000000..b4d2dda67f --- /dev/null +++ b/src/MiniCover.Core/Model/InstrumentationResult.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json; + +namespace MiniCover.Core.Model +{ + public class InstrumentationResult + { + private readonly List _assemblies; + private readonly HashSet _extraAssemblies; + + public InstrumentationResult() + { + _assemblies = new List(); + _extraAssemblies = new HashSet(); + } + + [JsonConstructor] + protected InstrumentationResult( + InstrumentedAssembly[] assemblies, + string[] extraAssemblies) + { + _assemblies = assemblies?.ToList() ?? new List(); + _extraAssemblies = extraAssemblies != null + ? new HashSet(extraAssemblies) + : new HashSet(); + } + + [JsonProperty(Order = -2)] + public string SourcePath { get; set; } + + [JsonProperty(Order = -2)] + public string HitsPath { get; set; } + + public IEnumerable Assemblies => _assemblies; + public IEnumerable ExtraAssemblies => _extraAssemblies; + + public void AddInstrumentedAssembly(InstrumentedAssembly instrumentedAssembly) + { + _assemblies.Add(instrumentedAssembly); + } + + public void AddExtraAssembly(string file) + { + _extraAssemblies.Add(file); + } + + public SourceFile[] GetSourceFiles() + { + return Assemblies + .SelectMany(a => a.SourceFiles) + .GroupBy(sf => sf.Path) + .Select(g => SourceFile.Merge(g)) + .ToArray(); + } + } +} diff --git a/src/MiniCover/Model/InstrumentedAssembly.cs b/src/MiniCover.Core/Model/InstrumentedAssembly.cs similarity index 77% rename from src/MiniCover/Model/InstrumentedAssembly.cs rename to src/MiniCover.Core/Model/InstrumentedAssembly.cs index 52db84367d..6502ea11eb 100644 --- a/src/MiniCover/Model/InstrumentedAssembly.cs +++ b/src/MiniCover.Core/Model/InstrumentedAssembly.cs @@ -2,18 +2,18 @@ using System.Linq; using Newtonsoft.Json; -namespace MiniCover.Model +namespace MiniCover.Core.Model { public class InstrumentedAssembly { - private readonly HashSet _methods; + private readonly Dictionary _methods; private readonly List _locations; private readonly SortedDictionary _sourceFiles; public InstrumentedAssembly(string name) { Name = name; - _methods = new HashSet(); + _methods = new Dictionary(); _locations = new List(); _sourceFiles = new SortedDictionary(); } @@ -26,7 +26,7 @@ protected InstrumentedAssembly( SourceFile[] sourceFiles) { Name = name; - _methods = methods.ToHashSet(); + _methods = methods.ToDictionary(m => m.FullName, m => m); _locations = locations.ToList(); _sourceFiles = new SortedDictionary( sourceFiles.ToDictionary(sf => sf.Path, sf => sf)); @@ -35,7 +35,7 @@ protected InstrumentedAssembly( [JsonProperty(Order = -2)] public string Name { get; } - public IEnumerable Methods => _methods; + public IEnumerable Methods => _methods.Values; public IEnumerable Locations => _locations; public IEnumerable SourceFiles => _sourceFiles.Values; @@ -45,12 +45,20 @@ protected InstrumentedAssembly( [JsonIgnore] public string TempPdbFile { get; set; } - public InstrumentedMethod AddMethod(InstrumentedMethod method) + public InstrumentedMethod GetOrAddMethod(string @class, string name, string fullName) { - if (_methods.TryGetValue(method, out var existingValue)) + if (_methods.TryGetValue(fullName, out var existingValue)) return existingValue; - _methods.Add(method); + var method = new InstrumentedMethod + { + Class = @class, + Name = name, + FullName = fullName + }; + + _methods.Add(fullName, method); + return method; } diff --git a/src/MiniCover/Model/InstrumentedBranch.cs b/src/MiniCover.Core/Model/InstrumentedBranch.cs similarity index 88% rename from src/MiniCover/Model/InstrumentedBranch.cs rename to src/MiniCover.Core/Model/InstrumentedBranch.cs index 693329cf91..61964acbcc 100644 --- a/src/MiniCover/Model/InstrumentedBranch.cs +++ b/src/MiniCover.Core/Model/InstrumentedBranch.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace MiniCover.Model +namespace MiniCover.Core.Model { public class InstrumentedBranch { diff --git a/src/MiniCover/Model/InstrumentedCondition.cs b/src/MiniCover.Core/Model/InstrumentedCondition.cs similarity index 89% rename from src/MiniCover/Model/InstrumentedCondition.cs rename to src/MiniCover.Core/Model/InstrumentedCondition.cs index 580b5ed622..926606df8f 100644 --- a/src/MiniCover/Model/InstrumentedCondition.cs +++ b/src/MiniCover.Core/Model/InstrumentedCondition.cs @@ -1,7 +1,7 @@ using System; using Newtonsoft.Json; -namespace MiniCover.Model +namespace MiniCover.Core.Model { public class InstrumentedCondition { diff --git a/src/MiniCover.Core/Model/InstrumentedMethod.cs b/src/MiniCover.Core/Model/InstrumentedMethod.cs new file mode 100644 index 0000000000..9c8626b7bf --- /dev/null +++ b/src/MiniCover.Core/Model/InstrumentedMethod.cs @@ -0,0 +1,9 @@ +namespace MiniCover.Core.Model +{ + public class InstrumentedMethod + { + public string Class { get; set; } + public string Name { get; set; } + public string FullName { get; set; } + } +} diff --git a/src/MiniCover/Model/InstrumentedSequence.cs b/src/MiniCover.Core/Model/InstrumentedSequence.cs similarity index 96% rename from src/MiniCover/Model/InstrumentedSequence.cs rename to src/MiniCover.Core/Model/InstrumentedSequence.cs index 88fbc1867e..a24de537db 100644 --- a/src/MiniCover/Model/InstrumentedSequence.cs +++ b/src/MiniCover.Core/Model/InstrumentedSequence.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Newtonsoft.Json; -namespace MiniCover.Model +namespace MiniCover.Core.Model { public class InstrumentedSequence { diff --git a/src/MiniCover/Model/SourceFile.cs b/src/MiniCover.Core/Model/SourceFile.cs similarity index 95% rename from src/MiniCover/Model/SourceFile.cs rename to src/MiniCover.Core/Model/SourceFile.cs index edd3009247..3ebb96d089 100644 --- a/src/MiniCover/Model/SourceFile.cs +++ b/src/MiniCover.Core/Model/SourceFile.cs @@ -2,7 +2,7 @@ using System.Linq; using Newtonsoft.Json; -namespace MiniCover.Model +namespace MiniCover.Core.Model { public class SourceFile { diff --git a/src/MiniCover/Utils/DepsJsonUtils.cs b/src/MiniCover.Core/Utils/DepsJsonUtils.cs similarity index 99% rename from src/MiniCover/Utils/DepsJsonUtils.cs rename to src/MiniCover.Core/Utils/DepsJsonUtils.cs index f9d93544a1..45eb209372 100644 --- a/src/MiniCover/Utils/DepsJsonUtils.cs +++ b/src/MiniCover.Core/Utils/DepsJsonUtils.cs @@ -6,7 +6,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; -namespace MiniCover.Utils +namespace MiniCover.Core.Utils { public class DepsJsonUtils { diff --git a/src/MiniCover/Utils/FileUtils.cs b/src/MiniCover.Core/Utils/FileUtils.cs similarity index 97% rename from src/MiniCover/Utils/FileUtils.cs rename to src/MiniCover.Core/Utils/FileUtils.cs index 3218419662..e83f836d67 100644 --- a/src/MiniCover/Utils/FileUtils.cs +++ b/src/MiniCover.Core/Utils/FileUtils.cs @@ -3,7 +3,7 @@ using System.IO.Abstractions; using System.Security.Cryptography; -namespace MiniCover.Utils +namespace MiniCover.Core.Utils { public static class FileUtils { diff --git a/src/MiniCover.HitServices/MiniCover.HitServices.csproj b/src/MiniCover.HitServices/MiniCover.HitServices.csproj index 16ace3198f..012909d7db 100644 --- a/src/MiniCover.HitServices/MiniCover.HitServices.csproj +++ b/src/MiniCover.HitServices/MiniCover.HitServices.csproj @@ -4,4 +4,5 @@ netstandard2.0 false + diff --git a/src/MiniCover/Reports/Clover/CloverCounter.cs b/src/MiniCover.Reports/Clover/CloverCounter.cs similarity index 100% rename from src/MiniCover/Reports/Clover/CloverCounter.cs rename to src/MiniCover.Reports/Clover/CloverCounter.cs diff --git a/src/MiniCover/Reports/Clover/CloverReport.cs b/src/MiniCover.Reports/Clover/CloverReport.cs similarity index 96% rename from src/MiniCover/Reports/Clover/CloverReport.cs rename to src/MiniCover.Reports/Clover/CloverReport.cs index f523decb2b..b6f197a820 100644 --- a/src/MiniCover/Reports/Clover/CloverReport.cs +++ b/src/MiniCover.Reports/Clover/CloverReport.cs @@ -5,15 +5,23 @@ using System.Linq; using System.Xml; using System.Xml.Linq; -using MiniCover.Model; +using MiniCover.Core.Hits; +using MiniCover.Core.Model; namespace MiniCover.Reports.Clover { public class CloverReport : ICloverReport { + private readonly IHitsReader _hitsReader; + + public CloverReport(IHitsReader hitsReader) + { + _hitsReader = hitsReader; + } + public void Execute(InstrumentationResult result, IFileInfo output) { - var hits = HitsInfo.TryReadFromDirectory(result.HitsPath); + var hits = _hitsReader.TryReadFromDirectory(result.HitsPath); var document = new XDocument( new XDeclaration("1.0", "utf-8", null), diff --git a/src/MiniCover/Reports/Clover/ICloverReport.cs b/src/MiniCover.Reports/Clover/ICloverReport.cs similarity index 87% rename from src/MiniCover/Reports/Clover/ICloverReport.cs rename to src/MiniCover.Reports/Clover/ICloverReport.cs index 962191ec6e..15ba46b3c1 100644 --- a/src/MiniCover/Reports/Clover/ICloverReport.cs +++ b/src/MiniCover.Reports/Clover/ICloverReport.cs @@ -1,5 +1,5 @@ using System.IO.Abstractions; -using MiniCover.Model; +using MiniCover.Core.Model; namespace MiniCover.Reports.Clover { diff --git a/src/MiniCover/Reports/Cobertura/CoberturaReport.cs b/src/MiniCover.Reports/Cobertura/CoberturaReport.cs similarity index 97% rename from src/MiniCover/Reports/Cobertura/CoberturaReport.cs rename to src/MiniCover.Reports/Cobertura/CoberturaReport.cs index 2aed5cdb4f..036ab89691 100644 --- a/src/MiniCover/Reports/Cobertura/CoberturaReport.cs +++ b/src/MiniCover.Reports/Cobertura/CoberturaReport.cs @@ -4,16 +4,24 @@ using System.Linq; using System.Xml; using System.Xml.Linq; -using MiniCover.Extensions; -using MiniCover.Model; +using MiniCover.Core.Extensions; +using MiniCover.Core.Hits; +using MiniCover.Core.Model; namespace MiniCover.Reports.Cobertura { public class CoberturaReport : ICoberturaReport { + private readonly IHitsReader _hitsReader; + + public CoberturaReport(IHitsReader hitsReader) + { + _hitsReader = hitsReader; + } + public void Execute(InstrumentationResult result, IFileInfo output) { - var hits = HitsInfo.TryReadFromDirectory(result.HitsPath); + var hits = _hitsReader.TryReadFromDirectory(result.HitsPath); var document = new XDocument( new XDeclaration("1.0", "utf-8", null), diff --git a/src/MiniCover/Reports/Cobertura/ICoberturaReport.cs b/src/MiniCover.Reports/Cobertura/ICoberturaReport.cs similarity index 87% rename from src/MiniCover/Reports/Cobertura/ICoberturaReport.cs rename to src/MiniCover.Reports/Cobertura/ICoberturaReport.cs index 80fb4e7d0c..8b7302bc49 100644 --- a/src/MiniCover/Reports/Cobertura/ICoberturaReport.cs +++ b/src/MiniCover.Reports/Cobertura/ICoberturaReport.cs @@ -1,5 +1,5 @@ using System.IO.Abstractions; -using MiniCover.Model; +using MiniCover.Core.Model; namespace MiniCover.Reports.Cobertura { diff --git a/src/MiniCover/Reports/ConsoleReport.cs b/src/MiniCover.Reports/Console/ConsoleReport.cs similarity index 85% rename from src/MiniCover/Reports/ConsoleReport.cs rename to src/MiniCover.Reports/Console/ConsoleReport.cs index f37abf84ea..5d980a396d 100644 --- a/src/MiniCover/Reports/ConsoleReport.cs +++ b/src/MiniCover.Reports/Console/ConsoleReport.cs @@ -1,24 +1,36 @@ using System; using System.Linq; -using MiniCover.Model; +using MiniCover.Core.Hits; +using MiniCover.Core.Model; using MiniCover.Reports.Helpers; -namespace MiniCover.Reports +namespace MiniCover.Reports.Console { public class ConsoleReport : IConsoleReport { + private readonly IHitsReader _hitsReader; + private readonly ISummaryFactory _summaryFactory; + + public ConsoleReport( + IHitsReader hitsReader, + ISummaryFactory summaryFactory) + { + _hitsReader = hitsReader; + _summaryFactory = summaryFactory; + } + public int Execute( InstrumentationResult result, float threshold, bool noFail) { - var hitsInfo = HitsInfo.TryReadFromDirectory(result.HitsPath); + var hitsInfo = _hitsReader.TryReadFromDirectory(result.HitsPath); var files = result.GetSourceFiles(); - var summary = SummaryFactory.CalculateFilesSummary(files, hitsInfo, threshold); + var summary = _summaryFactory.CalculateFilesSummary(files, hitsInfo, threshold); - var tableRows = SummaryFactory.GetSummaryGrid(files, hitsInfo, threshold); + var tableRows = _summaryFactory.GetSummaryGrid(files, hitsInfo, threshold); var consoleTable = new ConsoleTable { diff --git a/src/MiniCover/Reports/IConsoleReport.cs b/src/MiniCover.Reports/Console/IConsoleReport.cs similarity index 66% rename from src/MiniCover/Reports/IConsoleReport.cs rename to src/MiniCover.Reports/Console/IConsoleReport.cs index 00e612d2ef..5300885eda 100644 --- a/src/MiniCover/Reports/IConsoleReport.cs +++ b/src/MiniCover.Reports/Console/IConsoleReport.cs @@ -1,6 +1,6 @@ -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.Reports +namespace MiniCover.Reports.Console { public interface IConsoleReport { diff --git a/src/MiniCover/Reports/Coveralls/CoverallsReport.cs b/src/MiniCover.Reports/Coveralls/CoverallsReport.cs similarity index 89% rename from src/MiniCover/Reports/Coveralls/CoverallsReport.cs rename to src/MiniCover.Reports/Coveralls/CoverallsReport.cs index 5f8309d8d5..36328768bf 100644 --- a/src/MiniCover/Reports/Coveralls/CoverallsReport.cs +++ b/src/MiniCover.Reports/Coveralls/CoverallsReport.cs @@ -6,9 +6,11 @@ using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; -using MiniCover.Extensions; -using MiniCover.Model; +using MiniCover.Core.Extensions; +using MiniCover.Core.Hits; +using MiniCover.Core.Model; using MiniCover.Reports.Coveralls.Models; +using MiniCover.Reports.Utils; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -18,6 +20,13 @@ public class CoverallsReport : ICoverallsReport { private const string coverallsJobsUrl = "https://coveralls.io/api/v1/jobs"; + private readonly IHitsReader _hitsReader; + + public CoverallsReport(IHitsReader hitsReader) + { + _hitsReader = hitsReader; + } + public virtual async Task Execute(InstrumentationResult result, string output, string repoToken, @@ -34,7 +43,7 @@ public virtual async Task Execute(InstrumentationResult result, string remoteName, string remoteUrl) { - var hits = HitsInfo.TryReadFromDirectory(result.HitsPath); + var hits = _hitsReader.TryReadFromDirectory(result.HitsPath); var files = result.GetSourceFiles(); @@ -79,7 +88,7 @@ public virtual async Task Execute(InstrumentationResult result, if (!File.Exists(sourceFile)) { - Console.WriteLine($"File not found: {sourceFile}"); + System.Console.WriteLine($"File not found: {sourceFile}"); continue; } @@ -89,7 +98,7 @@ public virtual async Task Execute(InstrumentationResult result, .GroupByMany(f => f.GetLines()) .ToDictionary(g => g.Key, g => g.Sum(i => hits.GetHitCount(i.HitId))); - var fileName = Path.GetRelativePath(rootFolder, sourceFile).Replace("\\", "/"); + var fileName = PathUtils.GetRelativePath(rootFolder, sourceFile).Replace("\\", "/"); var coverallsSourceFileModel = new CoverallsSourceFileModel { @@ -146,7 +155,7 @@ private async Task Post(string json) if (!response.IsSuccessStatusCode) { var message = await GetErrorMessage(response); - Console.Error.Write($"Coveralls upload failed: {response.StatusCode} - {message}"); + System.Console.Error.Write($"Coveralls upload failed: {response.StatusCode} - {message}"); return 1; } diff --git a/src/MiniCover/Reports/Coveralls/ICoverallsReport.cs b/src/MiniCover.Reports/Coveralls/ICoverallsReport.cs similarity index 96% rename from src/MiniCover/Reports/Coveralls/ICoverallsReport.cs rename to src/MiniCover.Reports/Coveralls/ICoverallsReport.cs index 8159dd46df..fb93578e35 100644 --- a/src/MiniCover/Reports/Coveralls/ICoverallsReport.cs +++ b/src/MiniCover.Reports/Coveralls/ICoverallsReport.cs @@ -1,5 +1,5 @@ using System.Threading.Tasks; -using MiniCover.Model; +using MiniCover.Core.Model; namespace MiniCover.Reports.Coveralls { diff --git a/src/MiniCover/Reports/Coveralls/Models/CoverallsCommitModel.cs b/src/MiniCover.Reports/Coveralls/Models/CoverallsCommitModel.cs similarity index 100% rename from src/MiniCover/Reports/Coveralls/Models/CoverallsCommitModel.cs rename to src/MiniCover.Reports/Coveralls/Models/CoverallsCommitModel.cs diff --git a/src/MiniCover/Reports/Coveralls/Models/CoverallsGitModel.cs b/src/MiniCover.Reports/Coveralls/Models/CoverallsGitModel.cs similarity index 100% rename from src/MiniCover/Reports/Coveralls/Models/CoverallsGitModel.cs rename to src/MiniCover.Reports/Coveralls/Models/CoverallsGitModel.cs diff --git a/src/MiniCover/Reports/Coveralls/Models/CoverallsJobModel.cs b/src/MiniCover.Reports/Coveralls/Models/CoverallsJobModel.cs similarity index 100% rename from src/MiniCover/Reports/Coveralls/Models/CoverallsJobModel.cs rename to src/MiniCover.Reports/Coveralls/Models/CoverallsJobModel.cs diff --git a/src/MiniCover/Reports/Coveralls/Models/CoverallsRemoteModel.cs b/src/MiniCover.Reports/Coveralls/Models/CoverallsRemoteModel.cs similarity index 100% rename from src/MiniCover/Reports/Coveralls/Models/CoverallsRemoteModel.cs rename to src/MiniCover.Reports/Coveralls/Models/CoverallsRemoteModel.cs diff --git a/src/MiniCover/Reports/Coveralls/Models/CoverallsSourceFileModel.cs b/src/MiniCover.Reports/Coveralls/Models/CoverallsSourceFileModel.cs similarity index 100% rename from src/MiniCover/Reports/Coveralls/Models/CoverallsSourceFileModel.cs rename to src/MiniCover.Reports/Coveralls/Models/CoverallsSourceFileModel.cs diff --git a/src/MiniCover/Reports/Helpers/ConsoleBox.cs b/src/MiniCover.Reports/Helpers/ConsoleBox.cs similarity index 100% rename from src/MiniCover/Reports/Helpers/ConsoleBox.cs rename to src/MiniCover.Reports/Helpers/ConsoleBox.cs diff --git a/src/MiniCover/Reports/Helpers/ConsoleTable.cs b/src/MiniCover.Reports/Helpers/ConsoleTable.cs similarity index 93% rename from src/MiniCover/Reports/Helpers/ConsoleTable.cs rename to src/MiniCover.Reports/Helpers/ConsoleTable.cs index 21d17b2470..21201806c5 100644 --- a/src/MiniCover/Reports/Helpers/ConsoleTable.cs +++ b/src/MiniCover.Reports/Helpers/ConsoleTable.cs @@ -111,15 +111,15 @@ private string Pad(string text, int length, TextAlign alignment = TextAlign.Left private void WriteBox(BoxPart parts, int repeat = 1) { - Console.Write(new string(parts.ToChar(), repeat)); + System.Console.Write(new string(parts.ToChar(), repeat)); } private void Write(string text, ConsoleColor? color = null) { - var originalColor = Console.ForegroundColor; - Console.ForegroundColor = color ?? originalColor; - Console.Write(text); - Console.ForegroundColor = originalColor; + var originalColor = System.Console.ForegroundColor; + System.Console.ForegroundColor = color ?? originalColor; + System.Console.Write(text); + System.Console.ForegroundColor = originalColor; } } diff --git a/src/MiniCover.Reports/Helpers/ISummaryFactory.cs b/src/MiniCover.Reports/Helpers/ISummaryFactory.cs new file mode 100644 index 0000000000..c9a30b666c --- /dev/null +++ b/src/MiniCover.Reports/Helpers/ISummaryFactory.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using MiniCover.Core.Hits; +using MiniCover.Core.Model; + +namespace MiniCover.Reports.Helpers +{ + public interface ISummaryFactory + { + Summary CalculateSummary(InstrumentationResult result, float threshold); + + Summary CalculateFilesSummary(IEnumerable sourceFiles, HitsInfo hitsInfo, float threshold); + + List GetSummaryGrid(SourceFile[] sourceFiles, HitsInfo hitsInfo, float threshold); + } +} \ No newline at end of file diff --git a/src/MiniCover/Reports/Helpers/Summary.cs b/src/MiniCover.Reports/Helpers/Summary.cs similarity index 100% rename from src/MiniCover/Reports/Helpers/Summary.cs rename to src/MiniCover.Reports/Helpers/Summary.cs diff --git a/src/MiniCover/Reports/Helpers/SummaryFactory.cs b/src/MiniCover.Reports/Helpers/SummaryFactory.cs similarity index 91% rename from src/MiniCover/Reports/Helpers/SummaryFactory.cs rename to src/MiniCover.Reports/Helpers/SummaryFactory.cs index 6748f09bdb..992bc1eba2 100644 --- a/src/MiniCover/Reports/Helpers/SummaryFactory.cs +++ b/src/MiniCover.Reports/Helpers/SummaryFactory.cs @@ -1,20 +1,33 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using MiniCover.Model; +using MiniCover.Core.Hits; +using MiniCover.Core.Model; namespace MiniCover.Reports.Helpers { public class SummaryFactory : ISummaryFactory { + private readonly IHitsReader _hitsReader; + + public SummaryFactory(IHitsReader hitsReader) + { + _hitsReader = hitsReader; + } + public Summary CalculateSummary( InstrumentationResult result, float threshold) { - return CalculateSummaryStatic(result, threshold); + var hitsInfo = _hitsReader.TryReadFromDirectory(result.HitsPath); + + return CalculateFilesSummary( + result.GetSourceFiles(), + hitsInfo, + threshold); } - public static List GetSummaryGrid( + public List GetSummaryGrid( SourceFile[] sourceFiles, HitsInfo hitsInfo, float threshold) @@ -56,7 +69,7 @@ void AddRowsRecursive( var groupSourceFiles = group.Select(x => x.sourceFile).ToArray(); var name = groupSourceFiles.Length == 1 - ? string.Join(Path.DirectorySeparatorChar, group.First().parts.Skip(level - 1)) + ? string.Join(Path.DirectorySeparatorChar.ToString(), group.First().parts.Skip(level - 1)) : group.Key; var row = new SummaryRow @@ -82,19 +95,7 @@ void AddRowsRecursive( } } - public static Summary CalculateSummaryStatic( - InstrumentationResult result, - float threshold) - { - var hitsInfo = HitsInfo.TryReadFromDirectory(result.HitsPath); - - return CalculateFilesSummary( - result.GetSourceFiles(), - hitsInfo, - threshold); - } - - public static Summary CalculateFilesSummary( + public Summary CalculateFilesSummary( IEnumerable sourceFiles, HitsInfo hitsInfo, float threshold) diff --git a/src/MiniCover/Reports/Helpers/SummaryRow.cs b/src/MiniCover.Reports/Helpers/SummaryRow.cs similarity index 92% rename from src/MiniCover/Reports/Helpers/SummaryRow.cs rename to src/MiniCover.Reports/Helpers/SummaryRow.cs index 3cef8997f4..d62d01b38b 100644 --- a/src/MiniCover/Reports/Helpers/SummaryRow.cs +++ b/src/MiniCover.Reports/Helpers/SummaryRow.cs @@ -1,4 +1,4 @@ -using MiniCover.Model; +using MiniCover.Core.Model; namespace MiniCover.Reports.Helpers { diff --git a/src/MiniCover/Reports/Html/HtmlReport.cs b/src/MiniCover.Reports/Html/HtmlReport.cs similarity index 87% rename from src/MiniCover/Reports/Html/HtmlReport.cs rename to src/MiniCover.Reports/Html/HtmlReport.cs index f93a511123..08e35100be 100644 --- a/src/MiniCover/Reports/Html/HtmlReport.cs +++ b/src/MiniCover.Reports/Html/HtmlReport.cs @@ -4,19 +4,34 @@ using System.IO.Abstractions; using System.Linq; using System.Text.RegularExpressions; -using MiniCover.Model; +using MiniCover.Core.Hits; +using MiniCover.Core.Model; using MiniCover.Reports.Helpers; -using MiniCover.Utils; +using MiniCover.Reports.Utils; namespace MiniCover.Reports.Html { public class HtmlReport : IHtmlReport { + private readonly IHitsReader _hitsReader; + private readonly ISummaryFactory _summaryFactory; + private readonly IHtmlSourceFileReport _htmlSourceFileReport; + + public HtmlReport( + IHitsReader hitsReader, + ISummaryFactory summaryFactory, + IHtmlSourceFileReport htmlSourceFileReport) + { + _hitsReader = hitsReader; + _summaryFactory = summaryFactory; + _htmlSourceFileReport = htmlSourceFileReport; + } + public virtual int Execute(InstrumentationResult result, IDirectoryInfo output, float threshold, bool noFail) { Directory.CreateDirectory(output.FullName); - var hitsInfo = HitsInfo.TryReadFromDirectory(result.HitsPath); + var hitsInfo = _hitsReader.TryReadFromDirectory(result.HitsPath); var fileName = Path.Combine(output.FullName, "index.html"); @@ -75,7 +90,7 @@ public virtual int Execute(InstrumentationResult result, IDirectoryInfo output, htmlWriter.WriteLine("% Branches"); htmlWriter.WriteLine(""); - foreach (var summaryRow in SummaryFactory.GetSummaryGrid(result.GetSourceFiles(), hitsInfo, threshold)) + foreach (var summaryRow in _summaryFactory.GetSummaryGrid(result.GetSourceFiles(), hitsInfo, threshold)) { var summary = summaryRow.Summary; @@ -118,8 +133,7 @@ public virtual int Execute(InstrumentationResult result, IDirectoryInfo output, { var relativeFileName = GetHtmlFileName(output, summaryRow.SourceFiles[0].Path); - new HtmlSourceFileReport() - .Generate(result, summaryRow.SourceFiles.First(), hitsInfo, threshold, relativeFileName); + _htmlSourceFileReport.Generate(result, summaryRow.SourceFiles.First(), hitsInfo, threshold, relativeFileName); } } diff --git a/src/MiniCover/Reports/Html/HtmlSourceFileReport.cs b/src/MiniCover.Reports/Html/HtmlSourceFileReport.cs similarity index 95% rename from src/MiniCover/Reports/Html/HtmlSourceFileReport.cs rename to src/MiniCover.Reports/Html/HtmlSourceFileReport.cs index a17f1c5eff..e8ba5f1afe 100644 --- a/src/MiniCover/Reports/Html/HtmlSourceFileReport.cs +++ b/src/MiniCover.Reports/Html/HtmlSourceFileReport.cs @@ -3,14 +3,22 @@ using System.IO; using System.Linq; using System.Net; -using MiniCover.Model; +using MiniCover.Core.Hits; +using MiniCover.Core.Model; using MiniCover.Reports.Helpers; -using MiniCover.Utils; +using MiniCover.Reports.Utils; namespace MiniCover.Reports.Html { - public class HtmlSourceFileReport + public class HtmlSourceFileReport : IHtmlSourceFileReport { + private readonly ISummaryFactory _summaryFactory; + + public HtmlSourceFileReport(ISummaryFactory summaryFactory) + { + _summaryFactory = summaryFactory; + } + public void Generate( InstrumentationResult result, SourceFile sourceFile, @@ -22,7 +30,7 @@ public void Generate( Directory.CreateDirectory(Path.GetDirectoryName(outputFile)); - var summary = SummaryFactory.CalculateFilesSummary(new[] { sourceFile }, hitsInfo, threshold); + var summary = _summaryFactory.CalculateFilesSummary(new[] { sourceFile }, hitsInfo, threshold); var lineCoverageClass = summary.LinesCoveragePass ? "green" : "red"; var statementsCoverageClass = summary.StatementsCoveragePass ? "green" : "red"; diff --git a/src/MiniCover/Reports/Html/IHtmlReport.cs b/src/MiniCover.Reports/Html/IHtmlReport.cs similarity index 88% rename from src/MiniCover/Reports/Html/IHtmlReport.cs rename to src/MiniCover.Reports/Html/IHtmlReport.cs index 15c92d3d50..38448f8a5e 100644 --- a/src/MiniCover/Reports/Html/IHtmlReport.cs +++ b/src/MiniCover.Reports/Html/IHtmlReport.cs @@ -1,5 +1,5 @@ using System.IO.Abstractions; -using MiniCover.Model; +using MiniCover.Core.Model; namespace MiniCover.Reports.Html { diff --git a/src/MiniCover.Reports/Html/IHtmlSourceFileReport.cs b/src/MiniCover.Reports/Html/IHtmlSourceFileReport.cs new file mode 100644 index 0000000000..438be91e32 --- /dev/null +++ b/src/MiniCover.Reports/Html/IHtmlSourceFileReport.cs @@ -0,0 +1,10 @@ +using MiniCover.Core.Hits; +using MiniCover.Core.Model; + +namespace MiniCover.Reports.Html +{ + public interface IHtmlSourceFileReport + { + void Generate(InstrumentationResult result, SourceFile sourceFile, HitsInfo hitsInfo, float threshold, string outputFile); + } +} \ No newline at end of file diff --git a/src/MiniCover/Reports/Html/Shared.css b/src/MiniCover.Reports/Html/Shared.css similarity index 100% rename from src/MiniCover/Reports/Html/Shared.css rename to src/MiniCover.Reports/Html/Shared.css diff --git a/src/MiniCover/Reports/Html/Shared.js b/src/MiniCover.Reports/Html/Shared.js similarity index 100% rename from src/MiniCover/Reports/Html/Shared.js rename to src/MiniCover.Reports/Html/Shared.js diff --git a/src/MiniCover/Reports/Html/SourceFile.css b/src/MiniCover.Reports/Html/SourceFile.css similarity index 100% rename from src/MiniCover/Reports/Html/SourceFile.css rename to src/MiniCover.Reports/Html/SourceFile.css diff --git a/src/MiniCover/Reports/Html/Summary.css b/src/MiniCover.Reports/Html/Summary.css similarity index 100% rename from src/MiniCover/Reports/Html/Summary.css rename to src/MiniCover.Reports/Html/Summary.css diff --git a/src/MiniCover.Reports/MiniCover.Reports.csproj b/src/MiniCover.Reports/MiniCover.Reports.csproj new file mode 100644 index 0000000000..f121b7bfcd --- /dev/null +++ b/src/MiniCover.Reports/MiniCover.Reports.csproj @@ -0,0 +1,48 @@ + + + + netstandard2.0 + + + + Lucas Lorentz + Minicover reports implementation + https://github.com/lucaslorentz/minicover + coverage,cover,minicover + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/MiniCover/Reports/NCover/INCoverReport.cs b/src/MiniCover.Reports/NCover/INCoverReport.cs similarity index 87% rename from src/MiniCover/Reports/NCover/INCoverReport.cs rename to src/MiniCover.Reports/NCover/INCoverReport.cs index e5c2776606..bbb6b37ccf 100644 --- a/src/MiniCover/Reports/NCover/INCoverReport.cs +++ b/src/MiniCover.Reports/NCover/INCoverReport.cs @@ -1,5 +1,5 @@ using System.IO.Abstractions; -using MiniCover.Model; +using MiniCover.Core.Model; namespace MiniCover.Reports.NCover { diff --git a/src/MiniCover/Reports/NCover/NCoverReport.cs b/src/MiniCover.Reports/NCover/NCoverReport.cs similarity index 92% rename from src/MiniCover/Reports/NCover/NCoverReport.cs rename to src/MiniCover.Reports/NCover/NCoverReport.cs index c35d5f0226..669f369b42 100644 --- a/src/MiniCover/Reports/NCover/NCoverReport.cs +++ b/src/MiniCover.Reports/NCover/NCoverReport.cs @@ -3,15 +3,23 @@ using System.IO.Abstractions; using System.Linq; using System.Xml.Linq; -using MiniCover.Model; +using MiniCover.Core.Hits; +using MiniCover.Core.Model; namespace MiniCover.Reports.NCover { public class NCoverReport : INCoverReport { + private readonly IHitsReader _hitsReader; + + public NCoverReport(IHitsReader hitsReader) + { + _hitsReader = hitsReader; + } + public void Execute(InstrumentationResult result, IFileInfo output) { - var hits = HitsInfo.TryReadFromDirectory(result.HitsPath); + var hits = _hitsReader.TryReadFromDirectory(result.HitsPath); var data = new XProcessingInstruction("xml-stylesheet", "type='text/xsl' href='coverage.xsl'"); diff --git a/src/MiniCover/Reports/OpenCover/IOpenCoverReport.cs b/src/MiniCover.Reports/OpenCover/IOpenCoverReport.cs similarity index 87% rename from src/MiniCover/Reports/OpenCover/IOpenCoverReport.cs rename to src/MiniCover.Reports/OpenCover/IOpenCoverReport.cs index d8eac4f6a4..78f795a8e1 100644 --- a/src/MiniCover/Reports/OpenCover/IOpenCoverReport.cs +++ b/src/MiniCover.Reports/OpenCover/IOpenCoverReport.cs @@ -1,5 +1,5 @@ using System.IO.Abstractions; -using MiniCover.Model; +using MiniCover.Core.Model; namespace MiniCover.Reports.OpenCover { diff --git a/src/MiniCover/Reports/OpenCover/OpenCoverReport.cs b/src/MiniCover.Reports/OpenCover/OpenCoverReport.cs similarity index 95% rename from src/MiniCover/Reports/OpenCover/OpenCoverReport.cs rename to src/MiniCover.Reports/OpenCover/OpenCoverReport.cs index 8ba24ffa58..8e11a97b91 100644 --- a/src/MiniCover/Reports/OpenCover/OpenCoverReport.cs +++ b/src/MiniCover.Reports/OpenCover/OpenCoverReport.cs @@ -4,15 +4,23 @@ using System.IO.Abstractions; using System.Linq; using System.Xml.Linq; -using MiniCover.Model; +using MiniCover.Core.Hits; +using MiniCover.Core.Model; namespace MiniCover.Reports.OpenCover { public class OpenCoverReport : IOpenCoverReport { + private readonly IHitsReader _hitsReader; + + public OpenCoverReport(IHitsReader hitsReader) + { + _hitsReader = hitsReader; + } + public void Execute(InstrumentationResult result, IFileInfo output) { - var hits = HitsInfo.TryReadFromDirectory(result.HitsPath); + var hits = _hitsReader.TryReadFromDirectory(result.HitsPath); int fileIndex = 0; int sequencePointMegaCounter = 0; diff --git a/src/MiniCover.Reports/Utils/PathUtils.cs b/src/MiniCover.Reports/Utils/PathUtils.cs new file mode 100644 index 0000000000..c13fe3a898 --- /dev/null +++ b/src/MiniCover.Reports/Utils/PathUtils.cs @@ -0,0 +1,23 @@ +using System; + +namespace MiniCover.Reports.Utils +{ + public static class PathUtils + { + public static string GetRelativePath(string basePath, string fullPath) + { + // Require trailing backslash for path + if (!basePath.EndsWith("\\")) + basePath += "\\"; + + var baseUri = new Uri(basePath); + var fullUri = new Uri(fullPath); + + var relativeUri = baseUri.MakeRelativeUri(fullUri); + + // Uri's use forward slashes so convert back to backward slashes + return relativeUri.ToString().Replace("/", "\\"); + + } + } +} \ No newline at end of file diff --git a/src/MiniCover/Utils/ResourceUtils.cs b/src/MiniCover.Reports/Utils/ResourceUtils.cs similarity index 92% rename from src/MiniCover/Utils/ResourceUtils.cs rename to src/MiniCover.Reports/Utils/ResourceUtils.cs index a0feefd734..9402c6e6ee 100644 --- a/src/MiniCover/Utils/ResourceUtils.cs +++ b/src/MiniCover.Reports/Utils/ResourceUtils.cs @@ -1,6 +1,6 @@ using System.IO; -namespace MiniCover.Utils +namespace MiniCover.Reports.Utils { public static class ResourceUtils { diff --git a/src/MiniCover/CommandLine/Commands/ConsoleReportCommand.cs b/src/MiniCover/CommandLine/Commands/ConsoleReportCommand.cs index a5b2f1f5b5..2e03358e45 100644 --- a/src/MiniCover/CommandLine/Commands/ConsoleReportCommand.cs +++ b/src/MiniCover/CommandLine/Commands/ConsoleReportCommand.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; using MiniCover.CommandLine.Options; -using MiniCover.Reports; +using MiniCover.Reports.Console; namespace MiniCover.CommandLine.Commands { diff --git a/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs b/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs index 18bbf368f1..1ecb5f1986 100644 --- a/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs +++ b/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs @@ -7,9 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using MiniCover.CommandLine; using MiniCover.CommandLine.Options; +using MiniCover.Core.Instrumentation; +using MiniCover.Core.Model; using MiniCover.Exceptions; -using MiniCover.Instrumentation; -using MiniCover.Model; using Newtonsoft.Json; namespace MiniCover.Commands diff --git a/src/MiniCover/CommandLine/Commands/ResetCommand.cs b/src/MiniCover/CommandLine/Commands/ResetCommand.cs index c89e91d0bc..6123858f32 100644 --- a/src/MiniCover/CommandLine/Commands/ResetCommand.cs +++ b/src/MiniCover/CommandLine/Commands/ResetCommand.cs @@ -5,7 +5,8 @@ using Microsoft.Extensions.Logging; using MiniCover.CommandLine; using MiniCover.CommandLine.Options; -using MiniCover.Infrastructure; +using MiniCover.Core.Hits; +using MiniCover.IO; namespace MiniCover.Commands { @@ -13,17 +14,17 @@ class ResetCommand : ICommand { private readonly HitsDirectoryOption _hitsDirectoryOption; - private readonly IOutput _console; + private readonly IHitsResetter _hitResetService; private readonly VerbosityOption _verbosityOption; private readonly WorkingDirectoryOption _workingDirectoryOption; public ResetCommand( - IOutput console, + IHitsResetter hitResetService, VerbosityOption verbosityOption, WorkingDirectoryOption workingDirectoryOption, HitsDirectoryOption hitsDirectoryOption) { - _console = console; + _hitResetService = hitResetService; _verbosityOption = verbosityOption; _workingDirectoryOption = workingDirectoryOption; _hitsDirectoryOption = hitsDirectoryOption; @@ -43,42 +44,9 @@ public Task Execute() { var hitsDirectory = _hitsDirectoryOption.DirectoryInfo; - _console.WriteLine($"Resetting hit directory '{hitsDirectory.FullName}'", LogLevel.Information); - - var hitsFiles = hitsDirectory.Exists - ? hitsDirectory.GetFiles("*.hits") - : new IFileInfo[0]; - - if (!hitsFiles.Any()) - { - _console.WriteLine("Directory is already cleared", LogLevel.Information); - return Task.FromResult(0); - } - - _console.WriteLine($"Found {hitsFiles.Length} files to clear", LogLevel.Information); - - var errorsCount = 0; - foreach (var hitsFile in hitsFiles) - { - try - { - hitsFile.Delete(); - _console.WriteLine($"{hitsFile.FullName} - removed", LogLevel.Trace); - } - catch (Exception e) - { - errorsCount++; - _console.WriteLine($"{hitsFile.FullName} - error: {e.Message}", LogLevel.Error); - } - } - - if (errorsCount != 0) - { - _console.WriteLine($"Reset operation completed with {errorsCount} errors", LogLevel.Error); + if (!_hitResetService.ResetHits(hitsDirectory)) return Task.FromResult(1); - } - _console.WriteLine("Reset operation completed without errors", LogLevel.Information); return Task.FromResult(0); } } diff --git a/src/MiniCover/CommandLine/Commands/UninstrumentCommand.cs b/src/MiniCover/CommandLine/Commands/UninstrumentCommand.cs index 49c40e3112..d3421d10f8 100644 --- a/src/MiniCover/CommandLine/Commands/UninstrumentCommand.cs +++ b/src/MiniCover/CommandLine/Commands/UninstrumentCommand.cs @@ -1,7 +1,7 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using MiniCover.CommandLine; using MiniCover.CommandLine.Options; -using MiniCover.Instrumentation; +using MiniCover.Core.Instrumentation; namespace MiniCover.Commands { diff --git a/src/MiniCover/CommandLine/Options/CoverageLoadedFileOption.cs b/src/MiniCover/CommandLine/Options/CoverageLoadedFileOption.cs index 708925e1b3..c493d639ae 100644 --- a/src/MiniCover/CommandLine/Options/CoverageLoadedFileOption.cs +++ b/src/MiniCover/CommandLine/Options/CoverageLoadedFileOption.cs @@ -1,6 +1,6 @@ using System.IO.Abstractions; +using MiniCover.Core.Model; using MiniCover.Exceptions; -using MiniCover.Model; using Newtonsoft.Json; namespace MiniCover.CommandLine.Options diff --git a/src/MiniCover/CommandLine/Options/ICoverageLoadedFileOption.cs b/src/MiniCover/CommandLine/Options/ICoverageLoadedFileOption.cs index 087952a77d..37eed9fdad 100644 --- a/src/MiniCover/CommandLine/Options/ICoverageLoadedFileOption.cs +++ b/src/MiniCover/CommandLine/Options/ICoverageLoadedFileOption.cs @@ -1,4 +1,4 @@ -using MiniCover.Model; +using MiniCover.Core.Model; namespace MiniCover.CommandLine.Options { diff --git a/src/MiniCover/CommandLine/Options/ThresholdOption.cs b/src/MiniCover/CommandLine/Options/ThresholdOption.cs index dc04c01387..defd5312e6 100644 --- a/src/MiniCover/CommandLine/Options/ThresholdOption.cs +++ b/src/MiniCover/CommandLine/Options/ThresholdOption.cs @@ -2,7 +2,7 @@ namespace MiniCover.CommandLine.Options { - class ThresholdOption : ISingleValueOption, IThresholdOption + public class ThresholdOption : ISingleValueOption, IThresholdOption { private const float _defaultValue = 90; diff --git a/src/MiniCover/CommandLine/Options/VerbosityOption.cs b/src/MiniCover/CommandLine/Options/VerbosityOption.cs index ed7ba2b181..3ba7c2cf28 100644 --- a/src/MiniCover/CommandLine/Options/VerbosityOption.cs +++ b/src/MiniCover/CommandLine/Options/VerbosityOption.cs @@ -1,7 +1,7 @@ using System; using Microsoft.Extensions.Logging; using MiniCover.Exceptions; -using MiniCover.Infrastructure; +using MiniCover.IO; namespace MiniCover.CommandLine.Options { diff --git a/src/MiniCover/Infrastructure/IO/ConsoleOutput.cs b/src/MiniCover/IO/ConsoleOutput.cs similarity index 97% rename from src/MiniCover/Infrastructure/IO/ConsoleOutput.cs rename to src/MiniCover/IO/ConsoleOutput.cs index 0f7bcc2cbd..3ed83c72d7 100644 --- a/src/MiniCover/Infrastructure/IO/ConsoleOutput.cs +++ b/src/MiniCover/IO/ConsoleOutput.cs @@ -2,7 +2,7 @@ using System.IO; using Microsoft.Extensions.Logging; -namespace MiniCover.Infrastructure.Console +namespace MiniCover.IO { public class ConsoleOutput : IOutput { diff --git a/src/MiniCover/Infrastructure/IO/IOutput.cs b/src/MiniCover/IO/IOutput.cs similarity index 86% rename from src/MiniCover/Infrastructure/IO/IOutput.cs rename to src/MiniCover/IO/IOutput.cs index 43e5403c76..0ad2d9a884 100644 --- a/src/MiniCover/Infrastructure/IO/IOutput.cs +++ b/src/MiniCover/IO/IOutput.cs @@ -1,6 +1,6 @@ using Microsoft.Extensions.Logging; -namespace MiniCover.Infrastructure +namespace MiniCover.IO { public interface IOutput { diff --git a/src/MiniCover/Infrastructure/IO/OutputLogger.cs b/src/MiniCover/IO/OutputLogger.cs similarity index 98% rename from src/MiniCover/Infrastructure/IO/OutputLogger.cs rename to src/MiniCover/IO/OutputLogger.cs index 7b8f3d2ddc..2d4812c41d 100644 --- a/src/MiniCover/Infrastructure/IO/OutputLogger.cs +++ b/src/MiniCover/IO/OutputLogger.cs @@ -4,7 +4,7 @@ using Microsoft.Extensions.Logging; using Newtonsoft.Json; -namespace MiniCover.Infrastructure.Console +namespace MiniCover.IO { public class OutputLogger : ILogger { diff --git a/src/MiniCover/Infrastructure/IO/OutputLoggerProvider.cs b/src/MiniCover/IO/OutputLoggerProvider.cs similarity index 91% rename from src/MiniCover/Infrastructure/IO/OutputLoggerProvider.cs rename to src/MiniCover/IO/OutputLoggerProvider.cs index 86637833b9..09bfda0fb0 100644 --- a/src/MiniCover/Infrastructure/IO/OutputLoggerProvider.cs +++ b/src/MiniCover/IO/OutputLoggerProvider.cs @@ -1,6 +1,6 @@ using Microsoft.Extensions.Logging; -namespace MiniCover.Infrastructure.Console +namespace MiniCover.IO { public class OutputLoggerProvider : ILoggerProvider { diff --git a/src/MiniCover/Infrastructure/Verbosity.cs b/src/MiniCover/Infrastructure/Verbosity.cs deleted file mode 100644 index 4c3e50dcb3..0000000000 --- a/src/MiniCover/Infrastructure/Verbosity.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -namespace MiniCover.Infrastructure -{ - public enum Verbosity - { - Quiet, - Minimal, - Normal, - Detailed, - Diagnostic - } -} diff --git a/src/MiniCover/MiniCover.csproj b/src/MiniCover/MiniCover.csproj index 5926ccf31f..c83ad546ba 100644 --- a/src/MiniCover/MiniCover.csproj +++ b/src/MiniCover/MiniCover.csproj @@ -5,7 +5,6 @@ net5.0;netcoreapp3.1;netcoreapp3.0;netcoreapp2.2;netcoreapp2.1 true minicover - ../../nupkg @@ -23,6 +22,7 @@ instrument --workdir ../../../../../ false + @@ -30,41 +30,17 @@ - + - + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/src/MiniCover/Model/InstrumentationResult.cs b/src/MiniCover/Model/InstrumentationResult.cs deleted file mode 100644 index 1d24790b1f..0000000000 --- a/src/MiniCover/Model/InstrumentationResult.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Newtonsoft.Json; - -namespace MiniCover.Model -{ - public class InstrumentationResult - { - [JsonProperty(Order = -2)] - public string SourcePath { get; set; } - - [JsonProperty(Order = -2)] - public string HitsPath { get; set; } - - public HashSet ExtraAssemblies = new HashSet(); - - public List Assemblies = new List(); - - public void AddInstrumentedAssembly(InstrumentedAssembly instrumentedAssembly) - { - Assemblies.Add(instrumentedAssembly); - } - - public void AddExtraAssembly(string file) - { - ExtraAssemblies.Add(file); - } - - public SourceFile[] GetSourceFiles() - { - return Assemblies - .SelectMany(a => a.SourceFiles) - .GroupBy(sf => sf.Path) - .Select(g => SourceFile.Merge(g)) - .ToArray(); - } - } -} diff --git a/src/MiniCover/Model/InstrumentedMethod.cs b/src/MiniCover/Model/InstrumentedMethod.cs deleted file mode 100644 index 13b7240c82..0000000000 --- a/src/MiniCover/Model/InstrumentedMethod.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace MiniCover.Model -{ - public class InstrumentedMethod : IEquatable - { - public string Class { get; set; } - public string Name { get; set; } - public string FullName { get; set; } - - public override bool Equals(object obj) - { - return Equals(obj as InstrumentedMethod); - } - - public bool Equals(InstrumentedMethod other) - { - return other != null && - Class == other.Class && - Name == other.Name && - FullName == other.FullName; - } - - public override int GetHashCode() - { - return HashCode.Combine(Class, Name, FullName); - } - - public static bool operator ==(InstrumentedMethod left, InstrumentedMethod right) - { - return EqualityComparer.Default.Equals(left, right); - } - - public static bool operator !=(InstrumentedMethod left, InstrumentedMethod right) - { - return !(left == right); - } - } -} diff --git a/src/MiniCover/Program.cs b/src/MiniCover/Program.cs index de84f5d8ef..8cd0817f75 100644 --- a/src/MiniCover/Program.cs +++ b/src/MiniCover/Program.cs @@ -10,20 +10,20 @@ using MiniCover.CommandLine.Commands; using MiniCover.CommandLine.Options; using MiniCover.Commands; +using MiniCover.Core.FileSystem; +using MiniCover.Core.Hits; +using MiniCover.Core.Instrumentation; +using MiniCover.Core.Utils; using MiniCover.Exceptions; -using MiniCover.Infrastructure; -using MiniCover.Infrastructure.Console; -using MiniCover.Infrastructure.FileSystem; -using MiniCover.Instrumentation; -using MiniCover.Reports; +using MiniCover.IO; using MiniCover.Reports.Clover; using MiniCover.Reports.Cobertura; +using MiniCover.Reports.Console; using MiniCover.Reports.Coveralls; using MiniCover.Reports.Helpers; using MiniCover.Reports.Html; using MiniCover.Reports.NCover; using MiniCover.Reports.OpenCover; -using MiniCover.Utils; namespace MiniCover { @@ -169,24 +169,28 @@ private static IServiceProvider ConfigureServices(IOutput output) services.AddTransient(); services.AddTransient(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); return services.BuildServiceProvider(); } diff --git a/src/MiniCover/Properties/AssemblyInfo.cs b/src/MiniCover/Properties/AssemblyInfo.cs deleted file mode 100644 index 26195f554b..0000000000 --- a/src/MiniCover/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("MiniCover.UnitTests")] \ No newline at end of file diff --git a/src/MiniCover/Properties/InternalVisibility.cs b/src/MiniCover/Properties/InternalVisibility.cs deleted file mode 100644 index 7df6104aee..0000000000 --- a/src/MiniCover/Properties/InternalVisibility.cs +++ /dev/null @@ -1,3 +0,0 @@ -using System.Runtime.CompilerServices; - -[assembly:InternalsVisibleTo("MiniCover.UnitTests")] diff --git a/src/MiniCover/Reports/Helpers/ISummaryFactory.cs b/src/MiniCover/Reports/Helpers/ISummaryFactory.cs deleted file mode 100644 index ee9231183b..0000000000 --- a/src/MiniCover/Reports/Helpers/ISummaryFactory.cs +++ /dev/null @@ -1,9 +0,0 @@ -using MiniCover.Model; - -namespace MiniCover.Reports.Helpers -{ - public interface ISummaryFactory - { - Summary CalculateSummary(InstrumentationResult result, float threshold); - } -} \ No newline at end of file diff --git a/tests/MiniCover.UnitTests/Extensions/GraphNodeExtensionsTests.cs b/tests/MiniCover.Core.UnitTests/Extensions/GraphNodeExtensionsTests.cs similarity index 98% rename from tests/MiniCover.UnitTests/Extensions/GraphNodeExtensionsTests.cs rename to tests/MiniCover.Core.UnitTests/Extensions/GraphNodeExtensionsTests.cs index 76e9712980..4da5aaa86b 100644 --- a/tests/MiniCover.UnitTests/Extensions/GraphNodeExtensionsTests.cs +++ b/tests/MiniCover.Core.UnitTests/Extensions/GraphNodeExtensionsTests.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using System.Text; using FluentAssertions; -using MiniCover.Extensions; -using MiniCover.Model; +using MiniCover.Core.Extensions; +using MiniCover.Core.Model; using Xunit; namespace MiniCover.UnitTests.Extensions diff --git a/tests/MiniCover.UnitTests/HitServices/HitsInfoTests.cs b/tests/MiniCover.Core.UnitTests/Hits/HitsInfoTests.cs similarity index 99% rename from tests/MiniCover.UnitTests/HitServices/HitsInfoTests.cs rename to tests/MiniCover.Core.UnitTests/Hits/HitsInfoTests.cs index 09d5d4302d..914fdcd358 100644 --- a/tests/MiniCover.UnitTests/HitServices/HitsInfoTests.cs +++ b/tests/MiniCover.Core.UnitTests/Hits/HitsInfoTests.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Linq; using FluentAssertions; +using MiniCover.Core.Hits; using MiniCover.HitServices; using Xunit; diff --git a/tests/MiniCover.UnitTests/Instrumentation/AsyncMethod.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/AsyncMethod.cs similarity index 71% rename from tests/MiniCover.UnitTests/Instrumentation/AsyncMethod.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/AsyncMethod.cs index 3264625c5b..fe37eb78ad 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/AsyncMethod.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/AsyncMethod.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Threading.Tasks; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class AsyncMethod : BaseTest { @@ -33,24 +33,24 @@ public override void FunctionalTest() { .method public System.Threading.Tasks.Task`1 Method { - .locals init (MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0 V_0) - IL_0000: newobj System.Void MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::.ctor() + .locals init (MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0 V_0) + IL_0000: newobj System.Void MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::.ctor() IL_0005: stloc.0 IL_0006: ldloc.0 IL_0007: call System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::Create() - IL_000c: stfld System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder + IL_000c: stfld System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder IL_0011: ldloc.0 IL_0012: ldarg.0 // this - IL_0013: stfld MiniCover.UnitTests.Instrumentation.AsyncMethod/Class MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>4__this + IL_0013: stfld MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>4__this IL_0018: ldloc.0 IL_0019: ldc.i4.m1 - IL_001a: stfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state + IL_001a: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state IL_001f: ldloc.0 - IL_0020: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder + IL_0020: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder IL_0025: ldloca.s V_0 - IL_0027: call System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::Startd__0>(!!0&) + IL_0027: call System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::Startd__0>(!!0&) IL_002c: ldloc.0 - IL_002d: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder + IL_002d: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder IL_0032: call System.Threading.Tasks.Task`1 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::get_Task() IL_0037: ret } @@ -74,10 +74,10 @@ .method public System.Void .ctor } .method System.Void MoveNext { - .locals init (System.Int32 V_0, System.Int32 V_1, System.Runtime.CompilerServices.TaskAwaiter V_2, MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0 V_3, System.Int32 V_4, System.Runtime.CompilerServices.TaskAwaiter V_5, System.Exception V_6, MiniCover.HitServices.MethodScope V_7) + .locals init (System.Int32 V_0, System.Int32 V_1, System.Runtime.CompilerServices.TaskAwaiter V_2, MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0 V_3, System.Int32 V_4, System.Runtime.CompilerServices.TaskAwaiter V_5, System.Exception V_6, MiniCover.HitServices.MethodScope V_7) IL_0000: ldstr ""/tmp"" - IL_0005: ldstr ""MiniCover.UnitTests"" - IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.AsyncMethod/Class"" + IL_0005: ldstr ""MiniCover.Core.UnitTests"" + IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.s V_7 @@ -85,7 +85,7 @@ .locals init (System.Int32 V_0, System.Int32 V_1, System.Runtime.CompilerService .try { IL_001c: ldarg.0 // this - IL_001d: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state + IL_001d: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state IL_0022: stloc.0 .try { @@ -104,7 +104,7 @@ .locals init (System.Int32 V_0, System.Int32 V_1, System.Runtime.CompilerService IL_0039: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_003e: ldarg.0 // this IL_003f: ldc.i4.0 - IL_0040: stfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 + IL_0040: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 IL_0045: ldloc.s V_7 IL_0047: ldc.i4.2 IL_0048: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) @@ -119,30 +119,30 @@ .locals init (System.Int32 V_0, System.Int32 V_1, System.Runtime.CompilerService IL_0063: ldc.i4.0 IL_0064: dup IL_0065: stloc.0 - IL_0066: stfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state + IL_0066: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state IL_006b: ldarg.0 // this IL_006c: ldloc.2 - IL_006d: stfld System.Runtime.CompilerServices.TaskAwaiter MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 + IL_006d: stfld System.Runtime.CompilerServices.TaskAwaiter MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 IL_0072: ldarg.0 // this IL_0073: stloc.3 IL_0074: ldarg.0 // this - IL_0075: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder + IL_0075: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder IL_007a: ldloca.s V_2 IL_007c: ldloca.s V_3 - IL_007e: call System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::AwaitUnsafeOnCompletedd__0>(!!0&,!!1&) + IL_007e: call System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::AwaitUnsafeOnCompletedd__0>(!!0&,!!1&) IL_0083: nop IL_0084: leave IL_018c IL_0089: ldarg.0 // this - IL_008a: ldfld System.Runtime.CompilerServices.TaskAwaiter MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 + IL_008a: ldfld System.Runtime.CompilerServices.TaskAwaiter MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 IL_008f: stloc.2 IL_0090: ldarg.0 // this - IL_0091: ldflda System.Runtime.CompilerServices.TaskAwaiter MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 + IL_0091: ldflda System.Runtime.CompilerServices.TaskAwaiter MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 IL_0096: initobj System.Runtime.CompilerServices.TaskAwaiter IL_009c: ldarg.0 // this IL_009d: ldc.i4.m1 IL_009e: dup IL_009f: stloc.0 - IL_00a0: stfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state + IL_00a0: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state IL_00a5: ldloca.s V_2 IL_00a7: call System.Void System.Runtime.CompilerServices.TaskAwaiter::GetResult() IL_00ac: nop @@ -150,13 +150,13 @@ .locals init (System.Int32 V_0, System.Int32 V_1, System.Runtime.CompilerService IL_00af: ldc.i4.3 IL_00b0: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_00b5: ldarg.0 // this - IL_00b6: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 + IL_00b6: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 IL_00bb: stloc.s V_4 IL_00bd: ldarg.0 // this IL_00be: ldloc.s V_4 IL_00c0: ldc.i4.1 IL_00c1: add - IL_00c2: stfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 + IL_00c2: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 IL_00c7: ldloc.s V_7 IL_00c9: ldc.i4.4 IL_00ca: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) @@ -171,30 +171,30 @@ .locals init (System.Int32 V_0, System.Int32 V_1, System.Runtime.CompilerService IL_00e6: ldc.i4.1 IL_00e7: dup IL_00e8: stloc.0 - IL_00e9: stfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state + IL_00e9: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state IL_00ee: ldarg.0 // this IL_00ef: ldloc.s V_5 - IL_00f1: stfld System.Runtime.CompilerServices.TaskAwaiter MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 + IL_00f1: stfld System.Runtime.CompilerServices.TaskAwaiter MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 IL_00f6: ldarg.0 // this IL_00f7: stloc.3 IL_00f8: ldarg.0 // this - IL_00f9: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder + IL_00f9: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder IL_00fe: ldloca.s V_5 IL_0100: ldloca.s V_3 - IL_0102: call System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::AwaitUnsafeOnCompletedd__0>(!!0&,!!1&) + IL_0102: call System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::AwaitUnsafeOnCompletedd__0>(!!0&,!!1&) IL_0107: nop IL_0108: leave IL_018c IL_010d: ldarg.0 // this - IL_010e: ldfld System.Runtime.CompilerServices.TaskAwaiter MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 + IL_010e: ldfld System.Runtime.CompilerServices.TaskAwaiter MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 IL_0113: stloc.s V_5 IL_0115: ldarg.0 // this - IL_0116: ldflda System.Runtime.CompilerServices.TaskAwaiter MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 + IL_0116: ldflda System.Runtime.CompilerServices.TaskAwaiter MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>u__1 IL_011b: initobj System.Runtime.CompilerServices.TaskAwaiter IL_0121: ldarg.0 // this IL_0122: ldc.i4.m1 IL_0123: dup IL_0124: stloc.0 - IL_0125: stfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state + IL_0125: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state IL_012a: ldloca.s V_5 IL_012c: call System.Void System.Runtime.CompilerServices.TaskAwaiter::GetResult() IL_0131: nop @@ -202,18 +202,18 @@ .locals init (System.Int32 V_0, System.Int32 V_1, System.Runtime.CompilerService IL_0134: ldc.i4.5 IL_0135: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_013a: ldarg.0 // this - IL_013b: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 + IL_013b: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 IL_0140: stloc.s V_4 IL_0142: ldarg.0 // this IL_0143: ldloc.s V_4 IL_0145: ldc.i4.1 IL_0146: add - IL_0147: stfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 + IL_0147: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 IL_014c: ldloc.s V_7 IL_014e: ldc.i4.6 IL_014f: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_0154: ldarg.0 // this - IL_0155: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 + IL_0155: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::5__1 IL_015a: stloc.1 IL_015b: leave.s IL_0177 } @@ -222,9 +222,9 @@ .locals init (System.Int32 V_0, System.Int32 V_1, System.Runtime.CompilerService IL_015d: stloc.s V_6 IL_015f: ldarg.0 // this IL_0160: ldc.i4.s -2 - IL_0162: stfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state + IL_0162: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state IL_0167: ldarg.0 // this - IL_0168: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder + IL_0168: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder IL_016d: ldloc.s V_6 IL_016f: call System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::SetException(System.Exception) IL_0174: nop @@ -232,9 +232,9 @@ .locals init (System.Int32 V_0, System.Int32 V_1, System.Runtime.CompilerService } IL_0177: ldarg.0 // this IL_0178: ldc.i4.s -2 - IL_017a: stfld System.Int32 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state + IL_017a: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>1__state IL_017f: ldarg.0 // this - IL_0180: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder + IL_0180: ldflda System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class/d__0::<>t__builder IL_0185: ldloc.1 IL_0186: call System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::SetResult(!0) IL_018b: nop @@ -278,9 +278,9 @@ .method System.Void SetStateMachine HitId = 1, Instruction = "IL_001a: ldarg ", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.AsyncMethod/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class", Name = "Method", - FullName = "System.Threading.Tasks.Task`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class::Method()", + FullName = "System.Threading.Tasks.Task`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class::Method()", }, StartColumn = 17, StartLine = 14 @@ -293,9 +293,9 @@ .method System.Void SetStateMachine HitId = 2, Instruction = "IL_0021: ldc.i4 5", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.AsyncMethod/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class", Name = "Method", - FullName = "System.Threading.Tasks.Task`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class::Method()", + FullName = "System.Threading.Tasks.Task`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class::Method()", }, StartColumn = 17, StartLine = 15 @@ -308,9 +308,9 @@ .method System.Void SetStateMachine HitId = 3, Instruction = "IL_0081: ldarg ", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.AsyncMethod/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class", Name = "Method", - FullName = "System.Threading.Tasks.Task`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class::Method()", + FullName = "System.Threading.Tasks.Task`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class::Method()", }, StartColumn = 17, StartLine = 16 @@ -323,9 +323,9 @@ .method System.Void SetStateMachine HitId = 4, Instruction = "IL_0093: ldc.i4 5", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.AsyncMethod/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class", Name = "Method", - FullName = "System.Threading.Tasks.Task`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class::Method()", + FullName = "System.Threading.Tasks.Task`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class::Method()", }, StartColumn = 17, StartLine = 17, @@ -338,9 +338,9 @@ .method System.Void SetStateMachine HitId = 5, Instruction = "IL_00f3: ldarg ", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.AsyncMethod/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class", Name = "Method", - FullName = "System.Threading.Tasks.Task`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class::Method()", + FullName = "System.Threading.Tasks.Task`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class::Method()", }, StartColumn = 17, StartLine = 18 @@ -353,9 +353,9 @@ .method System.Void SetStateMachine HitId = 6, Instruction = "IL_0105: ldarg ", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.AsyncMethod/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class", Name = "Method", - FullName = "System.Threading.Tasks.Task`1 MiniCover.UnitTests.Instrumentation.AsyncMethod/Class::Method()", + FullName = "System.Threading.Tasks.Task`1 MiniCover.Core.UnitTests.Instrumentation.AsyncMethod/Class::Method()", }, StartColumn = 17, StartLine = 19 diff --git a/tests/MiniCover.UnitTests/Instrumentation/BaseTest.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/BaseTest.cs similarity index 96% rename from tests/MiniCover.UnitTests/Instrumentation/BaseTest.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/BaseTest.cs index d698a74efa..96fe69a08d 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/BaseTest.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/BaseTest.cs @@ -3,14 +3,15 @@ using System.Linq; using System.Reflection; using FluentAssertions; +using MiniCover.Core.Model; using MiniCover.HitServices; -using MiniCover.Model; +using MiniCover.TestHelpers; using MiniCover.UnitTests.TestHelpers; using Mono.Cecil; using Mono.Cecil.Tests; using Xunit; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public abstract class BaseTest { diff --git a/tests/MiniCover.UnitTests/Instrumentation/ConstructorGenericCallThis.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/ConstructorGenericCallThis.cs similarity index 84% rename from tests/MiniCover.UnitTests/Instrumentation/ConstructorGenericCallThis.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/ConstructorGenericCallThis.cs index d4cbe4db43..cd9df7829b 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/ConstructorGenericCallThis.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/ConstructorGenericCallThis.cs @@ -2,7 +2,7 @@ using System.Linq; using FluentAssertions; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class ConstructorGenericCallThis : BaseTest { @@ -36,8 +36,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (MiniCover.HitServices.MethodScope V_0) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.ConstructorGenericCallThis/Class`1"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.ConstructorGenericCallThis/Class`1"" IL_000f: ldstr "".ctor"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.0 @@ -50,7 +50,7 @@ public override void FunctionalTest() IL_0022: ldarg.0 // this IL_0023: ldarg.1 IL_0024: ldc.i4.1 - IL_0025: call System.Void MiniCover.UnitTests.Instrumentation.ConstructorGenericCallThis/Class`1::.ctor(T,System.Boolean) + IL_0025: call System.Void MiniCover.Core.UnitTests.Instrumentation.ConstructorGenericCallThis/Class`1::.ctor(T,System.Boolean) IL_002a: nop IL_002b: nop IL_002c: leave.s IL_0036 diff --git a/tests/MiniCover.UnitTests/Instrumentation/ConstructorWithCallBase.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/ConstructorWithCallBase.cs similarity index 82% rename from tests/MiniCover.UnitTests/Instrumentation/ConstructorWithCallBase.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/ConstructorWithCallBase.cs index f0e5ac047b..18ed3b53b8 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/ConstructorWithCallBase.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/ConstructorWithCallBase.cs @@ -2,7 +2,7 @@ using System.Linq; using FluentAssertions; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class ConstructorWithCallBase : BaseTest { @@ -39,8 +39,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (MiniCover.HitServices.MethodScope V_0) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.ConstructorWithCallBase/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.ConstructorWithCallBase/Class"" IL_000f: ldstr "".ctor"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.0 @@ -52,7 +52,7 @@ public override void FunctionalTest() IL_001d: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_0022: ldarg.0 // this IL_0023: ldarg.1 - IL_0024: call System.Void MiniCover.UnitTests.Instrumentation.ConstructorWithCallBase/BaseClass::.ctor(System.Int32) + IL_0024: call System.Void MiniCover.Core.UnitTests.Instrumentation.ConstructorWithCallBase/BaseClass::.ctor(System.Int32) IL_0029: nop IL_002a: nop IL_002b: ldloc.0 @@ -60,7 +60,7 @@ public override void FunctionalTest() IL_002d: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_0032: ldarg.0 // this IL_0033: ldc.i4.1 - IL_0034: stfld System.Boolean MiniCover.UnitTests.Instrumentation.ConstructorWithCallBase/Class::WasCalled + IL_0034: stfld System.Boolean MiniCover.Core.UnitTests.Instrumentation.ConstructorWithCallBase/Class::WasCalled IL_0039: leave.s IL_0043 } finally diff --git a/tests/MiniCover.UnitTests/Instrumentation/ConstructorWithTryFinally.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/ConstructorWithTryFinally.cs similarity index 85% rename from tests/MiniCover.UnitTests/Instrumentation/ConstructorWithTryFinally.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/ConstructorWithTryFinally.cs index cdcc3ab718..e633d1a1ae 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/ConstructorWithTryFinally.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/ConstructorWithTryFinally.cs @@ -3,7 +3,7 @@ using System.Linq; using FluentAssertions; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class ConstructorWithExistingTryFinally : BaseTest { @@ -45,8 +45,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (MiniCover.HitServices.MethodScope V_0) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.ConstructorWithExistingTryFinally/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.ConstructorWithExistingTryFinally/Class"" IL_000f: ldstr "".ctor"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.0 @@ -70,7 +70,7 @@ public override void FunctionalTest() IL_002d: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_0032: ldarg.0 // this IL_0033: ldc.i4.1 - IL_0034: stfld System.Boolean MiniCover.UnitTests.Instrumentation.ConstructorWithExistingTryFinally/Class::TryWasCalled + IL_0034: stfld System.Boolean MiniCover.Core.UnitTests.Instrumentation.ConstructorWithExistingTryFinally/Class::TryWasCalled IL_0039: ldloc.0 IL_003a: ldc.i4.3 IL_003b: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) @@ -90,7 +90,7 @@ public override void FunctionalTest() IL_0056: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_005b: ldarg.0 // this IL_005c: ldc.i4.1 - IL_005d: stfld System.Boolean MiniCover.UnitTests.Instrumentation.ConstructorWithExistingTryFinally/Class::CatchWasCalled + IL_005d: stfld System.Boolean MiniCover.Core.UnitTests.Instrumentation.ConstructorWithExistingTryFinally/Class::CatchWasCalled IL_0062: nop IL_0063: leave.s IL_0065 } @@ -104,7 +104,7 @@ public override void FunctionalTest() IL_006a: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_006f: ldarg.0 // this IL_0070: ldc.i4.1 - IL_0071: stfld System.Boolean MiniCover.UnitTests.Instrumentation.ConstructorWithExistingTryFinally/Class::FinallyWasCalled + IL_0071: stfld System.Boolean MiniCover.Core.UnitTests.Instrumentation.ConstructorWithExistingTryFinally/Class::FinallyWasCalled IL_0076: nop IL_0077: endfinally } diff --git a/tests/MiniCover.UnitTests/Instrumentation/EnumerableMethod.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/EnumerableMethod.cs similarity index 66% rename from tests/MiniCover.UnitTests/Instrumentation/EnumerableMethod.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/EnumerableMethod.cs index a4430b662a..f0e9708d54 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/EnumerableMethod.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/EnumerableMethod.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Linq; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class EnumerableMethod : BaseTest { @@ -33,13 +33,13 @@ .method public System.Collections.Generic.IEnumerable`1 Method { .locals () IL_0000: ldc.i4.s -2 - IL_0002: newobj System.Void MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::.ctor(System.Int32) + IL_0002: newobj System.Void MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::.ctor(System.Int32) IL_0007: dup IL_0008: ldarg.0 // this - IL_0009: stfld MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>4__this + IL_0009: stfld MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>4__this IL_000e: dup IL_000f: ldarg.1 - IL_0010: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>3__max + IL_0010: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>3__max IL_0015: ret } .method public System.Void .ctor @@ -60,10 +60,10 @@ .method public System.Void .ctor IL_0006: nop IL_0007: ldarg.0 // this IL_0008: ldarg.1 - IL_0009: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state + IL_0009: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state IL_000e: ldarg.0 // this IL_000f: call System.Int32 System.Environment::get_CurrentManagedThreadId() - IL_0014: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>l__initialThreadId + IL_0014: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>l__initialThreadId IL_0019: ret } .method System.Void System.IDisposable.Dispose @@ -75,8 +75,8 @@ .method System.Boolean MoveNext { .locals init (System.Int32 V_0, System.Int32 V_1, System.Boolean V_2, MiniCover.HitServices.MethodScope V_3, System.Boolean V_4) IL_0000: ldstr ""/tmp"" - IL_0005: ldstr ""MiniCover.UnitTests"" - IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class"" + IL_0005: ldstr ""MiniCover.Core.UnitTests"" + IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.3 @@ -84,7 +84,7 @@ .locals init (System.Int32 V_0, System.Int32 V_1, System.Boolean V_2, MiniCover. .try { IL_001b: ldarg.0 // this - IL_001c: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state + IL_001c: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state IL_0021: stloc.0 IL_0022: ldloc.0 IL_0023: brfalse.s IL_002d @@ -100,49 +100,49 @@ .locals init (System.Int32 V_0, System.Int32 V_1, System.Boolean V_2, MiniCover. IL_0034: leave IL_00bb IL_0039: ldarg.0 // this IL_003a: ldc.i4.m1 - IL_003b: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state + IL_003b: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state IL_0040: nop IL_0041: ldloc.3 IL_0042: ldc.i4.1 IL_0043: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_0048: ldarg.0 // this IL_0049: ldc.i4.0 - IL_004a: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::5__1 + IL_004a: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::5__1 IL_004f: br.s IL_008e IL_0051: ldloc.3 IL_0052: ldc.i4.2 IL_0053: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_0058: ldarg.0 // this IL_0059: ldarg.0 // this - IL_005a: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::5__1 - IL_005f: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>2__current + IL_005a: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::5__1 + IL_005f: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>2__current IL_0064: ldarg.0 // this IL_0065: ldc.i4.1 - IL_0066: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state + IL_0066: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state IL_006b: ldc.i4.1 IL_006c: stloc.s V_4 IL_006e: leave.s IL_00bb IL_0070: ldarg.0 // this IL_0071: ldc.i4.m1 - IL_0072: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state + IL_0072: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state IL_0077: ldloc.3 IL_0078: ldc.i4.3 IL_0079: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_007e: ldarg.0 // this - IL_007f: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::5__1 + IL_007f: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::5__1 IL_0084: stloc.1 IL_0085: ldarg.0 // this IL_0086: ldloc.1 IL_0087: ldc.i4.1 IL_0088: add - IL_0089: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::5__1 + IL_0089: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::5__1 IL_008e: ldloc.3 IL_008f: ldc.i4.4 IL_0090: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_0095: ldarg.0 // this - IL_0096: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::5__1 + IL_0096: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::5__1 IL_009b: ldarg.0 // this - IL_009c: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::max + IL_009c: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::max IL_00a1: clt IL_00a3: stloc.2 IL_00a4: ldloc.2 @@ -168,7 +168,7 @@ .method System.Int32 System.Collections.Generic.IEnumerator.get_Cu { .locals () IL_0000: ldarg.0 // this - IL_0001: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>2__current + IL_0001: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>2__current IL_0006: ret } .method System.Void System.Collections.IEnumerator.Reset @@ -181,38 +181,38 @@ .method System.Object System.Collections.IEnumerator.get_Current { .locals () IL_0000: ldarg.0 // this - IL_0001: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>2__current + IL_0001: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>2__current IL_0006: box System.Int32 IL_000b: ret } .method System.Collections.Generic.IEnumerator`1 System.Collections.Generic.IEnumerable.GetEnumerator { - .locals init (MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0 V_0) + .locals init (MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0 V_0) IL_0000: ldarg.0 // this - IL_0001: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state + IL_0001: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state IL_0006: ldc.i4.s -2 IL_0008: bne.un.s IL_0022 IL_000a: ldarg.0 // this - IL_000b: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>l__initialThreadId + IL_000b: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>l__initialThreadId IL_0010: call System.Int32 System.Environment::get_CurrentManagedThreadId() IL_0015: bne.un.s IL_0022 IL_0017: ldarg.0 // this IL_0018: ldc.i4.0 - IL_0019: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state + IL_0019: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>1__state IL_001e: ldarg.0 // this IL_001f: stloc.0 IL_0020: br.s IL_0035 IL_0022: ldc.i4.0 - IL_0023: newobj System.Void MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::.ctor(System.Int32) + IL_0023: newobj System.Void MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::.ctor(System.Int32) IL_0028: stloc.0 IL_0029: ldloc.0 IL_002a: ldarg.0 // this - IL_002b: ldfld MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>4__this - IL_0030: stfld MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>4__this + IL_002b: ldfld MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>4__this + IL_0030: stfld MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>4__this IL_0035: ldloc.0 IL_0036: ldarg.0 // this - IL_0037: ldfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>3__max - IL_003c: stfld System.Int32 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::max + IL_0037: ldfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::<>3__max + IL_003c: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::max IL_0041: ldloc.0 IL_0042: ret } @@ -220,7 +220,7 @@ .method System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumera { .locals () IL_0000: ldarg.0 // this - IL_0001: call System.Collections.Generic.IEnumerator`1 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::System.Collections.Generic.IEnumerable.GetEnumerator() + IL_0001: call System.Collections.Generic.IEnumerator`1 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class/d__0::System.Collections.Generic.IEnumerable.GetEnumerator() IL_0006: ret } } @@ -246,9 +246,9 @@ .method System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumera HitId = 1, Instruction = "IL_0020: ldarg ", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class", Name = "Method", - FullName = "System.Collections.Generic.IEnumerable`1 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class::Method(System.Int32)", + FullName = "System.Collections.Generic.IEnumerable`1 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class::Method(System.Int32)", }, StartColumn = 22, StartLine = 14, @@ -261,9 +261,9 @@ .method System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumera HitId = 2, Instruction = "IL_0029: ldarg ", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class", Name = "Method", - FullName = "System.Collections.Generic.IEnumerable`1 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class::Method(System.Int32)", + FullName = "System.Collections.Generic.IEnumerable`1 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class::Method(System.Int32)", }, StartColumn = 21, StartLine = 15, @@ -276,9 +276,9 @@ .method System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumera HitId = 3, Instruction = "IL_0045: ldarg ", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class", Name = "Method", - FullName = "System.Collections.Generic.IEnumerable`1 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class::Method(System.Int32)", + FullName = "System.Collections.Generic.IEnumerable`1 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class::Method(System.Int32)", }, StartColumn = 42, StartLine = 14, @@ -291,9 +291,9 @@ .method System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumera HitId = 4, Instruction = "IL_0055: ldarg ", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class", Name = "Method", - FullName = "System.Collections.Generic.IEnumerable`1 MiniCover.UnitTests.Instrumentation.EnumerableMethod/Class::Method(System.Int32)", + FullName = "System.Collections.Generic.IEnumerable`1 MiniCover.Core.UnitTests.Instrumentation.EnumerableMethod/Class::Method(System.Int32)", }, StartColumn = 33, StartLine = 14, diff --git a/tests/MiniCover.UnitTests/Instrumentation/ExcludedFromCodeCoverageClass.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/ExcludedFromCodeCoverageClass.cs similarity index 87% rename from tests/MiniCover.UnitTests/Instrumentation/ExcludedFromCodeCoverageClass.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/ExcludedFromCodeCoverageClass.cs index b46539f53d..c5ab056829 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/ExcludedFromCodeCoverageClass.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/ExcludedFromCodeCoverageClass.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class ExcludedFromCodeCoverageClass : BaseTest { @@ -27,8 +27,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Int32 V_0, MiniCover.HitServices.MethodScope V_1, System.Int32 V_2) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.ExcludedFromCodeCoverageClass/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.ExcludedFromCodeCoverageClass/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.1 diff --git a/tests/MiniCover.UnitTests/Instrumentation/ExcludedFromCodeCoverageMethod.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/ExcludedFromCodeCoverageMethod.cs similarity index 87% rename from tests/MiniCover.UnitTests/Instrumentation/ExcludedFromCodeCoverageMethod.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/ExcludedFromCodeCoverageMethod.cs index d24613a4cc..2f65b9c48c 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/ExcludedFromCodeCoverageMethod.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/ExcludedFromCodeCoverageMethod.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class ExcludedFromCodeCoverageMethod : BaseTest { @@ -27,8 +27,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Int32 V_0, MiniCover.HitServices.MethodScope V_1, System.Int32 V_2) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.ExcludedFromCodeCoverageMethod/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.ExcludedFromCodeCoverageMethod/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.1 diff --git a/tests/MiniCover.UnitTests/Instrumentation/FieldInitialization.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/FieldInitialization.cs similarity index 83% rename from tests/MiniCover.UnitTests/Instrumentation/FieldInitialization.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/FieldInitialization.cs index c9771c5a8b..7a4ee0f459 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/FieldInitialization.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/FieldInitialization.cs @@ -2,7 +2,7 @@ using System.Linq; using FluentAssertions; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class FieldInitialization : BaseTest { @@ -23,8 +23,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (MiniCover.HitServices.MethodScope V_0) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.FieldInitialization/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.FieldInitialization/Class"" IL_000f: ldstr "".ctor"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.0 @@ -36,7 +36,7 @@ public override void FunctionalTest() IL_001d: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_0022: ldarg.0 // this IL_0023: ldc.i4.5 - IL_0024: stfld System.Int32 MiniCover.UnitTests.Instrumentation.FieldInitialization/Class::Value + IL_0024: stfld System.Int32 MiniCover.Core.UnitTests.Instrumentation.FieldInitialization/Class::Value IL_0029: ldarg.0 // this IL_002a: call System.Void System.Object::.ctor() IL_002f: nop diff --git a/tests/MiniCover.UnitTests/Instrumentation/For.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/For.cs similarity index 82% rename from tests/MiniCover.UnitTests/Instrumentation/For.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/For.cs index a6dc48cf4c..4266ee6376 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/For.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/For.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class For : BaseTest { @@ -28,8 +28,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Int32 result, System.Int32 i, System.Boolean V_2, System.Int32 V_3, MiniCover.HitServices.MethodScope V_4, System.Int32 V_5) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.For/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.For/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.s V_4 @@ -115,8 +115,8 @@ public override void FunctionalTest() Instruction = "IL_0001: ldc.i4 0", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.For/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.For/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.For/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.For/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 17, @@ -131,8 +131,8 @@ public override void FunctionalTest() Instruction = "IL_0003: ldc.i4 1", Method =new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.For/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.For/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.For/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.For/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 22, @@ -147,8 +147,8 @@ public override void FunctionalTest() Instruction = "IL_0007: ldloc V_0", Method =new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.For/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.For/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.For/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.For/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 21, @@ -163,8 +163,8 @@ public override void FunctionalTest() Instruction = "IL_000b: ldloc V_1", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.For/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.For/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.For/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.For/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 41, @@ -199,8 +199,8 @@ public override void FunctionalTest() Instruction = "IL_000f: ldloc V_1", Method =new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.For/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.For/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.For/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.For/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 33, @@ -215,8 +215,8 @@ public override void FunctionalTest() Instruction = "IL_001a: ldloc V_0", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.For/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.For/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.For/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.For/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 17, diff --git a/tests/MiniCover.UnitTests/Instrumentation/If.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/If.cs similarity index 84% rename from tests/MiniCover.UnitTests/Instrumentation/If.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/If.cs index 130784d939..d7146f8fee 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/If.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/If.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class If : BaseTest { @@ -29,8 +29,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Boolean V_0, System.Boolean V_1, MiniCover.HitServices.MethodScope V_2, System.Boolean V_3) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.If/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.If/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.2 @@ -112,8 +112,8 @@ public override void FunctionalTest() Instruction = "IL_0001: ldarg x", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.If/Class", - FullName = "System.Boolean MiniCover.UnitTests.Instrumentation.If/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.If/Class", + FullName = "System.Boolean MiniCover.Core.UnitTests.Instrumentation.If/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 17, @@ -128,8 +128,8 @@ public override void FunctionalTest() Instruction = "IL_000b: ldc.i4 1", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.If/Class", - FullName = "System.Boolean MiniCover.UnitTests.Instrumentation.If/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.If/Class", + FullName = "System.Boolean MiniCover.Core.UnitTests.Instrumentation.If/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 21, @@ -144,8 +144,8 @@ public override void FunctionalTest() Instruction = "IL_000f: ldc.i4 0", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.If/Class", - FullName = "System.Boolean MiniCover.UnitTests.Instrumentation.If/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.If/Class", + FullName = "System.Boolean MiniCover.Core.UnitTests.Instrumentation.If/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 17, diff --git a/tests/MiniCover.UnitTests/Instrumentation/IfInline.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/IfInline.cs similarity index 89% rename from tests/MiniCover.UnitTests/Instrumentation/IfInline.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/IfInline.cs index f7414e8972..65e23486c3 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/IfInline.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/IfInline.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class IfInline : BaseTest { @@ -28,8 +28,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Boolean V_0, MiniCover.HitServices.MethodScope V_1, System.Boolean V_2) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.IfInline/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.IfInline/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.1 @@ -91,8 +91,8 @@ public override void FunctionalTest() Instruction = "IL_0001: ldarg x", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.IfInline/Class", - FullName = "System.Boolean MiniCover.UnitTests.Instrumentation.IfInline/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.IfInline/Class", + FullName = "System.Boolean MiniCover.Core.UnitTests.Instrumentation.IfInline/Class::Method(System.Int32)", Name = "Method", }, StartColumn = 17, diff --git a/tests/MiniCover.UnitTests/Instrumentation/IfInlineNested.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/IfInlineNested.cs similarity index 91% rename from tests/MiniCover.UnitTests/Instrumentation/IfInlineNested.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/IfInlineNested.cs index d545588e34..52cd43c18c 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/IfInlineNested.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/IfInlineNested.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class IfInlineNested : BaseTest { @@ -31,8 +31,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Boolean V_0, MiniCover.HitServices.MethodScope V_1, System.Boolean V_2) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.IfInlineNested/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.IfInlineNested/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.1 @@ -110,8 +110,8 @@ public override void FunctionalTest() Instruction = "IL_0001: ldarg x", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.IfInlineNested/Class", - FullName = "System.Boolean MiniCover.UnitTests.Instrumentation.IfInlineNested/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.IfInlineNested/Class", + FullName = "System.Boolean MiniCover.Core.UnitTests.Instrumentation.IfInlineNested/Class::Method(System.Int32)", Name = "Method", }, StartColumn = 17, diff --git a/tests/MiniCover.UnitTests/Instrumentation/IfWithAnd.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/IfWithAnd.cs similarity index 87% rename from tests/MiniCover.UnitTests/Instrumentation/IfWithAnd.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/IfWithAnd.cs index 891d6df840..6e70880e10 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/IfWithAnd.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/IfWithAnd.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class IfWithAnd : BaseTest { @@ -29,8 +29,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Boolean V_0, System.Boolean V_1, MiniCover.HitServices.MethodScope V_2, System.Boolean V_3) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.IfWithAnd/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.IfWithAnd/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.2 @@ -147,8 +147,8 @@ public override void FunctionalTest() Instruction = "IL_0001: ldarg x", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.IfWithAnd/Class", - FullName = "System.Boolean MiniCover.UnitTests.Instrumentation.IfWithAnd/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.IfWithAnd/Class", + FullName = "System.Boolean MiniCover.Core.UnitTests.Instrumentation.IfWithAnd/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 17, @@ -163,8 +163,8 @@ public override void FunctionalTest() Instruction = "IL_0013: ldc.i4 1", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.IfWithAnd/Class", - FullName = "System.Boolean MiniCover.UnitTests.Instrumentation.IfWithAnd/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.IfWithAnd/Class", + FullName = "System.Boolean MiniCover.Core.UnitTests.Instrumentation.IfWithAnd/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 21, @@ -179,8 +179,8 @@ public override void FunctionalTest() Instruction = "IL_0017: ldc.i4 0", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.IfWithAnd/Class", - FullName = "System.Boolean MiniCover.UnitTests.Instrumentation.IfWithAnd/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.IfWithAnd/Class", + FullName = "System.Boolean MiniCover.Core.UnitTests.Instrumentation.IfWithAnd/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 17, diff --git a/tests/MiniCover.UnitTests/Instrumentation/Lambda.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/Lambda.cs similarity index 77% rename from tests/MiniCover.UnitTests/Instrumentation/Lambda.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/Lambda.cs index 42bfdc90ca..5cefa3e35e 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/Lambda.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/Lambda.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Linq; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class Lambda : BaseTest { @@ -30,8 +30,8 @@ .method public System.Int32 Method { .locals init (System.Int32 V_0, MiniCover.HitServices.MethodScope V_1, System.Int32 V_2) IL_0000: ldstr ""/tmp"" - IL_0005: ldstr ""MiniCover.UnitTests"" - IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.Lambda/Class"" + IL_0005: ldstr ""MiniCover.Core.UnitTests"" + IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.Lambda/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.1 @@ -43,15 +43,15 @@ .locals init (System.Int32 V_0, MiniCover.HitServices.MethodScope V_1, System.In IL_001d: ldc.i4.1 IL_001e: callvirt System.Void MiniCover.HitServices.MethodScope::Hit(System.Int32) IL_0023: ldarg.1 - IL_0024: ldsfld System.Func`2 MiniCover.UnitTests.Instrumentation.Lambda/Class/<>c::<>9__0_0 + IL_0024: ldsfld System.Func`2 MiniCover.Core.UnitTests.Instrumentation.Lambda/Class/<>c::<>9__0_0 IL_0029: dup IL_002a: brtrue.s IL_0043 IL_002c: pop - IL_002d: ldsfld MiniCover.UnitTests.Instrumentation.Lambda/Class/<>c MiniCover.UnitTests.Instrumentation.Lambda/Class/<>c::<>9 - IL_0032: ldftn System.Int32 MiniCover.UnitTests.Instrumentation.Lambda/Class/<>c::b__0_0(System.Int32) + IL_002d: ldsfld MiniCover.Core.UnitTests.Instrumentation.Lambda/Class/<>c MiniCover.Core.UnitTests.Instrumentation.Lambda/Class/<>c::<>9 + IL_0032: ldftn System.Int32 MiniCover.Core.UnitTests.Instrumentation.Lambda/Class/<>c::b__0_0(System.Int32) IL_0038: newobj System.Void System.Func`2::.ctor(System.Object,System.IntPtr) IL_003d: dup - IL_003e: stsfld System.Func`2 MiniCover.UnitTests.Instrumentation.Lambda/Class/<>c::<>9__0_0 + IL_003e: stsfld System.Func`2 MiniCover.Core.UnitTests.Instrumentation.Lambda/Class/<>c::<>9__0_0 IL_0043: call System.Collections.Generic.IEnumerable`1 System.Linq.Enumerable::Select(System.Collections.Generic.IEnumerable`1,System.Func`2) IL_0048: call System.Int32 System.Linq.Enumerable::Sum(System.Collections.Generic.IEnumerable`1) IL_004d: stloc.0 @@ -83,8 +83,8 @@ .method public System.Void .ctor .method static System.Void .cctor { .locals () - IL_0000: newobj System.Void MiniCover.UnitTests.Instrumentation.Lambda/Class/<>c::.ctor() - IL_0005: stsfld MiniCover.UnitTests.Instrumentation.Lambda/Class/<>c MiniCover.UnitTests.Instrumentation.Lambda/Class/<>c::<>9 + IL_0000: newobj System.Void MiniCover.Core.UnitTests.Instrumentation.Lambda/Class/<>c::.ctor() + IL_0005: stsfld MiniCover.Core.UnitTests.Instrumentation.Lambda/Class/<>c MiniCover.Core.UnitTests.Instrumentation.Lambda/Class/<>c::<>9 IL_000a: ret } .method public System.Void .ctor @@ -99,8 +99,8 @@ .method System.Int32 b__0_0 { .locals init (MiniCover.HitServices.MethodScope V_0, System.Int32 V_1) IL_0000: ldstr ""/tmp"" - IL_0005: ldstr ""MiniCover.UnitTests"" - IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.Lambda/Class"" + IL_0005: ldstr ""MiniCover.Core.UnitTests"" + IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.Lambda/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.0 @@ -145,9 +145,9 @@ .locals init (MiniCover.HitServices.MethodScope V_0, System.Int32 V_1) HitId = 1, Instruction = "IL_0001: ldarg values", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.Lambda/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.Lambda/Class", Name = "Method", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.Lambda/Class::Method(System.Int32[])", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.Lambda/Class::Method(System.Int32[])", }, StartColumn = 17, StartLine = 14, @@ -160,9 +160,9 @@ .locals init (MiniCover.HitServices.MethodScope V_0, System.Int32 V_1) HitId = 2, Instruction = "IL_0000: ldarg a", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.Lambda/Class", + Class = "MiniCover.Core.UnitTests.Instrumentation.Lambda/Class", Name = "Method", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.Lambda/Class::Method(System.Int32[])", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.Lambda/Class::Method(System.Int32[])", }, StartColumn = 43, StartLine = 14 diff --git a/tests/MiniCover.UnitTests/Instrumentation/LongMethod.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/LongMethod.cs similarity index 99% rename from tests/MiniCover.UnitTests/Instrumentation/LongMethod.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/LongMethod.cs index 6044af7fa1..89a1db4687 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/LongMethod.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/LongMethod.cs @@ -1,4 +1,4 @@ -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class LongMethod : BaseTest { diff --git a/tests/MiniCover.UnitTests/Instrumentation/Or.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/Or.cs similarity index 83% rename from tests/MiniCover.UnitTests/Instrumentation/Or.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/Or.cs index fe9ec204c2..a8ef2e3176 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/Or.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/Or.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class Or : BaseTest { @@ -26,8 +26,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Boolean V_0, MiniCover.HitServices.MethodScope V_1, System.Boolean V_2) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.Or/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.Or/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.1 @@ -74,8 +74,8 @@ public override void FunctionalTest() Instruction = "IL_0001: ldarg x", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.Or/Class", - FullName = "System.Boolean MiniCover.UnitTests.Instrumentation.Or/Class::Method(System.Boolean,System.Boolean)", + Class = "MiniCover.Core.UnitTests.Instrumentation.Or/Class", + FullName = "System.Boolean MiniCover.Core.UnitTests.Instrumentation.Or/Class::Method(System.Boolean,System.Boolean)", Name = "Method" }, StartColumn = 17, diff --git a/tests/MiniCover.UnitTests/Instrumentation/OrWithEquals.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/OrWithEquals.cs similarity index 89% rename from tests/MiniCover.UnitTests/Instrumentation/OrWithEquals.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/OrWithEquals.cs index 60f9bc59f7..9da7211659 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/OrWithEquals.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/OrWithEquals.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class OrWithEquals : BaseTest { @@ -26,8 +26,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Boolean V_0, MiniCover.HitServices.MethodScope V_1, System.Boolean V_2) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.OrWithEquals/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.OrWithEquals/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.1 @@ -90,8 +90,8 @@ public override void FunctionalTest() Instruction = "IL_0001: ldarg x", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.OrWithEquals/Class", - FullName = "System.Boolean MiniCover.UnitTests.Instrumentation.OrWithEquals/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.OrWithEquals/Class", + FullName = "System.Boolean MiniCover.Core.UnitTests.Instrumentation.OrWithEquals/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 17, diff --git a/tests/MiniCover.UnitTests/Instrumentation/StaticMethod.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/StaticMethod.cs similarity index 89% rename from tests/MiniCover.UnitTests/Instrumentation/StaticMethod.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/StaticMethod.cs index ebdae8d4cc..0da7888275 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/StaticMethod.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/StaticMethod.cs @@ -3,7 +3,7 @@ using FluentAssertions; using Xunit; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class StaticMethod : BaseTest { @@ -26,8 +26,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Int32 V_0, MiniCover.HitServices.MethodScope V_1, System.Int32 V_2) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.StaticMethod/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.StaticMethod/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.1 diff --git a/tests/MiniCover.UnitTests/Instrumentation/Switch.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/Switch.cs similarity index 84% rename from tests/MiniCover.UnitTests/Instrumentation/Switch.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/Switch.cs index 7949fa8dc8..a8529fdc0a 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/Switch.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/Switch.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class Switch : BaseTest { @@ -38,8 +38,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.Int32 V_0, System.Int32 V_1, System.Int32 V_2, MiniCover.HitServices.MethodScope V_3, System.Int32 V_4) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.Switch/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.Switch/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.3 @@ -149,8 +149,8 @@ public override void FunctionalTest() Instruction = "IL_0001: ldarg x", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.Switch/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.Switch/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.Switch/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.Switch/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 17, @@ -165,8 +165,8 @@ public override void FunctionalTest() Instruction = "IL_001b: ldc.i4 1", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.Switch/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.Switch/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.Switch/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.Switch/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 25, @@ -181,8 +181,8 @@ public override void FunctionalTest() Instruction = "IL_001f: ldc.i4 2", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.Switch/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.Switch/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.Switch/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.Switch/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 25, @@ -197,8 +197,8 @@ public override void FunctionalTest() Instruction = "IL_0023: ldc.i4 3", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.Switch/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.Switch/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.Switch/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.Switch/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 25, @@ -213,8 +213,8 @@ public override void FunctionalTest() Instruction = "IL_0027: ldc.i4 0", Method = new InstrumentedMethod { - Class = "MiniCover.UnitTests.Instrumentation.Switch/Class", - FullName = "System.Int32 MiniCover.UnitTests.Instrumentation.Switch/Class::Method(System.Int32)", + Class = "MiniCover.Core.UnitTests.Instrumentation.Switch/Class", + FullName = "System.Int32 MiniCover.Core.UnitTests.Instrumentation.Switch/Class::Method(System.Int32)", Name = "Method" }, StartColumn = 25, diff --git a/tests/MiniCover.UnitTests/Instrumentation/ThrowException.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/ThrowException.cs similarity index 91% rename from tests/MiniCover.UnitTests/Instrumentation/ThrowException.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/ThrowException.cs index 5efc2316ec..2a19c683b0 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/ThrowException.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/ThrowException.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using FluentAssertions; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class ThrowException : BaseTest { @@ -32,8 +32,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (MiniCover.HitServices.MethodScope V_0, System.Int32 V_1) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.ThrowException/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.ThrowException/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.0 diff --git a/tests/MiniCover.UnitTests/Instrumentation/Using.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/Using.cs similarity index 93% rename from tests/MiniCover.UnitTests/Instrumentation/Using.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/Using.cs index 1c7d8fb772..c11fdf15a5 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/Using.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/Using.cs @@ -2,7 +2,7 @@ using System.IO; using FluentAssertions; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class Using : BaseTest { @@ -29,8 +29,8 @@ public override void FunctionalTest() public override string ExpectedIL => @".locals init (System.IO.MemoryStream stream, System.Byte[] V_1, MiniCover.HitServices.MethodScope V_2, System.Byte[] V_3) IL_0000: ldstr ""/tmp"" -IL_0005: ldstr ""MiniCover.UnitTests"" -IL_000a: ldstr ""MiniCover.UnitTests.Instrumentation.Using/Class"" +IL_0005: ldstr ""MiniCover.Core.UnitTests"" +IL_000a: ldstr ""MiniCover.Core.UnitTests.Instrumentation.Using/Class"" IL_000f: ldstr ""Method"" IL_0014: call MiniCover.HitServices.MethodScope MiniCover.HitServices.HitService::EnterMethod(System.String,System.String,System.String,System.String) IL_0019: stloc.2 diff --git a/tests/MiniCover.UnitTests/Instrumentation/WorkerThread.cs b/tests/MiniCover.Core.UnitTests/Instrumentation/WorkerThread.cs similarity index 92% rename from tests/MiniCover.UnitTests/Instrumentation/WorkerThread.cs rename to tests/MiniCover.Core.UnitTests/Instrumentation/WorkerThread.cs index f77e00af9e..2333d71b38 100644 --- a/tests/MiniCover.UnitTests/Instrumentation/WorkerThread.cs +++ b/tests/MiniCover.Core.UnitTests/Instrumentation/WorkerThread.cs @@ -2,9 +2,9 @@ using System.Threading; using System.Threading.Tasks; using FluentAssertions; -using MiniCover.Model; +using MiniCover.Core.Model; -namespace MiniCover.UnitTests.Instrumentation +namespace MiniCover.Core.UnitTests.Instrumentation { public class WorkerThread : BaseTest { diff --git a/tests/MiniCover.Core.UnitTests/MiniCover.Core.UnitTests.csproj b/tests/MiniCover.Core.UnitTests/MiniCover.Core.UnitTests.csproj new file mode 100644 index 0000000000..5e77bcbbc9 --- /dev/null +++ b/tests/MiniCover.Core.UnitTests/MiniCover.Core.UnitTests.csproj @@ -0,0 +1,28 @@ + + + net5.0 + false + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + + + diff --git a/tests/MiniCover.UnitTests/TestHelpers/ILFormatter.cs b/tests/MiniCover.Core.UnitTests/TestHelpers/ILFormatter.cs similarity index 100% rename from tests/MiniCover.UnitTests/TestHelpers/ILFormatter.cs rename to tests/MiniCover.Core.UnitTests/TestHelpers/ILFormatter.cs diff --git a/tests/MiniCover.UnitTests/TestHelpers/InstrumentationExtensions.cs b/tests/MiniCover.Core.UnitTests/TestHelpers/InstrumentationExtensions.cs similarity index 96% rename from tests/MiniCover.UnitTests/TestHelpers/InstrumentationExtensions.cs rename to tests/MiniCover.Core.UnitTests/TestHelpers/InstrumentationExtensions.cs index 69409f9cf8..31638ba01d 100644 --- a/tests/MiniCover.UnitTests/TestHelpers/InstrumentationExtensions.cs +++ b/tests/MiniCover.Core.UnitTests/TestHelpers/InstrumentationExtensions.cs @@ -6,11 +6,11 @@ using System.Reflection; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging.Abstractions; -using MiniCover.Extensions; -using MiniCover.Infrastructure.FileSystem; -using MiniCover.Instrumentation; -using MiniCover.Model; -using MiniCover.Utils; +using MiniCover.Core.Extensions; +using MiniCover.Core.FileSystem; +using MiniCover.Core.Instrumentation; +using MiniCover.Core.Model; +using MiniCover.Core.Utils; using Mono.Cecil; namespace MiniCover.UnitTests.TestHelpers diff --git a/tests/MiniCover.Core.UnitTests/TestHelpers/TestBase.cs b/tests/MiniCover.Core.UnitTests/TestHelpers/TestBase.cs new file mode 100644 index 0000000000..c46fd6568d --- /dev/null +++ b/tests/MiniCover.Core.UnitTests/TestHelpers/TestBase.cs @@ -0,0 +1,26 @@ +using System; +using Moq; + +namespace MiniCover.UnitTests.TestHelpers +{ + public class TestBase : IDisposable + { + private readonly MockRepository _mockRepository; + + public TestBase() + { + _mockRepository = new MockRepository(MockBehavior.Strict); + } + + public Mock MockFor() + where T : class + { + return _mockRepository.Create(); + } + + public void Dispose() + { + _mockRepository.VerifyAll(); + } + } +} diff --git a/tests/MiniCover.UnitTests/Utils/DepsJsonUtilsTests.cs b/tests/MiniCover.Core.UnitTests/Utils/DepsJsonUtilsTests.cs similarity index 98% rename from tests/MiniCover.UnitTests/Utils/DepsJsonUtilsTests.cs rename to tests/MiniCover.Core.UnitTests/Utils/DepsJsonUtilsTests.cs index 9a1c18aa02..0b62c22b96 100644 --- a/tests/MiniCover.UnitTests/Utils/DepsJsonUtilsTests.cs +++ b/tests/MiniCover.Core.UnitTests/Utils/DepsJsonUtilsTests.cs @@ -1,7 +1,7 @@ using System.IO.Abstractions.TestingHelpers; using FluentAssertions; -using MiniCover.UnitTests.TestHelpers; -using MiniCover.Utils; +using MiniCover.Core.Utils; +using MiniCover.TestHelpers; using Xunit; namespace MiniCover.UnitTests.Utils diff --git a/tests/MiniCover.UnitTests/Utils/FileUtilsTests.cs b/tests/MiniCover.Core.UnitTests/Utils/FileUtilsTests.cs similarity index 97% rename from tests/MiniCover.UnitTests/Utils/FileUtilsTests.cs rename to tests/MiniCover.Core.UnitTests/Utils/FileUtilsTests.cs index 3b07e49eff..f773c823ff 100644 --- a/tests/MiniCover.UnitTests/Utils/FileUtilsTests.cs +++ b/tests/MiniCover.Core.UnitTests/Utils/FileUtilsTests.cs @@ -1,7 +1,7 @@ using System.IO.Abstractions.TestingHelpers; using FluentAssertions; -using MiniCover.UnitTests.TestHelpers; -using MiniCover.Utils; +using MiniCover.Core.Utils; +using MiniCover.TestHelpers; using Xunit; namespace MiniCover.UnitTests.Utils diff --git a/tests/MiniCover.HitServices.UnitTests/MiniCover.HitServices.UnitTests.csproj b/tests/MiniCover.HitServices.UnitTests/MiniCover.HitServices.UnitTests.csproj index 10f780a2dc..0031d6754e 100644 --- a/tests/MiniCover.HitServices.UnitTests/MiniCover.HitServices.UnitTests.csproj +++ b/tests/MiniCover.HitServices.UnitTests/MiniCover.HitServices.UnitTests.csproj @@ -2,12 +2,11 @@ net5 - false - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/tests/MiniCover.Reports.UnitTests/MiniCover.Reports.UnitTests.csproj b/tests/MiniCover.Reports.UnitTests/MiniCover.Reports.UnitTests.csproj new file mode 100644 index 0000000000..a4a678d1b4 --- /dev/null +++ b/tests/MiniCover.Reports.UnitTests/MiniCover.Reports.UnitTests.csproj @@ -0,0 +1,26 @@ + + + net5.0 + false + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + diff --git a/tests/MiniCover.Reports.UnitTests/TestHelpers/TestBase.cs b/tests/MiniCover.Reports.UnitTests/TestHelpers/TestBase.cs new file mode 100644 index 0000000000..1aa79f4d42 --- /dev/null +++ b/tests/MiniCover.Reports.UnitTests/TestHelpers/TestBase.cs @@ -0,0 +1,26 @@ +using System; +using Moq; + +namespace MiniCover.Reports.UnitTests.TestHelpers +{ + public class TestBase : IDisposable + { + private readonly MockRepository _mockRepository; + + public TestBase() + { + _mockRepository = new MockRepository(MockBehavior.Strict); + } + + public Mock MockFor() + where T : class + { + return _mockRepository.Create(); + } + + public void Dispose() + { + _mockRepository.VerifyAll(); + } + } +} diff --git a/tests/MiniCover.UnitTests/Utils/ResourceUtilsTests.cs b/tests/MiniCover.Reports.UnitTests/Utils/ResourceUtilsTests.cs similarity index 80% rename from tests/MiniCover.UnitTests/Utils/ResourceUtilsTests.cs rename to tests/MiniCover.Reports.UnitTests/Utils/ResourceUtilsTests.cs index 9ca8abe632..4689d4a801 100644 --- a/tests/MiniCover.UnitTests/Utils/ResourceUtilsTests.cs +++ b/tests/MiniCover.Reports.UnitTests/Utils/ResourceUtilsTests.cs @@ -1,9 +1,9 @@ using System; using FluentAssertions; -using MiniCover.Utils; +using MiniCover.Reports.Utils; using Xunit; -namespace MiniCover.UnitTests.Utils +namespace MiniCover.UnitTests.Reports.Utils { public class ResourceUtilsTests { diff --git a/tests/MiniCover.TestHelpers/MiniCover.TestHelpers.csproj b/tests/MiniCover.TestHelpers/MiniCover.TestHelpers.csproj new file mode 100644 index 0000000000..f9dc4c317f --- /dev/null +++ b/tests/MiniCover.TestHelpers/MiniCover.TestHelpers.csproj @@ -0,0 +1,11 @@ + + + + netstandard2.0 + false + + + + + + diff --git a/tests/MiniCover.UnitTests/TestHelpers/StringExtensions.cs b/tests/MiniCover.TestHelpers/StringExtensions.cs similarity index 95% rename from tests/MiniCover.UnitTests/TestHelpers/StringExtensions.cs rename to tests/MiniCover.TestHelpers/StringExtensions.cs index c7f087e9f5..db060185aa 100644 --- a/tests/MiniCover.UnitTests/TestHelpers/StringExtensions.cs +++ b/tests/MiniCover.TestHelpers/StringExtensions.cs @@ -1,7 +1,7 @@ using System.IO; using System.Runtime.InteropServices; -namespace MiniCover.UnitTests.TestHelpers +namespace MiniCover.TestHelpers { public static class StringExtensions { diff --git a/tests/MiniCover.UnitTests/TestBase.cs b/tests/MiniCover.TestHelpers/TestBase.cs similarity index 93% rename from tests/MiniCover.UnitTests/TestBase.cs rename to tests/MiniCover.TestHelpers/TestBase.cs index 5858670269..9499d12ab9 100644 --- a/tests/MiniCover.UnitTests/TestBase.cs +++ b/tests/MiniCover.TestHelpers/TestBase.cs @@ -1,7 +1,7 @@ using System; using Moq; -namespace MiniCover.UnitTests +namespace MiniCover.TestHelpers { public class TestBase : IDisposable { diff --git a/tests/MiniCover.UnitTests/CommandLine/CommandTests.cs b/tests/MiniCover.UnitTests/CommandLine/CommandTests.cs index ea3944722e..c7bd15062a 100644 --- a/tests/MiniCover.UnitTests/CommandLine/CommandTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/CommandTests.cs @@ -1,5 +1,6 @@ -using FluentAssertions; +using FluentAssertions; using MiniCover.CommandLine; +using MiniCover.TestHelpers; using Xunit; namespace MiniCover.UnitTests.CommandLine diff --git a/tests/MiniCover.UnitTests/CommandLine/Commands/CloverReportCommandTests.cs b/tests/MiniCover.UnitTests/CommandLine/Commands/CloverReportCommandTests.cs index c047702999..92d21d7a0a 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Commands/CloverReportCommandTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Commands/CloverReportCommandTests.cs @@ -1,9 +1,9 @@ -using System.IO.Abstractions; +using System.IO.Abstractions; using System.Threading.Tasks; using FluentAssertions; -using MiniCover.CommandLine.Commands; -using MiniCover.CommandLine.Options; -using MiniCover.Model; +using MiniCover.CommandLine.Commands; +using MiniCover.CommandLine.Options; +using MiniCover.Core.Model; using MiniCover.Reports.Clover; using Moq; using Xunit; diff --git a/tests/MiniCover.UnitTests/CommandLine/Commands/CoberturaReportCommandTests.cs b/tests/MiniCover.UnitTests/CommandLine/Commands/CoberturaReportCommandTests.cs index 9162129a7b..a0ead8b6c0 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Commands/CoberturaReportCommandTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Commands/CoberturaReportCommandTests.cs @@ -3,7 +3,7 @@ using FluentAssertions; using MiniCover.CommandLine.Commands; using MiniCover.CommandLine.Options; -using MiniCover.Model; +using MiniCover.Core.Model; using MiniCover.Reports.Cobertura; using Moq; using Xunit; diff --git a/tests/MiniCover.UnitTests/CommandLine/Commands/ConsoleReportCommandTests.cs b/tests/MiniCover.UnitTests/CommandLine/Commands/ConsoleReportCommandTests.cs index 9583975c50..0db95cf7e5 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Commands/ConsoleReportCommandTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Commands/ConsoleReportCommandTests.cs @@ -3,8 +3,8 @@ using FluentAssertions; using MiniCover.CommandLine.Commands; using MiniCover.CommandLine.Options; -using MiniCover.Model; -using MiniCover.Reports; +using MiniCover.Core.Model; +using MiniCover.Reports.Console; using Moq; using Xunit; diff --git a/tests/MiniCover.UnitTests/CommandLine/Commands/CoverallsReportCommandTests.cs b/tests/MiniCover.UnitTests/CommandLine/Commands/CoverallsReportCommandTests.cs index 1a9b0f118c..815683c097 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Commands/CoverallsReportCommandTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Commands/CoverallsReportCommandTests.cs @@ -3,9 +3,9 @@ using FluentAssertions; using MiniCover.CommandLine.Commands; using MiniCover.CommandLine.Options; -using MiniCover.Model; +using MiniCover.Core.Model; using MiniCover.Reports.Coveralls; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.TestHelpers; using Moq; using Xunit; diff --git a/tests/MiniCover.UnitTests/CommandLine/Commands/HtmlReportCommandTests.cs b/tests/MiniCover.UnitTests/CommandLine/Commands/HtmlReportCommandTests.cs index 395a862b73..d774f7bfa2 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Commands/HtmlReportCommandTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Commands/HtmlReportCommandTests.cs @@ -3,7 +3,7 @@ using FluentAssertions; using MiniCover.CommandLine.Commands; using MiniCover.CommandLine.Options; -using MiniCover.Model; +using MiniCover.Core.Model; using MiniCover.Reports.Html; using Moq; using Xunit; diff --git a/tests/MiniCover.UnitTests/CommandLine/Commands/NCoverReportCommandTests.cs b/tests/MiniCover.UnitTests/CommandLine/Commands/NCoverReportCommandTests.cs index cef979aa60..97d2632a90 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Commands/NCoverReportCommandTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Commands/NCoverReportCommandTests.cs @@ -3,7 +3,7 @@ using FluentAssertions; using MiniCover.CommandLine.Commands; using MiniCover.CommandLine.Options; -using MiniCover.Model; +using MiniCover.Core.Model; using MiniCover.Reports.NCover; using Moq; using Xunit; diff --git a/tests/MiniCover.UnitTests/CommandLine/Commands/OpenCoverReportCommandTests.cs b/tests/MiniCover.UnitTests/CommandLine/Commands/OpenCoverReportCommandTests.cs index 647ee2bdb6..2b097f2c36 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Commands/OpenCoverReportCommandTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Commands/OpenCoverReportCommandTests.cs @@ -3,7 +3,7 @@ using FluentAssertions; using MiniCover.CommandLine.Commands; using MiniCover.CommandLine.Options; -using MiniCover.Model; +using MiniCover.Core.Model; using MiniCover.Reports.OpenCover; using Moq; using Xunit; diff --git a/tests/MiniCover.UnitTests/CommandLine/Commands/UninstrumentCommandTests.cs b/tests/MiniCover.UnitTests/CommandLine/Commands/UninstrumentCommandTests.cs index 676654e2ed..cf3a6b6be3 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Commands/UninstrumentCommandTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Commands/UninstrumentCommandTests.cs @@ -2,8 +2,8 @@ using FluentAssertions; using MiniCover.CommandLine.Options; using MiniCover.Commands; -using MiniCover.Instrumentation; -using MiniCover.Model; +using MiniCover.Core.Instrumentation; +using MiniCover.Core.Model; using Moq; using Xunit; diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/CloverOutputOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/CloverOutputOptionTests.cs index 80efbae954..a484125b15 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/CloverOutputOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/CloverOutputOptionTests.cs @@ -1,5 +1,5 @@ using MiniCover.CommandLine.Options; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.TestHelpers; namespace MiniCover.UnitTests.CommandLine.Options { diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/CoberturaOutputOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/CoberturaOutputOptionTests.cs index efb3264b69..cf0b76be98 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/CoberturaOutputOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/CoberturaOutputOptionTests.cs @@ -1,5 +1,5 @@ using MiniCover.CommandLine.Options; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.TestHelpers; namespace MiniCover.UnitTests.CommandLine.Options { diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/CoverageFileOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/CoverageFileOptionTests.cs index 34c7ac7ad6..f0a8f3f6fa 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/CoverageFileOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/CoverageFileOptionTests.cs @@ -1,6 +1,5 @@ -using System.IO.Abstractions.TestingHelpers; -using MiniCover.CommandLine.Options; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.CommandLine.Options; +using MiniCover.TestHelpers; namespace MiniCover.UnitTests.CommandLine.Options { diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/CoverageLoadedFileOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/CoverageLoadedFileOptionTests.cs index 1d113a1872..e8a23d4299 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/CoverageLoadedFileOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/CoverageLoadedFileOptionTests.cs @@ -2,7 +2,7 @@ using FluentAssertions; using MiniCover.CommandLine.Options; using MiniCover.Exceptions; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.TestHelpers; using Xunit; namespace MiniCover.UnitTests.CommandLine.Options diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/HitsDirectoryOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/HitsDirectoryOptionTests.cs index ba830d53fd..33782714f3 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/HitsDirectoryOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/HitsDirectoryOptionTests.cs @@ -1,5 +1,5 @@ using MiniCover.CommandLine.Options; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.TestHelpers; namespace MiniCover.UnitTests.CommandLine.Options { diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/HtmlOutputDirectoryOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/HtmlOutputDirectoryOptionTests.cs index ac5a7a3bb1..00c9babcdf 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/HtmlOutputDirectoryOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/HtmlOutputDirectoryOptionTests.cs @@ -1,5 +1,5 @@ using MiniCover.CommandLine.Options; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.TestHelpers; namespace MiniCover.UnitTests.CommandLine.Options { diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/NCoverOutputOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/NCoverOutputOptionTests.cs index 13cf25bd05..6cff55347b 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/NCoverOutputOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/NCoverOutputOptionTests.cs @@ -1,5 +1,5 @@ using MiniCover.CommandLine.Options; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.TestHelpers; namespace MiniCover.UnitTests.CommandLine.Options { diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/OpenCoverOutputOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/OpenCoverOutputOptionTests.cs index d0de0cdd3c..cb8c7b81bf 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/OpenCoverOutputOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/OpenCoverOutputOptionTests.cs @@ -1,5 +1,5 @@ using MiniCover.CommandLine.Options; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.TestHelpers; namespace MiniCover.UnitTests.CommandLine.Options { diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/ParentDirectoryOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/ParentDirectoryOptionTests.cs index 5bab633025..0fcd4729fd 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/ParentDirectoryOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/ParentDirectoryOptionTests.cs @@ -1,5 +1,5 @@ using MiniCover.CommandLine.Options; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.TestHelpers; namespace MiniCover.UnitTests.CommandLine.Options { diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/VerbosityOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/VerbosityOptionTests.cs index fac8c735da..6a25f48572 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/VerbosityOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/VerbosityOptionTests.cs @@ -3,7 +3,7 @@ using Microsoft.Extensions.Logging; using MiniCover.CommandLine.Options; using MiniCover.Exceptions; -using MiniCover.Infrastructure; +using MiniCover.IO; using Moq; using Xunit; diff --git a/tests/MiniCover.UnitTests/CommandLine/Options/WorkingDirectoryOptionTests.cs b/tests/MiniCover.UnitTests/CommandLine/Options/WorkingDirectoryOptionTests.cs index e238f39215..26fae822c5 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Options/WorkingDirectoryOptionTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Options/WorkingDirectoryOptionTests.cs @@ -1,7 +1,7 @@ using FluentAssertions; using Microsoft.Extensions.Logging.Abstractions; using MiniCover.CommandLine.Options; -using MiniCover.UnitTests.TestHelpers; +using MiniCover.TestHelpers; namespace MiniCover.UnitTests.CommandLine.Options { diff --git a/tests/MiniCover.UnitTests/MiniCover.UnitTests.csproj b/tests/MiniCover.UnitTests/MiniCover.UnitTests.csproj index 891e5aa535..5e77bcbbc9 100644 --- a/tests/MiniCover.UnitTests/MiniCover.UnitTests.csproj +++ b/tests/MiniCover.UnitTests/MiniCover.UnitTests.csproj @@ -3,32 +3,26 @@ net5.0 false + - + - runtime; build; native; contentfiles; analyzers; buildtransitive -all - + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + - - + + + + + + - - - - - - - - - - - - $(DefaultItemExcludes);Resources\**\* - + From 5cc322783ab36832a888f2ae7920196df8a6fd9b Mon Sep 17 00:00:00 2001 From: Lucas Lara Date: Wed, 16 Dec 2020 19:59:29 +0100 Subject: [PATCH 3/6] Make all classes public --- .../Coveralls/Models/CoverallsCommitModel.cs | 2 +- src/MiniCover.Reports/Coveralls/Models/CoverallsGitModel.cs | 2 +- src/MiniCover.Reports/Coveralls/Models/CoverallsJobModel.cs | 2 +- .../Coveralls/Models/CoverallsRemoteModel.cs | 2 +- .../Coveralls/Models/CoverallsSourceFileModel.cs | 2 +- src/MiniCover/CommandLine/Commands/InstrumentCommand.cs | 2 +- src/MiniCover/CommandLine/Commands/ResetCommand.cs | 4 ++-- src/MiniCover/CommandLine/Options/NoFailOption.cs | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/MiniCover.Reports/Coveralls/Models/CoverallsCommitModel.cs b/src/MiniCover.Reports/Coveralls/Models/CoverallsCommitModel.cs index 32f70f432a..ce66bea6e0 100644 --- a/src/MiniCover.Reports/Coveralls/Models/CoverallsCommitModel.cs +++ b/src/MiniCover.Reports/Coveralls/Models/CoverallsCommitModel.cs @@ -2,7 +2,7 @@ namespace MiniCover.Reports.Coveralls.Models { - class CoverallsCommitModel + public class CoverallsCommitModel { [JsonProperty("id")] public string Id { get; set; } diff --git a/src/MiniCover.Reports/Coveralls/Models/CoverallsGitModel.cs b/src/MiniCover.Reports/Coveralls/Models/CoverallsGitModel.cs index 6fa8ab4ea7..6ea3c4f318 100644 --- a/src/MiniCover.Reports/Coveralls/Models/CoverallsGitModel.cs +++ b/src/MiniCover.Reports/Coveralls/Models/CoverallsGitModel.cs @@ -3,7 +3,7 @@ namespace MiniCover.Reports.Coveralls.Models { - class CoverallsGitModel + public class CoverallsGitModel { [JsonProperty("head")] public CoverallsCommitModel Head { get; set; } diff --git a/src/MiniCover.Reports/Coveralls/Models/CoverallsJobModel.cs b/src/MiniCover.Reports/Coveralls/Models/CoverallsJobModel.cs index a27605715c..b6dbeeddd5 100644 --- a/src/MiniCover.Reports/Coveralls/Models/CoverallsJobModel.cs +++ b/src/MiniCover.Reports/Coveralls/Models/CoverallsJobModel.cs @@ -3,7 +3,7 @@ namespace MiniCover.Reports.Coveralls.Models { - class CoverallsJobModel + public class CoverallsJobModel { [JsonProperty("service_job_id")] public string ServiceJobId { get; set; } diff --git a/src/MiniCover.Reports/Coveralls/Models/CoverallsRemoteModel.cs b/src/MiniCover.Reports/Coveralls/Models/CoverallsRemoteModel.cs index fb9a8ffb3e..eb35c4d7f3 100644 --- a/src/MiniCover.Reports/Coveralls/Models/CoverallsRemoteModel.cs +++ b/src/MiniCover.Reports/Coveralls/Models/CoverallsRemoteModel.cs @@ -2,7 +2,7 @@ namespace MiniCover.Reports.Coveralls.Models { - class CoverallsRemote + public class CoverallsRemote { [JsonProperty("name")] public string Name { get; set; } diff --git a/src/MiniCover.Reports/Coveralls/Models/CoverallsSourceFileModel.cs b/src/MiniCover.Reports/Coveralls/Models/CoverallsSourceFileModel.cs index ae018c2841..a2517b6f9e 100644 --- a/src/MiniCover.Reports/Coveralls/Models/CoverallsSourceFileModel.cs +++ b/src/MiniCover.Reports/Coveralls/Models/CoverallsSourceFileModel.cs @@ -2,7 +2,7 @@ namespace MiniCover.Reports.Coveralls.Models { - class CoverallsSourceFileModel + public class CoverallsSourceFileModel { [JsonProperty("name")] public string Name { get; set; } diff --git a/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs b/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs index 1ecb5f1986..c67a74eb45 100644 --- a/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs +++ b/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs @@ -14,7 +14,7 @@ namespace MiniCover.Commands { - class InstrumentCommand : ICommand + public class InstrumentCommand : ICommand { private readonly IServiceProvider _serviceProvider; private readonly VerbosityOption _verbosityOption; diff --git a/src/MiniCover/CommandLine/Commands/ResetCommand.cs b/src/MiniCover/CommandLine/Commands/ResetCommand.cs index 6123858f32..a94920ac0a 100644 --- a/src/MiniCover/CommandLine/Commands/ResetCommand.cs +++ b/src/MiniCover/CommandLine/Commands/ResetCommand.cs @@ -3,14 +3,14 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.Logging; -using MiniCover.CommandLine; +using MiniCover.CommandLine; using MiniCover.CommandLine.Options; using MiniCover.Core.Hits; using MiniCover.IO; namespace MiniCover.Commands { - class ResetCommand : ICommand + public class ResetCommand : ICommand { private readonly HitsDirectoryOption _hitsDirectoryOption; diff --git a/src/MiniCover/CommandLine/Options/NoFailOption.cs b/src/MiniCover/CommandLine/Options/NoFailOption.cs index bb170a6c80..e5900705e1 100644 --- a/src/MiniCover/CommandLine/Options/NoFailOption.cs +++ b/src/MiniCover/CommandLine/Options/NoFailOption.cs @@ -1,6 +1,6 @@ namespace MiniCover.CommandLine.Options { - class NoFailOption : INoValueOption, INoFailOption + public class NoFailOption : INoValueOption, INoFailOption { public bool Value { get; private set; } public string Template => "--no-fail"; From 26375600231fbeb9c25bf5a53959a3e6816c0ef6 Mon Sep 17 00:00:00 2001 From: Lucas Lara Date: Wed, 16 Dec 2020 20:38:41 +0100 Subject: [PATCH 4/6] Use filesystem interfaces everywhere --- .../FileSystem/CachedFileReader.cs | 9 +++++-- src/MiniCover.Core/Hits/HitsReader.cs | 14 ++++++++--- .../Instrumentation/AssemblyInstrumenter.cs | 8 +++--- .../Instrumentation/CustomAssemblyResolver.cs | 9 ++++--- .../Instrumentation/Instrumenter.cs | 25 +++++++++++-------- .../Instrumentation/Uninstrumenter.cs | 16 ++++++------ .../Coveralls/CoverallsReport.cs | 17 ++++++++----- src/MiniCover.Reports/Html/HtmlReport.cs | 7 ++++-- .../Html/HtmlSourceFileReport.cs | 9 +++++-- src/MiniCover.Reports/NCover/NCoverReport.cs | 8 ++++-- .../OpenCover/OpenCoverReport.cs | 8 ++++-- .../TestHelpers/InstrumentationExtensions.cs | 6 ++--- 12 files changed, 88 insertions(+), 48 deletions(-) diff --git a/src/MiniCover.Core/FileSystem/CachedFileReader.cs b/src/MiniCover.Core/FileSystem/CachedFileReader.cs index fecce4a957..91ce87a61e 100644 --- a/src/MiniCover.Core/FileSystem/CachedFileReader.cs +++ b/src/MiniCover.Core/FileSystem/CachedFileReader.cs @@ -1,4 +1,5 @@ using System.IO; +using System.IO.Abstractions; using Microsoft.Extensions.Caching.Memory; namespace MiniCover.Core.FileSystem @@ -6,10 +7,14 @@ namespace MiniCover.Core.FileSystem public class CachedFileReader : IFileReader { private readonly IMemoryCache _memoryCache; + private readonly IFileSystem _fileSystem; - public CachedFileReader(IMemoryCache memoryCache) + public CachedFileReader( + IMemoryCache memoryCache, + IFileSystem fileSystem) { _memoryCache = memoryCache; + _fileSystem = fileSystem; } public string[] ReadAllLines(FileInfo file) @@ -17,7 +22,7 @@ public string[] ReadAllLines(FileInfo file) return _memoryCache.GetOrCreate(file.FullName, entry => { entry.Priority = CacheItemPriority.Low; - return File.ReadAllLines(file.FullName); + return _fileSystem.File.ReadAllLines(file.FullName); }); } } diff --git a/src/MiniCover.Core/Hits/HitsReader.cs b/src/MiniCover.Core/Hits/HitsReader.cs index 0380799aea..99f0efab0a 100644 --- a/src/MiniCover.Core/Hits/HitsReader.cs +++ b/src/MiniCover.Core/Hits/HitsReader.cs @@ -1,20 +1,28 @@ using System.Collections.Generic; using System.IO; +using System.IO.Abstractions; using MiniCover.HitServices; namespace MiniCover.Core.Hits { public class HitsReader : IHitsReader { + private readonly IFileSystem _fileSystem; + + public HitsReader(IFileSystem fileSystem) + { + _fileSystem = fileSystem; + } + public HitsInfo TryReadFromDirectory(string path) { var contexts = new List(); - if (Directory.Exists(path)) + if (_fileSystem.Directory.Exists(path)) { - foreach (var hitFile in Directory.GetFiles(path, "*.hits")) + foreach (var hitFile in _fileSystem.Directory.GetFiles(path, "*.hits")) { - using (var fileStream = File.Open(hitFile, FileMode.Open, FileAccess.Read)) + using (var fileStream = _fileSystem.File.Open(hitFile, FileMode.Open, FileAccess.Read)) { contexts.AddRange(HitContext.Deserialize(fileStream)); } diff --git a/src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs b/src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs index 89ad12e3e3..ff33938158 100644 --- a/src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs @@ -42,7 +42,7 @@ public InstrumentedAssembly InstrumentAssemblyFile( { var assemblyDirectory = assemblyFile.Directory; - var resolver = new CustomAssemblyResolver(assemblyDirectory, _assemblyResolverLogger, _depsJsonUtils); + var resolver = new CustomAssemblyResolver(assemblyDirectory, _depsJsonUtils, _fileSystem, _assemblyResolverLogger); _logger.LogTrace("Assembly resolver search directories: {directories}", new object[] { resolver.GetSearchDirectories() }); @@ -125,11 +125,11 @@ private InstrumentedAssembly InstrumentAssemblyDefinition( return instrumentedAssembly; } - private static string GetMiniCoverTempPath() + private string GetMiniCoverTempPath() { var path = Path.Combine(Path.GetTempPath(), "minicover"); - if (!Directory.Exists(path)) - Directory.CreateDirectory(path); + if (!_fileSystem.Directory.Exists(path)) + _fileSystem.Directory.CreateDirectory(path); return path; } } diff --git a/src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs b/src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs index 7f75c6d06a..abb762b121 100644 --- a/src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs +++ b/src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs @@ -14,12 +14,15 @@ public class CustomAssemblyResolver : DefaultAssemblyResolver { private readonly DependencyContext _dependencyContext; private readonly ILogger _logger; + private readonly IFileSystem _fileSystem; public CustomAssemblyResolver( IDirectoryInfo assemblyDirectory, - ILogger logger, - DepsJsonUtils depsJsonUtils) + DepsJsonUtils depsJsonUtils, + IFileSystem fileSystem, + ILogger logger) { + _fileSystem = fileSystem; _logger = logger; foreach (var searchDirectory in GetSearchDirectories()) @@ -35,7 +38,7 @@ public CustomAssemblyResolver( if (runtimeConfigPath != null) { - var runtimeConfigContent = File.ReadAllText(runtimeConfigPath.FullName); + var runtimeConfigContent = _fileSystem.File.ReadAllText(runtimeConfigPath.FullName); foreach (var path in depsJsonUtils.GetAdditionalPaths(runtimeConfigContent)) { AddSearchDirectory(path); diff --git a/src/MiniCover.Core/Instrumentation/Instrumenter.cs b/src/MiniCover.Core/Instrumentation/Instrumenter.cs index 97c0895374..88aacd8d3f 100644 --- a/src/MiniCover.Core/Instrumentation/Instrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/Instrumenter.cs @@ -16,9 +16,10 @@ public class Instrumenter { private static readonly Assembly hitServicesAssembly = typeof(HitService).Assembly; - private readonly ILogger _logger; private readonly AssemblyInstrumenter _assemblyInstrumenter; private readonly DepsJsonUtils _depsJsonUtils; + private readonly IFileSystem _fileSystem; + private readonly ILogger _logger; private readonly string[] _loadedAssemblyFiles = AppDomain.CurrentDomain.GetAssemblies() .Where(a => !a.IsDynamic) @@ -26,13 +27,15 @@ public class Instrumenter .ToArray(); public Instrumenter( - ILogger logger, AssemblyInstrumenter assemblyInstrumenter, - DepsJsonUtils depsJsonUtils) + DepsJsonUtils depsJsonUtils, + IFileSystem fileSystem, + ILogger logger) { - _logger = logger; _assemblyInstrumenter = assemblyInstrumenter; _depsJsonUtils = depsJsonUtils; + _fileSystem = fileSystem; + _logger = logger; } public InstrumentationResult Execute(InstrumentationContext context) @@ -102,19 +105,19 @@ private void VisitAssemblyGroup( var pdbBackupFile = FileUtils.GetBackupFile(pdbFile); //Backup - File.Copy(assemblyFile.FullName, assemblyBackupFile.FullName, true); - File.Copy(pdbFile.FullName, pdbBackupFile.FullName, true); + _fileSystem.File.Copy(assemblyFile.FullName, assemblyBackupFile.FullName, true); + _fileSystem.File.Copy(pdbFile.FullName, pdbBackupFile.FullName, true); //Override assembly - File.Copy(instrumentedAssembly.TempAssemblyFile, assemblyFile.FullName, true); - File.Copy(instrumentedAssembly.TempPdbFile, pdbFile.FullName, true); + _fileSystem.File.Copy(instrumentedAssembly.TempAssemblyFile, assemblyFile.FullName, true); + _fileSystem.File.Copy(instrumentedAssembly.TempPdbFile, pdbFile.FullName, true); //Copy instrumentation dependencies var assemblyDirectory = assemblyFile.Directory; var hitServicesPath = Path.GetFileName(hitServicesAssembly.Location); var newHitServicesPath = Path.Combine(assemblyDirectory.FullName, hitServicesPath); - File.Copy(hitServicesAssembly.Location, newHitServicesPath, true); + _fileSystem.File.Copy(hitServicesAssembly.Location, newHitServicesPath, true); result.AddExtraAssembly(newHitServicesPath); instrumentedAssembly.AddLocation( @@ -133,8 +136,8 @@ private void VisitAssemblyGroup( result.AddInstrumentedAssembly(instrumentedAssembly); - File.Delete(instrumentedAssembly.TempAssemblyFile); - File.Delete(instrumentedAssembly.TempPdbFile); + _fileSystem.File.Delete(instrumentedAssembly.TempAssemblyFile); + _fileSystem.File.Delete(instrumentedAssembly.TempPdbFile); } } } diff --git a/src/MiniCover.Core/Instrumentation/Uninstrumenter.cs b/src/MiniCover.Core/Instrumentation/Uninstrumenter.cs index 9ab7c96ec2..0e4def0b61 100644 --- a/src/MiniCover.Core/Instrumentation/Uninstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/Uninstrumenter.cs @@ -24,16 +24,16 @@ public void Execute(InstrumentationResult result) { foreach (var assemblyLocation in assembly.Locations) { - if (File.Exists(assemblyLocation.BackupFile)) + if (_fileSystem.File.Exists(assemblyLocation.BackupFile)) { - File.Copy(assemblyLocation.BackupFile, assemblyLocation.File, true); - File.Delete(assemblyLocation.BackupFile); + _fileSystem.File.Copy(assemblyLocation.BackupFile, assemblyLocation.File, true); + _fileSystem.File.Delete(assemblyLocation.BackupFile); } - if (File.Exists(assemblyLocation.BackupPdbFile)) + if (_fileSystem.File.Exists(assemblyLocation.BackupPdbFile)) { - File.Copy(assemblyLocation.BackupPdbFile, assemblyLocation.PdbFile, true); - File.Delete(assemblyLocation.BackupPdbFile); + _fileSystem.File.Copy(assemblyLocation.BackupPdbFile, assemblyLocation.PdbFile, true); + _fileSystem.File.Delete(assemblyLocation.BackupPdbFile); } var assemblyDirectory = _fileSystem.FileInfo.FromFileName(assemblyLocation.File).Directory; @@ -46,9 +46,9 @@ public void Execute(InstrumentationResult result) foreach (var extraAssembly in result.ExtraAssemblies) { - if (File.Exists(extraAssembly)) + if (_fileSystem.File.Exists(extraAssembly)) { - File.Delete(extraAssembly); + _fileSystem.File.Delete(extraAssembly); } } } diff --git a/src/MiniCover.Reports/Coveralls/CoverallsReport.cs b/src/MiniCover.Reports/Coveralls/CoverallsReport.cs index 36328768bf..54bf9fa332 100644 --- a/src/MiniCover.Reports/Coveralls/CoverallsReport.cs +++ b/src/MiniCover.Reports/Coveralls/CoverallsReport.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.IO.Abstractions; using System.Linq; using System.Net.Http; using System.Security.Cryptography; @@ -21,10 +22,14 @@ public class CoverallsReport : ICoverallsReport private const string coverallsJobsUrl = "https://coveralls.io/api/v1/jobs"; private readonly IHitsReader _hitsReader; + private readonly IFileSystem _fileSystem; - public CoverallsReport(IHitsReader hitsReader) + public CoverallsReport( + IHitsReader hitsReader, + IFileSystem fileSystem) { _hitsReader = hitsReader; + _fileSystem = fileSystem; } public virtual async Task Execute(InstrumentationResult result, @@ -86,13 +91,13 @@ public virtual async Task Execute(InstrumentationResult result, { var sourceFile = Path.Combine(result.SourcePath, file.Path); - if (!File.Exists(sourceFile)) + if (!_fileSystem.File.Exists(sourceFile)) { System.Console.WriteLine($"File not found: {sourceFile}"); continue; } - var sourceLines = File.ReadAllLines(sourceFile); + var sourceLines = _fileSystem.File.ReadAllLines(sourceFile); var hitsPerLine = file.Sequences .GroupByMany(f => f.GetLines()) @@ -122,17 +127,17 @@ public virtual async Task Execute(InstrumentationResult result, if (!string.IsNullOrWhiteSpace(output)) { - File.WriteAllText(output, coverallsJson); + _fileSystem.File.WriteAllText(output, coverallsJson); } return await Post(coverallsJson); } - private static string ComputeSourceDigest(string sourceFile) + private string ComputeSourceDigest(string sourceFile) { using (var md5 = MD5.Create()) { - using (var stream = File.OpenRead(sourceFile)) + using (var stream = _fileSystem.File.OpenRead(sourceFile)) { var hash = md5.ComputeHash(stream); return Convert.ToBase64String(hash); diff --git a/src/MiniCover.Reports/Html/HtmlReport.cs b/src/MiniCover.Reports/Html/HtmlReport.cs index 08e35100be..b4f766dfe0 100644 --- a/src/MiniCover.Reports/Html/HtmlReport.cs +++ b/src/MiniCover.Reports/Html/HtmlReport.cs @@ -16,20 +16,23 @@ public class HtmlReport : IHtmlReport private readonly IHitsReader _hitsReader; private readonly ISummaryFactory _summaryFactory; private readonly IHtmlSourceFileReport _htmlSourceFileReport; + private readonly IFileSystem _fileSystem; public HtmlReport( IHitsReader hitsReader, ISummaryFactory summaryFactory, - IHtmlSourceFileReport htmlSourceFileReport) + IHtmlSourceFileReport htmlSourceFileReport, + IFileSystem fileSystem) { _hitsReader = hitsReader; _summaryFactory = summaryFactory; _htmlSourceFileReport = htmlSourceFileReport; + _fileSystem = fileSystem; } public virtual int Execute(InstrumentationResult result, IDirectoryInfo output, float threshold, bool noFail) { - Directory.CreateDirectory(output.FullName); + _fileSystem.Directory.CreateDirectory(output.FullName); var hitsInfo = _hitsReader.TryReadFromDirectory(result.HitsPath); diff --git a/src/MiniCover.Reports/Html/HtmlSourceFileReport.cs b/src/MiniCover.Reports/Html/HtmlSourceFileReport.cs index e8ba5f1afe..af75800481 100644 --- a/src/MiniCover.Reports/Html/HtmlSourceFileReport.cs +++ b/src/MiniCover.Reports/Html/HtmlSourceFileReport.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.IO.Abstractions; using System.Linq; using System.Net; using MiniCover.Core.Hits; @@ -13,10 +14,14 @@ namespace MiniCover.Reports.Html public class HtmlSourceFileReport : IHtmlSourceFileReport { private readonly ISummaryFactory _summaryFactory; + private readonly IFileSystem _fileSystem; - public HtmlSourceFileReport(ISummaryFactory summaryFactory) + public HtmlSourceFileReport( + ISummaryFactory summaryFactory, + IFileSystem fileSystem) { _summaryFactory = summaryFactory; + _fileSystem = fileSystem; } public void Generate( @@ -28,7 +33,7 @@ public void Generate( { var lines = File.ReadAllLines(Path.Combine(result.SourcePath, sourceFile.Path)); - Directory.CreateDirectory(Path.GetDirectoryName(outputFile)); + _fileSystem.Directory.CreateDirectory(Path.GetDirectoryName(outputFile)); var summary = _summaryFactory.CalculateFilesSummary(new[] { sourceFile }, hitsInfo, threshold); diff --git a/src/MiniCover.Reports/NCover/NCoverReport.cs b/src/MiniCover.Reports/NCover/NCoverReport.cs index 669f369b42..5c42001dcd 100644 --- a/src/MiniCover.Reports/NCover/NCoverReport.cs +++ b/src/MiniCover.Reports/NCover/NCoverReport.cs @@ -11,10 +11,14 @@ namespace MiniCover.Reports.NCover public class NCoverReport : INCoverReport { private readonly IHitsReader _hitsReader; + private readonly IFileSystem _fileSystem; - public NCoverReport(IHitsReader hitsReader) + public NCoverReport( + IHitsReader hitsReader, + IFileSystem fileSystem) { _hitsReader = hitsReader; + _fileSystem = fileSystem; } public void Execute(InstrumentationResult result, IFileInfo output) @@ -92,7 +96,7 @@ public void Execute(InstrumentationResult result, IFileInfo output) document.Add(coverageElement); output.Directory.Create(); - File.WriteAllText(output.FullName, document.ToString()); + _fileSystem.File.WriteAllText(output.FullName, document.ToString()); } } } \ No newline at end of file diff --git a/src/MiniCover.Reports/OpenCover/OpenCoverReport.cs b/src/MiniCover.Reports/OpenCover/OpenCoverReport.cs index 8e11a97b91..b6e00d90ab 100644 --- a/src/MiniCover.Reports/OpenCover/OpenCoverReport.cs +++ b/src/MiniCover.Reports/OpenCover/OpenCoverReport.cs @@ -12,10 +12,14 @@ namespace MiniCover.Reports.OpenCover public class OpenCoverReport : IOpenCoverReport { private readonly IHitsReader _hitsReader; + private readonly IFileSystem _fileSystem; - public OpenCoverReport(IHitsReader hitsReader) + public OpenCoverReport( + IHitsReader hitsReader, + IFileSystem fileSystem) { _hitsReader = hitsReader; + _fileSystem = fileSystem; } public void Execute(InstrumentationResult result, IFileInfo output) @@ -148,7 +152,7 @@ public void Execute(InstrumentationResult result, IFileInfo output) document.Add(coverageElement); output.Directory.Create(); - File.WriteAllText(output.FullName, document.ToString()); + _fileSystem.File.WriteAllText(output.FullName, document.ToString()); } } } \ No newline at end of file diff --git a/tests/MiniCover.Core.UnitTests/TestHelpers/InstrumentationExtensions.cs b/tests/MiniCover.Core.UnitTests/TestHelpers/InstrumentationExtensions.cs index 31638ba01d..1a57668d76 100644 --- a/tests/MiniCover.Core.UnitTests/TestHelpers/InstrumentationExtensions.cs +++ b/tests/MiniCover.Core.UnitTests/TestHelpers/InstrumentationExtensions.cs @@ -22,8 +22,8 @@ public static class InstrumentationExtensions public static AssemblyDefinition ToDefinition(this Assembly assembly) { var assemblyFile = _fileSystem.FileInfo.FromFileName(assembly.Location); - var depsJsonUtils = new DepsJsonUtils(new FileSystem()); - var resolver = new CustomAssemblyResolver(assemblyFile.Directory, NullLogger.Instance, depsJsonUtils); + var depsJsonUtils = new DepsJsonUtils(_fileSystem); + var resolver = new CustomAssemblyResolver(assemblyFile.Directory, depsJsonUtils, _fileSystem, NullLogger.Instance); var readerParameters = new ReaderParameters { ReadSymbols = true, AssemblyResolver = resolver }; return AssemblyDefinition.ReadAssembly(assemblyFile.FullName, readerParameters); } @@ -100,7 +100,7 @@ private static InstrumentationContext CreateInstrumentationContext(IEnumerable.Instance, fileReader); return methodInstrumenter; } From 94755a686663f803dc87c8c35093879eec40ac51 Mon Sep 17 00:00:00 2001 From: Lucas Lara Date: Wed, 16 Dec 2020 21:32:27 +0100 Subject: [PATCH 5/6] Rename some methods and move DI into libraries --- .../Instrumentation/AssemblyInstrumenter.cs | 26 ++++++------ .../Instrumentation/CustomAssemblyResolver.cs | 4 +- .../Instrumentation/IAssemblyInstrumenter.cs | 10 +++++ .../Instrumentation/IInstrumenter.cs | 9 ++++ .../Instrumentation/IMethodInstrumenter.cs | 10 +++++ .../Instrumentation/ITypeInstrumenter.cs | 10 +++++ .../Instrumentation/IUninstrumenter.cs | 2 +- .../Instrumentation/Instrumenter.cs | 8 ++-- .../Instrumentation/MethodInstrumenter.cs | 13 ++---- .../Instrumentation/TypeInstrumenter.cs | 6 +-- .../Instrumentation/Uninstrumenter.cs | 2 +- ...iniCoverCoreServiceCollectionExtensions.cs | 30 ++++++++++++++ src/MiniCover.Core/Utils/PathUtils.cs | 23 +++++++++++ .../Coveralls/CoverallsReport.cs | 2 +- ...CoverReportsServiceCollectionExtensions.cs | 34 +++++++++++++++ src/MiniCover.Reports/Utils/PathUtils.cs | 23 ----------- .../CommandLine/Commands/InstrumentCommand.cs | 8 ++-- .../Commands/UninstrumentCommand.cs | 2 +- src/MiniCover/Program.cs | 41 ++----------------- .../Commands/UninstrumentCommandTests.cs | 2 +- 20 files changed, 163 insertions(+), 102 deletions(-) create mode 100644 src/MiniCover.Core/Instrumentation/IAssemblyInstrumenter.cs create mode 100644 src/MiniCover.Core/Instrumentation/IInstrumenter.cs create mode 100644 src/MiniCover.Core/Instrumentation/IMethodInstrumenter.cs create mode 100644 src/MiniCover.Core/Instrumentation/ITypeInstrumenter.cs create mode 100644 src/MiniCover.Core/MiniCoverCoreServiceCollectionExtensions.cs create mode 100644 src/MiniCover.Core/Utils/PathUtils.cs create mode 100644 src/MiniCover.Reports/MiniCoverReportsServiceCollectionExtensions.cs delete mode 100644 src/MiniCover.Reports/Utils/PathUtils.cs diff --git a/src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs b/src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs index ff33938158..108689b291 100644 --- a/src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/AssemblyInstrumenter.cs @@ -3,6 +3,7 @@ using System.IO.Abstractions; using System.Linq; using System.Reflection; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using MiniCover.Core.Extensions; using MiniCover.Core.Model; @@ -12,28 +13,25 @@ namespace MiniCover.Core.Instrumentation { - public class AssemblyInstrumenter + public class AssemblyInstrumenter : IAssemblyInstrumenter { private static readonly ConstructorInfo instrumentedAttributeConstructor = typeof(InstrumentedAttribute).GetConstructors().First(); - private readonly TypeInstrumenter _typeInstrumenter; - private readonly ILogger _logger; - private readonly ILogger _assemblyResolverLogger; - private readonly DepsJsonUtils _depsJsonUtils; + private readonly ITypeInstrumenter _typeInstrumenter; private readonly IFileSystem _fileSystem; + private readonly IServiceProvider _serviceProvider; + private readonly ILogger _logger; public AssemblyInstrumenter( - TypeInstrumenter typeInstrumenter, - ILogger logger, - ILogger assemblyResolverLogger, - DepsJsonUtils depsJsonUtils, - IFileSystem fileSystem) + ITypeInstrumenter typeInstrumenter, + IFileSystem fileSystem, + IServiceProvider serviceProvider, + ILogger logger) { _typeInstrumenter = typeInstrumenter; - _logger = logger; - _assemblyResolverLogger = assemblyResolverLogger; - _depsJsonUtils = depsJsonUtils; _fileSystem = fileSystem; + _serviceProvider = serviceProvider; + _logger = logger; } public InstrumentedAssembly InstrumentAssemblyFile( @@ -42,7 +40,7 @@ public InstrumentedAssembly InstrumentAssemblyFile( { var assemblyDirectory = assemblyFile.Directory; - var resolver = new CustomAssemblyResolver(assemblyDirectory, _depsJsonUtils, _fileSystem, _assemblyResolverLogger); + var resolver = ActivatorUtilities.CreateInstance(_serviceProvider, assemblyDirectory); _logger.LogTrace("Assembly resolver search directories: {directories}", new object[] { resolver.GetSearchDirectories() }); diff --git a/src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs b/src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs index abb762b121..09daf78bd4 100644 --- a/src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs +++ b/src/MiniCover.Core/Instrumentation/CustomAssemblyResolver.cs @@ -13,14 +13,14 @@ namespace MiniCover.Core.Instrumentation public class CustomAssemblyResolver : DefaultAssemblyResolver { private readonly DependencyContext _dependencyContext; - private readonly ILogger _logger; private readonly IFileSystem _fileSystem; + private readonly ILogger _logger; public CustomAssemblyResolver( IDirectoryInfo assemblyDirectory, DepsJsonUtils depsJsonUtils, IFileSystem fileSystem, - ILogger logger) + ILogger logger) { _fileSystem = fileSystem; _logger = logger; diff --git a/src/MiniCover.Core/Instrumentation/IAssemblyInstrumenter.cs b/src/MiniCover.Core/Instrumentation/IAssemblyInstrumenter.cs new file mode 100644 index 0000000000..64bbe1bf4c --- /dev/null +++ b/src/MiniCover.Core/Instrumentation/IAssemblyInstrumenter.cs @@ -0,0 +1,10 @@ +using System.IO.Abstractions; +using MiniCover.Core.Model; + +namespace MiniCover.Core.Instrumentation +{ + public interface IAssemblyInstrumenter + { + InstrumentedAssembly InstrumentAssemblyFile(InstrumentationContext context, IFileInfo assemblyFile); + } +} \ No newline at end of file diff --git a/src/MiniCover.Core/Instrumentation/IInstrumenter.cs b/src/MiniCover.Core/Instrumentation/IInstrumenter.cs new file mode 100644 index 0000000000..6364acb914 --- /dev/null +++ b/src/MiniCover.Core/Instrumentation/IInstrumenter.cs @@ -0,0 +1,9 @@ +using MiniCover.Core.Model; + +namespace MiniCover.Core.Instrumentation +{ + public interface IInstrumenter + { + InstrumentationResult Instrument(InstrumentationContext context); + } +} \ No newline at end of file diff --git a/src/MiniCover.Core/Instrumentation/IMethodInstrumenter.cs b/src/MiniCover.Core/Instrumentation/IMethodInstrumenter.cs new file mode 100644 index 0000000000..42d3c07486 --- /dev/null +++ b/src/MiniCover.Core/Instrumentation/IMethodInstrumenter.cs @@ -0,0 +1,10 @@ +using MiniCover.Core.Model; +using Mono.Cecil; + +namespace MiniCover.Core.Instrumentation +{ + public interface IMethodInstrumenter + { + void InstrumentMethod(InstrumentationContext context, bool instrumentInstructions, MethodDefinition methodDefinition, InstrumentedAssembly instrumentedAssembly); + } +} \ No newline at end of file diff --git a/src/MiniCover.Core/Instrumentation/ITypeInstrumenter.cs b/src/MiniCover.Core/Instrumentation/ITypeInstrumenter.cs new file mode 100644 index 0000000000..ccf141bf7d --- /dev/null +++ b/src/MiniCover.Core/Instrumentation/ITypeInstrumenter.cs @@ -0,0 +1,10 @@ +using MiniCover.Core.Model; +using Mono.Cecil; + +namespace MiniCover.Core.Instrumentation +{ + public interface ITypeInstrumenter + { + void InstrumentType(InstrumentationContext context, TypeDefinition typeDefinition, InstrumentedAssembly instrumentedAssembly); + } +} \ No newline at end of file diff --git a/src/MiniCover.Core/Instrumentation/IUninstrumenter.cs b/src/MiniCover.Core/Instrumentation/IUninstrumenter.cs index 42de866f74..854dae928e 100644 --- a/src/MiniCover.Core/Instrumentation/IUninstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/IUninstrumenter.cs @@ -4,6 +4,6 @@ namespace MiniCover.Core.Instrumentation { public interface IUninstrumenter { - void Execute(InstrumentationResult result); + void Uninstrument(InstrumentationResult result); } } \ No newline at end of file diff --git a/src/MiniCover.Core/Instrumentation/Instrumenter.cs b/src/MiniCover.Core/Instrumentation/Instrumenter.cs index 88aacd8d3f..df41fac1d4 100644 --- a/src/MiniCover.Core/Instrumentation/Instrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/Instrumenter.cs @@ -12,11 +12,11 @@ namespace MiniCover.Core.Instrumentation { - public class Instrumenter + public class Instrumenter : IInstrumenter { private static readonly Assembly hitServicesAssembly = typeof(HitService).Assembly; - private readonly AssemblyInstrumenter _assemblyInstrumenter; + private readonly IAssemblyInstrumenter _assemblyInstrumenter; private readonly DepsJsonUtils _depsJsonUtils; private readonly IFileSystem _fileSystem; private readonly ILogger _logger; @@ -27,7 +27,7 @@ public class Instrumenter .ToArray(); public Instrumenter( - AssemblyInstrumenter assemblyInstrumenter, + IAssemblyInstrumenter assemblyInstrumenter, DepsJsonUtils depsJsonUtils, IFileSystem fileSystem, ILogger logger) @@ -38,7 +38,7 @@ public Instrumenter( _logger = logger; } - public InstrumentationResult Execute(InstrumentationContext context) + public InstrumentationResult Instrument(InstrumentationContext context) { context.Workdir = context.Workdir; diff --git a/src/MiniCover.Core/Instrumentation/MethodInstrumenter.cs b/src/MiniCover.Core/Instrumentation/MethodInstrumenter.cs index 67f8b0d36e..079fc0a374 100644 --- a/src/MiniCover.Core/Instrumentation/MethodInstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/MethodInstrumenter.cs @@ -8,6 +8,7 @@ using MiniCover.Core.FileSystem; using MiniCover.Core.Instrumentation.Patterns; using MiniCover.Core.Model; +using MiniCover.Core.Utils; using MiniCover.HitServices; using Mono.Cecil; using Mono.Cecil.Cil; @@ -15,7 +16,7 @@ namespace MiniCover.Core.Instrumentation { - public class MethodInstrumenter + public class MethodInstrumenter : IMethodInstrumenter { private static readonly Type hitServiceType = typeof(HitService); private static readonly Type methodScopeType = typeof(MethodScope); @@ -240,15 +241,7 @@ private IEnumerable GetExclusions(IList instructions) private static string GetSourceRelativePath(InstrumentationContext context, string path) { - var file = new Uri(path); - var folder = new Uri(context.Workdir.FullName); - string relativePath = - Uri.UnescapeDataString( - folder.MakeRelativeUri(file) - .ToString() - .Replace('/', Path.DirectorySeparatorChar) - ); - return relativePath; + return PathUtils.GetRelativePath(context.Workdir.FullName, path); } } } diff --git a/src/MiniCover.Core/Instrumentation/TypeInstrumenter.cs b/src/MiniCover.Core/Instrumentation/TypeInstrumenter.cs index ac6284871c..16d671a800 100644 --- a/src/MiniCover.Core/Instrumentation/TypeInstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/TypeInstrumenter.cs @@ -5,11 +5,11 @@ namespace MiniCover.Core.Instrumentation { - public class TypeInstrumenter + public class TypeInstrumenter : ITypeInstrumenter { - private readonly MethodInstrumenter _methodInstrumenter; + private readonly IMethodInstrumenter _methodInstrumenter; - public TypeInstrumenter(MethodInstrumenter methodInstrumenter) + public TypeInstrumenter(IMethodInstrumenter methodInstrumenter) { _methodInstrumenter = methodInstrumenter; } diff --git a/src/MiniCover.Core/Instrumentation/Uninstrumenter.cs b/src/MiniCover.Core/Instrumentation/Uninstrumenter.cs index 0e4def0b61..05c4c64ca0 100644 --- a/src/MiniCover.Core/Instrumentation/Uninstrumenter.cs +++ b/src/MiniCover.Core/Instrumentation/Uninstrumenter.cs @@ -18,7 +18,7 @@ public Uninstrumenter( _fileSystem = fileSystem; } - public void Execute(InstrumentationResult result) + public void Uninstrument(InstrumentationResult result) { foreach (var assembly in result.Assemblies) { diff --git a/src/MiniCover.Core/MiniCoverCoreServiceCollectionExtensions.cs b/src/MiniCover.Core/MiniCoverCoreServiceCollectionExtensions.cs new file mode 100644 index 0000000000..ab51e8739e --- /dev/null +++ b/src/MiniCover.Core/MiniCoverCoreServiceCollectionExtensions.cs @@ -0,0 +1,30 @@ +using System.IO.Abstractions; +using Microsoft.Extensions.DependencyInjection.Extensions; +using MiniCover.Core.FileSystem; +using MiniCover.Core.Hits; +using MiniCover.Core.Instrumentation; +using MiniCover.Core.Utils; + +namespace Microsoft.Extensions.DependencyInjection +{ + public static class ServiceCollectionExtensions + { + public static IServiceCollection AddMiniCoverCore(this IServiceCollection services) + { + services.AddMemoryCache(); + + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + + return services; + } + } +} diff --git a/src/MiniCover.Core/Utils/PathUtils.cs b/src/MiniCover.Core/Utils/PathUtils.cs new file mode 100644 index 0000000000..2684af3ee9 --- /dev/null +++ b/src/MiniCover.Core/Utils/PathUtils.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; + +namespace MiniCover.Core.Utils +{ + public static class PathUtils + { + public static string GetRelativePath(string folder, string file) + { + if (!folder.EndsWith(Path.DirectorySeparatorChar.ToString()) + && !folder.EndsWith(Path.AltDirectorySeparatorChar.ToString())) + folder += Path.DirectorySeparatorChar; + + var baseUri = new Uri(folder); + var fullUri = new Uri(file); + + return Uri.UnescapeDataString( + baseUri.MakeRelativeUri(fullUri) + .ToString() + .Replace('/', Path.DirectorySeparatorChar)); + } + } +} \ No newline at end of file diff --git a/src/MiniCover.Reports/Coveralls/CoverallsReport.cs b/src/MiniCover.Reports/Coveralls/CoverallsReport.cs index 54bf9fa332..d5c7137933 100644 --- a/src/MiniCover.Reports/Coveralls/CoverallsReport.cs +++ b/src/MiniCover.Reports/Coveralls/CoverallsReport.cs @@ -10,8 +10,8 @@ using MiniCover.Core.Extensions; using MiniCover.Core.Hits; using MiniCover.Core.Model; +using MiniCover.Core.Utils; using MiniCover.Reports.Coveralls.Models; -using MiniCover.Reports.Utils; using Newtonsoft.Json; using Newtonsoft.Json.Linq; diff --git a/src/MiniCover.Reports/MiniCoverReportsServiceCollectionExtensions.cs b/src/MiniCover.Reports/MiniCoverReportsServiceCollectionExtensions.cs new file mode 100644 index 0000000000..e491299fd5 --- /dev/null +++ b/src/MiniCover.Reports/MiniCoverReportsServiceCollectionExtensions.cs @@ -0,0 +1,34 @@ +using System.IO.Abstractions; +using Microsoft.Extensions.DependencyInjection.Extensions; +using MiniCover.Reports.Clover; +using MiniCover.Reports.Cobertura; +using MiniCover.Reports.Console; +using MiniCover.Reports.Coveralls; +using MiniCover.Reports.Helpers; +using MiniCover.Reports.Html; +using MiniCover.Reports.NCover; +using MiniCover.Reports.OpenCover; + +namespace Microsoft.Extensions.DependencyInjection +{ + public static class ServiceCollectionExtensions + { + public static IServiceCollection AddMiniCoverReports(this IServiceCollection services) + { + services.TryAddSingleton(); + + services.TryAddSingleton(); + + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + + return services; + } + } +} diff --git a/src/MiniCover.Reports/Utils/PathUtils.cs b/src/MiniCover.Reports/Utils/PathUtils.cs deleted file mode 100644 index c13fe3a898..0000000000 --- a/src/MiniCover.Reports/Utils/PathUtils.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; - -namespace MiniCover.Reports.Utils -{ - public static class PathUtils - { - public static string GetRelativePath(string basePath, string fullPath) - { - // Require trailing backslash for path - if (!basePath.EndsWith("\\")) - basePath += "\\"; - - var baseUri = new Uri(basePath); - var fullUri = new Uri(fullPath); - - var relativeUri = baseUri.MakeRelativeUri(fullUri); - - // Uri's use forward slashes so convert back to backward slashes - return relativeUri.ToString().Replace("/", "\\"); - - } - } -} \ No newline at end of file diff --git a/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs b/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs index c67a74eb45..d18cc48ec7 100644 --- a/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs +++ b/src/MiniCover/CommandLine/Commands/InstrumentCommand.cs @@ -28,6 +28,7 @@ public class InstrumentCommand : ICommand private readonly ExcludeTestsPatternOption _excludeTestsOption; private readonly HitsDirectoryOption _hitsDirectoryOption; private readonly CoverageFileOption _coverageFileOption; + private readonly IInstrumenter _instrumenter; public InstrumentCommand(IServiceProvider serviceProvider, VerbosityOption verbosityOption, @@ -40,7 +41,8 @@ public InstrumentCommand(IServiceProvider serviceProvider, IncludeTestsPatternOption includeTestsOption, ExcludeTestsPatternOption excludeTestsOption, HitsDirectoryOption hitsDirectoryOption, - CoverageFileOption coverageFileOption) + CoverageFileOption coverageFileOption, + IInstrumenter instrumenter) { _serviceProvider = serviceProvider; _verbosityOption = verbosityOption; @@ -54,6 +56,7 @@ public InstrumentCommand(IServiceProvider serviceProvider, _excludeTestsOption = excludeTestsOption; _hitsDirectoryOption = hitsDirectoryOption; _coverageFileOption = coverageFileOption; + _instrumenter = instrumenter; } public string CommandName => "instrument"; @@ -94,8 +97,7 @@ public Task Execute() Workdir = _workingDirectoryOption.DirectoryInfo }; - var instrumenter = _serviceProvider.GetService(); - var result = instrumenter.Execute(instrumentationContext); + var result = _instrumenter.Instrument(instrumentationContext); var coverageFile = _coverageFileOption.FileInfo; SaveCoverageFile(coverageFile, result); diff --git a/src/MiniCover/CommandLine/Commands/UninstrumentCommand.cs b/src/MiniCover/CommandLine/Commands/UninstrumentCommand.cs index d3421d10f8..f68c4730c4 100644 --- a/src/MiniCover/CommandLine/Commands/UninstrumentCommand.cs +++ b/src/MiniCover/CommandLine/Commands/UninstrumentCommand.cs @@ -36,7 +36,7 @@ public UninstrumentCommand( public Task Execute() { var result = _coverageLoadedFileOption.Result; - _uninstrumenter.Execute(result); + _uninstrumenter.Uninstrument(result); return Task.FromResult(0); } } diff --git a/src/MiniCover/Program.cs b/src/MiniCover/Program.cs index 8cd0817f75..46af9e4ffd 100644 --- a/src/MiniCover/Program.cs +++ b/src/MiniCover/Program.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.IO.Abstractions; using System.Reflection; using System.Text; using Microsoft.Extensions.CommandLineUtils; @@ -10,20 +9,8 @@ using MiniCover.CommandLine.Commands; using MiniCover.CommandLine.Options; using MiniCover.Commands; -using MiniCover.Core.FileSystem; -using MiniCover.Core.Hits; -using MiniCover.Core.Instrumentation; -using MiniCover.Core.Utils; using MiniCover.Exceptions; using MiniCover.IO; -using MiniCover.Reports.Clover; -using MiniCover.Reports.Cobertura; -using MiniCover.Reports.Console; -using MiniCover.Reports.Coveralls; -using MiniCover.Reports.Helpers; -using MiniCover.Reports.Html; -using MiniCover.Reports.NCover; -using MiniCover.Reports.OpenCover; namespace MiniCover { @@ -125,13 +112,14 @@ private static IServiceProvider ConfigureServices(IOutput output) { var services = new ServiceCollection(); - services.AddSingleton(output); + services.AddSingleton(output); services.AddLogging(l => l .SetMinimumLevel(LogLevel.Trace) .AddProvider(new OutputLoggerProvider(output))); - services.AddMemoryCache(); + services.AddMiniCoverCore(); + services.AddMiniCoverReports(); services.AddTransient(); services.AddTransient(); @@ -169,29 +157,6 @@ private static IServiceProvider ConfigureServices(IOutput output) services.AddTransient(); services.AddTransient(); - services.AddSingleton(); - services.AddSingleton(); - - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - return services.BuildServiceProvider(); } } diff --git a/tests/MiniCover.UnitTests/CommandLine/Commands/UninstrumentCommandTests.cs b/tests/MiniCover.UnitTests/CommandLine/Commands/UninstrumentCommandTests.cs index cf3a6b6be3..1fe5a1b125 100644 --- a/tests/MiniCover.UnitTests/CommandLine/Commands/UninstrumentCommandTests.cs +++ b/tests/MiniCover.UnitTests/CommandLine/Commands/UninstrumentCommandTests.cs @@ -37,7 +37,7 @@ public async Task Execute() var result = new InstrumentationResult(); _coverageLoadedFileOption.SetupGet(x => x.Result).Returns(result); - _uninstrumenter.Setup(x => x.Execute(result)); + _uninstrumenter.Setup(x => x.Uninstrument(result)); var exitCode = await Sut.Execute(); exitCode.Should().Be(0); From 8a477ab5f75e5e0fc341d66eefeefec98b10a8ff Mon Sep 17 00:00:00 2001 From: Lucas Lara Date: Wed, 16 Dec 2020 21:47:34 +0100 Subject: [PATCH 6/6] Update readme with libraries information --- README.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/README.md b/README.md index d8f5782b19..a4d70bc151 100644 --- a/README.md +++ b/README.md @@ -128,3 +128,47 @@ coverage-html coverage-hits coverage.json ``` + +## Libraries + +When using MiniCover libraries: + +- use dependency injection to create instances +- use only the main interfaces listed on each package below + +By doing that, you reduce the risk of being impacted by future MiniCover changes. + +### MiniCover.Core + +Main MiniCover operations. + +Dependency injection configuration: +```C# +services.AddMiniCoverCore(); +``` + +Main interfaces: +- IInstrumenter +- IUninstrumenter +- IHitsReader +- IHitsResetter + +### MiniCover.Reports + +MiniCover reports. + +Dependency injection configuration: +```C# +services.AddMiniCoverCore(); +services.AddMiniCoverReports(); +``` + +Main interfaces: +- ICloverReport +- ICoberturaReport +- IConsoleReport +- ICoverallsReport +- IHtmlReport +- IHtmlSourceFileReport +- INCoverReport +- IOpenCoverReport \ No newline at end of file