Browse Source

Add code coverage addin.

Extended TestExecutionOptions to allow post processing of the
NUnit ProcessStartInfo.
Drop down button in Code Coverage pad is not working.
Commented out some unit tests and code temporarily.
newNRvisualizers
Matt Ward 13 years ago
parent
commit
065f55350f
  1. 22
      SharpDevelop.Tests.sln
  2. 11
      SharpDevelop.sln
  3. 26
      src/AddIns/Analysis/CodeCoverage/CodeCoverage.sln
  4. 21
      src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.csproj
  5. 5
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageControl.cs
  6. 6
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageHighlighter.cs
  7. 2
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptions.cs
  8. 3
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoveragePad.cs
  9. 47
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageResultsReader.cs
  10. 22
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageService.cs
  11. 220
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageTestRunner.cs
  12. 80
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageTestRunnerContext.cs
  13. 32
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageTestRunnerFactory.cs
  14. 24
      src/AddIns/Analysis/CodeCoverage/Project/Src/ICodeCoverageTestRunnerFactory.cs
  15. 32
      src/AddIns/Analysis/CodeCoverage/Project/Src/OpenCoverApplication.cs
  16. 16
      src/AddIns/Analysis/CodeCoverage/Project/Src/RunAllTestsWithCodeCoverageCommand.cs
  17. 142
      src/AddIns/Analysis/CodeCoverage/Project/Src/RunTestWithCodeCoverageCommand.cs
  18. 12
      src/AddIns/Analysis/CodeCoverage/Project/Src/ShowDisplayOptionsDropDown.cs
  19. 14
      src/AddIns/Analysis/CodeCoverage/Test/CodeCoverage.Tests.csproj
  20. 2
      src/AddIns/Analysis/CodeCoverage/Test/Coverage/CodeCoverageResultsMissingFileIdTestFixture.cs
  21. 6
      src/AddIns/Analysis/CodeCoverage/Test/Coverage/OpenCoverSettingsFactoryTests.cs
  22. 9
      src/AddIns/Analysis/CodeCoverage/Test/Coverage/OpenCoverSettingsTestFixture.cs
  23. 4
      src/AddIns/Analysis/CodeCoverage/Test/Coverage/RemoveTaskMarkerTests.cs
  24. 6
      src/AddIns/Analysis/CodeCoverage/Test/Coverage/SolutionCodeCoverageResultsTests.cs
  25. 9
      src/AddIns/Analysis/CodeCoverage/Test/Highlighting/AddCodeCoverageMarkersTestFixture.cs
  26. 21
      src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersCoverMultipleLinesTestFixture.cs
  27. 12
      src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersCoverTwoLinesTestFixture.cs
  28. 8
      src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersInvalidEndColumnTestFixture.cs
  29. 8
      src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersInvalidEndLineTestFixture.cs
  30. 8
      src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersInvalidStartColumnTestFixture.cs
  31. 8
      src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersInvalidStartLineTestFixture.cs
  32. 8
      src/AddIns/Analysis/CodeCoverage/Test/Highlighting/RemoveCodeCoverageMarkersTestFixture.cs
  33. 474
      src/AddIns/Analysis/CodeCoverage/Test/Testing/CodeCoverageTestRunnerTests.cs
  34. 66
      src/AddIns/Analysis/CodeCoverage/Test/Testing/OpenCoverApplicationTests.cs
  35. 544
      src/AddIns/Analysis/CodeCoverage/Test/Testing/RunTestWithCodeCoverageCommandTests.cs
  36. 82
      src/AddIns/Analysis/CodeCoverage/Test/Utils/DerivedCodeCoverageTestRunner.cs
  37. 118
      src/AddIns/Analysis/CodeCoverage/Test/Utils/DerivedRunTestWithCodeCoverageCommand.cs
  38. 80
      src/AddIns/Analysis/CodeCoverage/Test/Utils/MockCodeCoverageTestRunnerFactory.cs
  39. 2
      src/AddIns/Analysis/UnitTesting/NUnit/NUnitTestProject.cs
  40. 7
      src/AddIns/Analysis/UnitTesting/NUnit/NUnitTestRunner.cs
  41. 8
      src/AddIns/Analysis/UnitTesting/TestRunner/TestExecutionOptions.cs
  42. 10
      src/AddIns/Analysis/UnitTesting/TestRunner/TestProcessRunnerBase.cs
  43. 18
      src/AddIns/Analysis/UnitTesting/TestRunner/TestProcessRunnerBaseContext.cs
  44. 3
      src/Setup/Files.wxs
  45. 4
      src/Setup/Setup.wxs

22
SharpDevelop.Tests.sln

@ -199,6 +199,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\ @@ -199,6 +199,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Analysis\SourceAnalysis\SourceAnalysis.csproj", "DC88D67C-E6B5-4994-9FA9-D4AB0E162FB3"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "src\AddIns\Analysis\CodeCoverage\Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Analysis\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortSD4AddInToSD5", "samples\PortSD4AddInToSD5\PortSD4AddInToSD5.csproj", "{E2FD63DA-8478-4066-934C-DA82A852C83A}"
EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "src\Tools\Tools.build", "{3DF4060F-5EE0-41CF-8096-F27355FD5511}"
@ -787,6 +791,22 @@ Global @@ -787,6 +791,22 @@ Global
{56E98A01-8398-4A08-9578-C7337711A52B}.Release|Any CPU.ActiveCfg = Release|x86
{56E98A01-8398-4A08-9578-C7337711A52B}.Release|x86.Build.0 = Release|x86
{56E98A01-8398-4A08-9578-C7337711A52B}.Release|x86.ActiveCfg = Release|x86
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Debug|x86.Build.0 = Debug|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Debug|x86.ActiveCfg = Debug|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Release|Any CPU.Build.0 = Release|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Release|x86.Build.0 = Release|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Release|x86.ActiveCfg = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|x86.Build.0 = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|x86.ActiveCfg = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|Any CPU.Build.0 = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|x86.Build.0 = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -874,5 +894,7 @@ Global @@ -874,5 +894,7 @@ Global
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181} = {B3352C08-3CB4-4DD9-996F-B9DCE4356BB9}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {B3352C08-3CB4-4DD9-996F-B9DCE4356BB9}
DC88D67C-E6B5-4994-9FA9-D4AB0E162FB3 = {B3352C08-3CB4-4DD9-996F-B9DCE4356BB9}
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B} = {B3352C08-3CB4-4DD9-996F-B9DCE4356BB9}
{08CE9972-283B-44F4-82FA-966F7DFA6B7A} = {B3352C08-3CB4-4DD9-996F-B9DCE4356BB9}
EndGlobalSection
EndGlobal

11
SharpDevelop.sln

@ -167,6 +167,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\ @@ -167,6 +167,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Analysis\SourceAnalysis\SourceAnalysis.csproj", "44FA68C9-DAD1-4C3C-90BB-3435F0D1D128"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Analysis\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -657,6 +659,14 @@ Global @@ -657,6 +659,14 @@ Global
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|Any CPU.ActiveCfg = Release|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|x86.Build.0 = Release|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|x86.ActiveCfg = Release|x86
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|x86.Build.0 = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|x86.ActiveCfg = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|Any CPU.Build.0 = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|x86.Build.0 = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -729,6 +739,7 @@ Global @@ -729,6 +739,7 @@ Global
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
44FA68C9-DAD1-4C3C-90BB-3435F0D1D128 = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
{08CE9972-283B-44F4-82FA-966F7DFA6B7A} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E}
EndGlobalSection

26
src/AddIns/Analysis/CodeCoverage/CodeCoverage.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.2.1.8805
# SharpDevelop 4.3
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}"
@ -10,20 +10,20 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "..\..\. @@ -10,20 +10,20 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "..\..\.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "..\..\..\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "..\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "..\..\..\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "..\..\..\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting.Tests", "..\UnitTesting\Test\UnitTesting.Tests.csproj", "{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "..\..\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory", "..\..\..\Libraries\NRefactory\ICSharpCode.NRefactory\ICSharpCode.NRefactory.csproj", "{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "..\..\..\Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -46,10 +46,6 @@ Global @@ -46,10 +46,6 @@ Global
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Any CPU.Build.0 = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|Any CPU.Build.0 = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|Any CPU.Build.0 = Release|Any CPU
@ -58,10 +54,6 @@ Global @@ -58,10 +54,6 @@ Global
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|Any CPU.Build.0 = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|Any CPU.ActiveCfg = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Any CPU.Build.0 = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|Any CPU.Build.0 = Release|Any CPU
@ -74,5 +66,13 @@ Global @@ -74,5 +66,13 @@ Global
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|Any CPU.Build.0 = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}.Release|Any CPU.Build.0 = Release|Any CPU
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Release|Any CPU.Build.0 = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Release|Any CPU.ActiveCfg = Debug|Any CPU
EndGlobalSection
EndGlobal

21
src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.csproj

@ -15,11 +15,13 @@ @@ -15,11 +15,13 @@
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<RunCodeAnalysis>False</RunCodeAnalysis>
<NoWin32Manifest>False</NoWin32Manifest>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>..\..\..\..\..\AddIns\Analysis\CodeCoverage\</OutputPath>
@ -28,6 +30,7 @@ @@ -28,6 +30,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<OutputPath>..\..\..\..\..\AddIns\Analysis\CodeCoverage\</OutputPath>
@ -37,6 +40,9 @@ @@ -37,6 +40,9 @@
<DebugType>None</DebugType>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<Prefer32Bit>False</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
@ -81,6 +87,7 @@ @@ -81,6 +87,7 @@
<Compile Include="Src\CodeCoveragePropertyTreeNode.cs" />
<Compile Include="Src\CodeCoverageResults.cs" />
<Compile Include="Src\CodeCoverageMethod.cs" />
<Compile Include="Src\CodeCoverageResultsReader.cs" />
<Compile Include="Src\CodeCoverageSequencePoint.cs" />
<Compile Include="Src\CodeCoverageTestRunner.cs" />
<Compile Include="Src\CodeCoverageTestRunnerContext.cs" />
@ -130,6 +137,11 @@ @@ -130,6 +137,11 @@
<Name>ICSharpCode.AvalonEdit</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\ICSharpCode.NRefactory\ICSharpCode.NRefactory.csproj">
<Project>{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}</Project>
<Name>ICSharpCode.NRefactory</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
@ -165,11 +177,6 @@ @@ -165,11 +177,6 @@
<Name>UnitTesting</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Page Include="Src\CodeCoverageOptionsPanel.xaml" />

5
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageControl.cs

@ -14,6 +14,7 @@ using ICSharpCode.AvalonEdit.Editing; @@ -14,6 +14,7 @@ using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
@ -74,7 +75,7 @@ namespace ICSharpCode.CodeCoverage @@ -74,7 +75,7 @@ namespace ICSharpCode.CodeCoverage
showSourceCodePanel = value;
OnShowSourceCodePanelChanged();
UpdateDisplay();
DisplaySelectedItem(treeView.SelectedNode as CodeCoverageTreeNode);
DisplaySelectedItem(treeView.SelectedNode as CodeCoverageTreeNode);
}
}
}
@ -192,7 +193,7 @@ namespace ICSharpCode.CodeCoverage @@ -192,7 +193,7 @@ namespace ICSharpCode.CodeCoverage
if (Controls.Contains(toolStrip)) {
Controls.Remove(toolStrip);
}
Controls.Add(toolStrip);
Controls.Add(toolStrip);
}
void CodeCoverageTreeViewAfterSelect(object sender, TreeViewEventArgs e)

6
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageHighlighter.cs

@ -5,8 +5,10 @@ using System; @@ -5,8 +5,10 @@ using System;
using System.Collections.Generic;
using System.Windows.Media;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.WinForms;
namespace ICSharpCode.CodeCoverage
{
@ -71,9 +73,9 @@ namespace ICSharpCode.CodeCoverage @@ -71,9 +73,9 @@ namespace ICSharpCode.CodeCoverage
{
if (sequencePoint.Line <= 0 || sequencePoint.EndLine <= 0 || sequencePoint.Column <= 0 || sequencePoint.EndColumn <= 0) {
return false;
} else if (sequencePoint.Line > document.TotalNumberOfLines) {
} else if (sequencePoint.Line > document.LineCount) {
return false;
} else if (sequencePoint.EndLine > document.TotalNumberOfLines) {
} else if (sequencePoint.EndLine > document.LineCount) {
return false;
} else if (sequencePoint.Line == sequencePoint.EndLine && sequencePoint.Column > sequencePoint.EndColumn) {
return false;

2
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptions.cs

@ -27,7 +27,7 @@ namespace ICSharpCode.CodeCoverage @@ -27,7 +27,7 @@ namespace ICSharpCode.CodeCoverage
static CodeCoverageOptions()
{
properties = PropertyService.Get(OptionsProperty, new Properties());
properties = PropertyService.NestedProperties(OptionsProperty);
}
public static Properties Properties {

3
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoveragePad.cs

@ -2,9 +2,8 @@ @@ -2,9 +2,8 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.CodeCoverage
{

47
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageResultsReader.cs

@ -0,0 +1,47 @@ @@ -0,0 +1,47 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.IO;
namespace ICSharpCode.CodeCoverage
{
public class CodeCoverageResultsReader
{
List<string> fileNames = new List<string>();
IFileSystem fileSystem = new FileSystem();
List<string> missingFileNames = new List<string>();
public CodeCoverageResultsReader()
{
}
public void AddResultsFile(string fileName)
{
fileNames.Add(fileName);
}
public IEnumerable<CodeCoverageResults> GetResults()
{
foreach (string fileName in fileNames) {
if (fileSystem.FileExists(fileName)) {
yield return ReadCodeCoverageResults(fileName);
} else {
missingFileNames.Add(fileName);
}
}
}
CodeCoverageResults ReadCodeCoverageResults(string fileName)
{
TextReader reader = fileSystem.CreateTextReader(fileName);
return new CodeCoverageResults(reader);
}
public IEnumerable<string> GetMissingResultsFiles()
{
return missingFileNames;
}
}
}

22
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageService.cs

@ -1,11 +1,13 @@ @@ -1,11 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop.Editor;
using System;
using System.Collections.Generic;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.CodeCoverage
{
@ -20,7 +22,7 @@ namespace ICSharpCode.CodeCoverage @@ -20,7 +22,7 @@ namespace ICSharpCode.CodeCoverage
static CodeCoverageService()
{
WorkbenchSingleton.Workbench.ViewOpened += ViewOpened;
SD.Workbench.ViewOpened += ViewOpened;
ProjectService.SolutionLoaded += SolutionLoaded;
}
@ -110,17 +112,17 @@ namespace ICSharpCode.CodeCoverage @@ -110,17 +112,17 @@ namespace ICSharpCode.CodeCoverage
static void ShowCodeCoverage()
{
// Highlight any open files.
foreach (IViewContent view in WorkbenchSingleton.Workbench.ViewContentCollection) {
foreach (IViewContent view in SD.Workbench.ViewContentCollection) {
ShowCodeCoverage(view);
}
}
static void HideCodeCoverage()
{
foreach (IViewContent view in WorkbenchSingleton.Workbench.ViewContentCollection) {
ITextEditorProvider editorProvider = view as ITextEditorProvider;
if (editorProvider != null) {
codeCoverageHighlighter.RemoveMarkers(editorProvider.TextEditor.Document);
foreach (IViewContent view in SD.Workbench.ViewContentCollection) {
ITextEditor textEditor = view.GetService<ITextEditor>();
if (textEditor != null) {
codeCoverageHighlighter.RemoveMarkers(textEditor.Document);
}
}
}
@ -134,9 +136,9 @@ namespace ICSharpCode.CodeCoverage @@ -134,9 +136,9 @@ namespace ICSharpCode.CodeCoverage
static void ShowCodeCoverage(IViewContent view)
{
ITextEditorProvider editorProvider = view as ITextEditorProvider;
if (editorProvider != null && view.PrimaryFileName != null) {
ShowCodeCoverage(editorProvider.TextEditor, view.PrimaryFileName);
ITextEditor textEditor = view.GetService<ITextEditor>();
if (textEditor != null && view.PrimaryFileName != null) {
ShowCodeCoverage(textEditor, view.PrimaryFileName);
}
}

220
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageTestRunner.cs

@ -1,110 +1,110 @@ @@ -1,110 +1,110 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Diagnostics;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.CodeCoverage
{
public class CodeCoverageTestRunner : TestProcessRunnerBase
{
UnitTestingOptions options;
IFileSystem fileSystem;
OpenCoverApplication partCoverApplication;
OpenCoverSettingsFactory settingsFactory;
public CodeCoverageTestRunner()
: this(new CodeCoverageTestRunnerContext())
{
}
public CodeCoverageTestRunner(CodeCoverageTestRunnerContext context)
: base(context)
{
this.options = context.Options;
this.fileSystem = context.CodeCoverageFileSystem;
settingsFactory = new OpenCoverSettingsFactory(fileSystem);
}
public bool HasCodeCoverageResults()
{
return fileSystem.FileExists(CodeCoverageResultsFileName);
}
public CodeCoverageResults ReadCodeCoverageResults()
{
TextReader reader = fileSystem.CreateTextReader(CodeCoverageResultsFileName);
return new CodeCoverageResults(reader);
}
public string CodeCoverageResultsFileName {
get { return partCoverApplication.CodeCoverageResultsFileName; }
}
public override void Start(SelectedTests selectedTests)
{
AddProfilerEnvironmentVariableToProcessRunner();
CreatePartCoverApplication(selectedTests);
RemoveExistingCodeCoverageResultsFile();
CreateDirectoryForCodeCoverageResultsFile();
AppendRunningCodeCoverageMessage();
base.Start(selectedTests);
}
void AddProfilerEnvironmentVariableToProcessRunner()
{
ProcessRunner.EnvironmentVariables.Add("COMPLUS_ProfAPI_ProfilerCompatibilitySetting", "EnableV2Profiler");
}
void CreatePartCoverApplication(SelectedTests selectedTests)
{
NUnitConsoleApplication nunitConsoleApp = new NUnitConsoleApplication(selectedTests, options);
nunitConsoleApp.Results = base.TestResultsMonitor.FileName;
OpenCoverSettings settings = settingsFactory.CreateOpenCoverSettings(selectedTests.Project);
partCoverApplication = new OpenCoverApplication(nunitConsoleApp, settings);
}
void RemoveExistingCodeCoverageResultsFile()
{
string fileName = CodeCoverageResultsFileName;
if (fileSystem.FileExists(fileName)) {
fileSystem.DeleteFile(fileName);
}
}
void CreateDirectoryForCodeCoverageResultsFile()
{
string directory = Path.GetDirectoryName(CodeCoverageResultsFileName);
if (!fileSystem.DirectoryExists(directory)) {
fileSystem.CreateDirectory(directory);
}
}
void AppendRunningCodeCoverageMessage()
{
string message = ParseString("${res:ICSharpCode.CodeCoverage.RunningCodeCoverage}");
OnMessageReceived(message);
}
protected virtual string ParseString(string text)
{
return StringParser.Parse(text);
}
protected override ProcessStartInfo GetProcessStartInfo(SelectedTests selectedTests)
{
return partCoverApplication.GetProcessStartInfo();
}
protected override TestResult CreateTestResultForTestFramework(TestResult testResult)
{
return new NUnitTestResult(testResult);
}
}
}
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using System.Diagnostics;
//using System.IO;
//using ICSharpCode.Core;
//using ICSharpCode.SharpDevelop.Project;
//using ICSharpCode.UnitTesting;
//
//namespace ICSharpCode.CodeCoverage
//{
// public class CodeCoverageTestRunner : TestProcessRunnerBase
// {
// UnitTestingOptions options;
// IFileSystem fileSystem;
// OpenCoverApplication partCoverApplication;
// OpenCoverSettingsFactory settingsFactory;
//
// public CodeCoverageTestRunner()
// : this(new CodeCoverageTestRunnerContext())
// {
// }
//
// public CodeCoverageTestRunner(CodeCoverageTestRunnerContext context)
// : base(context)
// {
// this.options = context.Options;
// this.fileSystem = context.CodeCoverageFileSystem;
// settingsFactory = new OpenCoverSettingsFactory(fileSystem);
// }
//
// public bool HasCodeCoverageResults()
// {
// return fileSystem.FileExists(CodeCoverageResultsFileName);
// }
//
// public CodeCoverageResults ReadCodeCoverageResults()
// {
// TextReader reader = fileSystem.CreateTextReader(CodeCoverageResultsFileName);
// return new CodeCoverageResults(reader);
// }
//
// public string CodeCoverageResultsFileName {
// get { return partCoverApplication.CodeCoverageResultsFileName; }
// }
//
// public override void Start(SelectedTests selectedTests)
// {
// AddProfilerEnvironmentVariableToProcessRunner();
// CreatePartCoverApplication(selectedTests);
// RemoveExistingCodeCoverageResultsFile();
// CreateDirectoryForCodeCoverageResultsFile();
// AppendRunningCodeCoverageMessage();
//
// base.Start(selectedTests);
// }
//
// void AddProfilerEnvironmentVariableToProcessRunner()
// {
// ProcessRunner.EnvironmentVariables.Add("COMPLUS_ProfAPI_ProfilerCompatibilitySetting", "EnableV2Profiler");
// }
//
// void CreatePartCoverApplication(SelectedTests selectedTests)
// {
// NUnitConsoleApplication nunitConsoleApp = new NUnitConsoleApplication(selectedTests, options);
// nunitConsoleApp.Results = base.TestResultsMonitor.FileName;
//
// OpenCoverSettings settings = settingsFactory.CreateOpenCoverSettings(selectedTests.Project);
// partCoverApplication = new OpenCoverApplication(nunitConsoleApp, settings);
// }
//
// void RemoveExistingCodeCoverageResultsFile()
// {
// string fileName = CodeCoverageResultsFileName;
// if (fileSystem.FileExists(fileName)) {
// fileSystem.DeleteFile(fileName);
// }
// }
//
// void CreateDirectoryForCodeCoverageResultsFile()
// {
// string directory = Path.GetDirectoryName(CodeCoverageResultsFileName);
// if (!fileSystem.DirectoryExists(directory)) {
// fileSystem.CreateDirectory(directory);
// }
// }
//
// void AppendRunningCodeCoverageMessage()
// {
// string message = ParseString("${res:ICSharpCode.CodeCoverage.RunningCodeCoverage}");
// OnMessageReceived(message);
// }
//
// protected virtual string ParseString(string text)
// {
// return StringParser.Parse(text);
// }
//
// protected override ProcessStartInfo GetProcessStartInfo(SelectedTests selectedTests)
// {
// return partCoverApplication.GetProcessStartInfo();
// }
//
// protected override TestResult CreateTestResultForTestFramework(TestResult testResult)
// {
// return new NUnitTestResult(testResult);
// }
// }
//}

80
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageTestRunnerContext.cs

@ -1,40 +1,40 @@ @@ -1,40 +1,40 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.CodeCoverage
{
public class CodeCoverageTestRunnerContext : TestProcessRunnerBaseContext
{
UnitTestingOptions options;
public CodeCoverageTestRunnerContext()
: this(new UnitTestProcessRunner(),
new TestResultsMonitor(),
new FileSystem(),
new UnitTestMessageService(),
new UnitTestingOptions())
{
}
public CodeCoverageTestRunnerContext(IUnitTestProcessRunner processRunner,
ITestResultsMonitor testResultsMonitor,
ICSharpCode.CodeCoverage.IFileSystem fileSystem,
IUnitTestMessageService messageService,
UnitTestingOptions options)
: base(processRunner, testResultsMonitor, fileSystem, messageService)
{
this.options = options;
}
public UnitTestingOptions Options {
get { return options; }
}
public ICSharpCode.CodeCoverage.IFileSystem CodeCoverageFileSystem {
get { return base.FileSystem as ICSharpCode.CodeCoverage.IFileSystem; }
}
}
}
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.UnitTesting;
//
//namespace ICSharpCode.CodeCoverage
//{
// public class CodeCoverageTestRunnerContext : TestProcessRunnerBaseContext
// {
// UnitTestingOptions options;
//
// public CodeCoverageTestRunnerContext()
// : this(new UnitTestProcessRunner(),
// new TestResultsMonitor(),
// new FileSystem(),
// new UnitTestMessageService(),
// new UnitTestingOptions())
// {
// }
//
// public CodeCoverageTestRunnerContext(IUnitTestProcessRunner processRunner,
// ITestResultsMonitor testResultsMonitor,
// ICSharpCode.CodeCoverage.IFileSystem fileSystem,
// IUnitTestMessageService messageService,
// UnitTestingOptions options)
// : base(processRunner, testResultsMonitor, fileSystem, messageService)
// {
// this.options = options;
// }
//
// public UnitTestingOptions Options {
// get { return options; }
// }
//
// public ICSharpCode.CodeCoverage.IFileSystem CodeCoverageFileSystem {
// get { return base.FileSystem as ICSharpCode.CodeCoverage.IFileSystem; }
// }
// }
//}

32
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageTestRunnerFactory.cs

@ -1,16 +1,16 @@ @@ -1,16 +1,16 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.CodeCoverage
{
public class CodeCoverageTestRunnerFactory : ICodeCoverageTestRunnerFactory
{
public CodeCoverageTestRunner CreateCodeCoverageTestRunner()
{
return new CodeCoverageTestRunner();
}
}
}
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.UnitTesting;
//
//namespace ICSharpCode.CodeCoverage
//{
// public class CodeCoverageTestRunnerFactory : ICodeCoverageTestRunnerFactory
// {
// public CodeCoverageTestRunner CreateCodeCoverageTestRunner()
// {
// return new CodeCoverageTestRunner();
// }
// }
//}

24
src/AddIns/Analysis/CodeCoverage/Project/Src/ICodeCoverageTestRunnerFactory.cs

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.CodeCoverage
{
public interface ICodeCoverageTestRunnerFactory
{
CodeCoverageTestRunner CreateCodeCoverageTestRunner();
}
}
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//
//namespace ICSharpCode.CodeCoverage
//{
// public interface ICodeCoverageTestRunnerFactory
// {
// CodeCoverageTestRunner CreateCodeCoverageTestRunner();
// }
//}

32
src/AddIns/Analysis/CodeCoverage/Project/Src/OpenCoverApplication.cs

@ -15,27 +15,36 @@ namespace ICSharpCode.CodeCoverage @@ -15,27 +15,36 @@ namespace ICSharpCode.CodeCoverage
public class OpenCoverApplication
{
string fileName = String.Empty;
NUnitConsoleApplication nunitConsoleApp;
ProcessStartInfo targetProcessStartInfo;
OpenCoverSettings settings;
StringBuilder arguments;
IProject project;
public OpenCoverApplication(string fileName, NUnitConsoleApplication nunitConsoleApp, OpenCoverSettings settings)
public OpenCoverApplication(
string fileName,
ProcessStartInfo targetProcessStartInfo,
OpenCoverSettings settings,
IProject project)
{
this.fileName = fileName;
this.nunitConsoleApp = nunitConsoleApp;
this.targetProcessStartInfo = targetProcessStartInfo;
this.settings = settings;
this.project = project;
if (String.IsNullOrEmpty(fileName)) {
GetPartCoverApplicationFileName();
GetOpenCoverApplicationFileName();
}
}
public OpenCoverApplication(NUnitConsoleApplication nunitConsoleApp, OpenCoverSettings settings)
: this(null, nunitConsoleApp, settings)
public OpenCoverApplication(
ProcessStartInfo targetProcessStartInfo,
OpenCoverSettings settings,
IProject project)
: this(null, targetProcessStartInfo, settings, project)
{
}
void GetPartCoverApplicationFileName()
void GetOpenCoverApplicationFileName()
{
fileName = Path.Combine(FileUtility.ApplicationRootPath, @"bin\Tools\OpenCover\OpenCover.Console.exe");
fileName = Path.GetFullPath(fileName);
@ -51,26 +60,27 @@ namespace ICSharpCode.CodeCoverage @@ -51,26 +60,27 @@ namespace ICSharpCode.CodeCoverage
}
public string Target {
get { return nunitConsoleApp.FileName; }
get { return targetProcessStartInfo.FileName; }
}
public string GetTargetArguments()
{
return nunitConsoleApp.GetArguments();
return targetProcessStartInfo.Arguments;
}
public string GetTargetWorkingDirectory()
{
return Path.GetDirectoryName(nunitConsoleApp.Assemblies[0]);
return Path.GetDirectoryName(project.OutputAssemblyFullPath);
}
public string CodeCoverageResultsFileName {
get { return new ProjectCodeCoverageResultsFileName(nunitConsoleApp.Project).FileName; }
get { return new ProjectCodeCoverageResultsFileName(project).FileName; }
}
public ProcessStartInfo GetProcessStartInfo()
{
ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.EnvironmentVariables.Add("COMPLUS_ProfAPI_ProfilerCompatibilitySetting", "EnableV2Profiler");
processStartInfo.FileName = FileName;
processStartInfo.Arguments = GetArguments();
return processStartInfo;

16
src/AddIns/Analysis/CodeCoverage/Project/Src/RunAllTestsWithCodeCoverageCommand.cs

@ -2,23 +2,25 @@ @@ -2,23 +2,25 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.SharpDevelop;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.CodeCoverage
{
public class RunAllTestsWithCodeCoverageCommand : RunTestWithCodeCoverageCommand
{
public RunAllTestsWithCodeCoverageCommand()
public override void Run()
{
ITestService testService = SD.GetRequiredService<ITestService>();
if (testService.OpenSolution != null) {
base.Run();
}
}
/// <summary>
/// Set Owner to null so all tests are run.
/// </summary>
public override void Run()
protected override IEnumerable<ITest> GetTests(ITestService testService)
{
Owner = null;
base.Run();
return new[] { testService.OpenSolution };
}
}
}

142
src/AddIns/Analysis/CodeCoverage/Project/Src/RunTestWithCodeCoverageCommand.cs

@ -2,14 +2,18 @@ @@ -2,14 +2,18 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Util;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.CodeCoverage
@ -18,121 +22,119 @@ namespace ICSharpCode.CodeCoverage @@ -18,121 +22,119 @@ namespace ICSharpCode.CodeCoverage
/// Menu command selected after right clicking a test method in the text editor
/// to run tests with code coverage.
/// </summary>
public class RunTestWithCodeCoverageCommand : AbstractRunTestCommand
public class RunTestWithCodeCoverageCommand : AbstractMenuCommand
{
static MessageViewCategory category;
ICodeCoverageTestRunnerFactory factory;
CodeCoverageTestRunner codeCoverageTestRunner;
OpenCoverSettingsFactory settingsFactory = new OpenCoverSettingsFactory();
IFileSystem fileSystem = new FileSystem();
public RunTestWithCodeCoverageCommand()
: this(new RunTestCommandContext(), new CodeCoverageTestRunnerFactory())
public override void Run()
{
ClearCodeCoverageResults();
var coverageResultsReader = new CodeCoverageResultsReader();
var options = new TestExecutionOptions {
ModifyProcessStartInfoBeforeTestRun = (startInfo, tests) => {
OpenCoverApplication app = CreateOpenCoverApplication(startInfo, tests);
coverageResultsReader.AddResultsFile(app.CodeCoverageResultsFileName);
return app.GetProcessStartInfo();
}
};
ITestService testService = SD.GetRequiredService<ITestService>();
IEnumerable<ITest> allTests = GetTests(testService);
testService.RunTestsAsync(allTests, options)
.ContinueWith(t => AfterTestsRunTask(t, coverageResultsReader))
.FireAndForget();
}
public RunTestWithCodeCoverageCommand(IRunTestCommandContext context,
ICodeCoverageTestRunnerFactory factory)
: base(context)
{
this.factory = factory;
}
protected override void OnBeforeRunTests()
protected virtual IEnumerable<ITest> GetTests(ITestService testService)
{
ClearCodeCoverageResults();
return TestableCondition.GetTests(testService.OpenSolution, Owner);
}
void ClearCodeCoverageResults()
{
Category.ClearText();
Context.Workbench.SafeThreadAsyncCall(CodeCoverageService.ClearResults);
SD.MainThread.InvokeIfRequired(() => CodeCoverageService.ClearResults());
}
/// <summary>
/// Gets the message view output window.
/// </summary>
protected MessageViewCategory Category {
get {
if (category == null) {
CreateCodeCoverageMessageViewCategory();
}
return category;
}
set { category = value; }
}
void CreateCodeCoverageMessageViewCategory()
OpenCoverApplication CreateOpenCoverApplication(ProcessStartInfo startInfo, IEnumerable<ITest> tests)
{
string displayCategory = StringParse("${res:ICSharpCode.UnitTesting.CodeCoverage}");
category = CreateMessageViewCategory("CodeCoverage", displayCategory);
IProject project = tests.First().ParentProject.Project;
OpenCoverSettings settings = settingsFactory.CreateOpenCoverSettings(project);
var application = new OpenCoverApplication(startInfo, settings, project);
RemoveExistingCodeCoverageResultsFile(application.CodeCoverageResultsFileName);
CreateDirectoryForCodeCoverageResultsFile(application.CodeCoverageResultsFileName);
return application;
}
protected virtual string StringParse(string text)
void RemoveExistingCodeCoverageResultsFile(string fileName)
{
return StringParser.Parse(text);
if (fileSystem.FileExists(fileName)) {
fileSystem.DeleteFile(fileName);
}
}
protected virtual MessageViewCategory CreateMessageViewCategory(string category, string displayCategory)
void CreateDirectoryForCodeCoverageResultsFile(string fileName)
{
MessageViewCategory view = null;
MessageViewCategory.Create(ref view, category, displayCategory);
return view;
string directory = Path.GetDirectoryName(fileName);
if (!fileSystem.DirectoryExists(directory)) {
fileSystem.CreateDirectory(directory);
}
}
protected override void OnAfterRunTests()
Task AfterTestsRunTask(Task task, CodeCoverageResultsReader coverageResultsReader)
{
ShowCodeCoverageResultsIfNoCriticalTestFailures();
if (task.Exception != null)
throw task.Exception;
ShowCodeCoverageResultsPadIfNoCriticalTestFailures();
DisplayCodeCoverageResults(coverageResultsReader);
return task;
}
void ShowCodeCoverageResultsIfNoCriticalTestFailures()
void ShowCodeCoverageResultsPadIfNoCriticalTestFailures()
{
if (!Context.TaskService.HasCriticalErrors(false)) {
ShowPad(Context.Workbench.GetPad(typeof(CodeCoveragePad)));
if (TaskService.HasCriticalErrors(false)) {
SD.MainThread.InvokeIfRequired(() => ShowCodeCoverageResultsPad());
}
}
protected override void TestRunnerMessageReceived(object source, MessageReceivedEventArgs e)
void ShowCodeCoverageResultsPad()
{
Category.AppendLine(e.Message);
}
protected override ITestRunner CreateTestRunner(IProject project)
{
codeCoverageTestRunner = factory.CreateCodeCoverageTestRunner();
codeCoverageTestRunner.AllTestsFinished += CodeCoverageRunFinished;
return codeCoverageTestRunner;
SD.Workbench.GetPad(typeof(CodeCoveragePad)).BringPadToFront();
}
void CodeCoverageRunFinished(object source, EventArgs e)
void DisplayCodeCoverageResults(CodeCoverageResultsReader coverageResultsReader)
{
if (codeCoverageTestRunner.HasCodeCoverageResults()) {
CodeCoverageResults results = codeCoverageTestRunner.ReadCodeCoverageResults();
DisplayCodeCoverageResults(results);
} else {
DisplayNoCodeCoverageResultsGeneratedMessage();
foreach (CodeCoverageResults result in coverageResultsReader.GetResults()) {
DisplayCodeCoverageResults(result);
}
foreach (string missingFile in coverageResultsReader.GetMissingResultsFiles()) {
DisplayNoCodeCoverageResultsGeneratedMessage(missingFile);
}
}
void DisplayCodeCoverageResults(CodeCoverageResults results)
{
Context.Workbench.SafeThreadAsyncCall(CodeCoverageService.ShowResults, results);
SD.MainThread.InvokeIfRequired(() => CodeCoverageService.ShowResults(results));
}
void DisplayNoCodeCoverageResultsGeneratedMessage()
void DisplayNoCodeCoverageResultsGeneratedMessage(string fileName)
{
Task task = CreateNoCodeCoverageResultsGeneratedTask();
Context.Workbench.SafeThreadAsyncCall(Context.TaskService.Add, task);
SDTask task = CreateNoCodeCoverageResultsGeneratedTask(fileName);
TaskService.Add(task);
}
Task CreateNoCodeCoverageResultsGeneratedTask()
SDTask CreateNoCodeCoverageResultsGeneratedTask(string fileName)
{
string description = GetNoCodeCoverageResultsGeneratedTaskDescription();
return new Task(null, description, 1, 1, TaskType.Error);
string description = GetNoCodeCoverageResultsGeneratedTaskDescription(fileName);
return new SDTask(null, description, 1, 1, TaskType.Error);
}
string GetNoCodeCoverageResultsGeneratedTaskDescription()
string GetNoCodeCoverageResultsGeneratedTaskDescription(string fileName)
{
string message = StringParse("${res:ICSharpCode.CodeCoverage.NoCodeCoverageResultsGenerated}");
return String.Format("{0} {1}", message, codeCoverageTestRunner.CodeCoverageResultsFileName);
string message = StringParser.Parse("${res:ICSharpCode.CodeCoverage.NoCodeCoverageResultsGenerated}");
return String.Format("{0} {1}", message, fileName);
}
}
}

12
src/AddIns/Analysis/CodeCoverage/Project/Src/ShowDisplayOptionsDropDown.cs

@ -16,11 +16,11 @@ namespace ICSharpCode.CodeCoverage @@ -16,11 +16,11 @@ namespace ICSharpCode.CodeCoverage
{
}
protected override void OnOwnerChanged(EventArgs e)
{
base.OnOwnerChanged(e);
dropDownButton = (ToolBarDropDownButton)Owner;
MenuService.AddItemsToMenu(dropDownButton.DropDownItems, this, "/SharpDevelop/Pads/CodeCoveragePad/Toolbar/CodeCoveragePadDisplayOptions");
}
// protected override void OnOwnerChanged(EventArgs e)
// {
// base.OnOwnerChanged(e);
// dropDownButton = (ToolBarDropDownButton)Owner;
// MenuService.AddItemsToMenu(dropDownButton.DropDownItems, this, "/SharpDevelop/Pads/CodeCoveragePad/Toolbar/CodeCoveragePadDisplayOptions");
// }
}
}

14
src/AddIns/Analysis/CodeCoverage/Test/CodeCoverage.Tests.csproj

@ -16,7 +16,8 @@ @@ -16,7 +16,8 @@
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>..\..\..\..\..\bin\UnitTests\</OutputPath>
@ -110,9 +111,9 @@ @@ -110,9 +111,9 @@
<Compile Include="Utils\XElementExtensions.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\Project\NRefactory.csproj">
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project>
<Name>NRefactory</Name>
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\ICSharpCode.NRefactory\ICSharpCode.NRefactory.csproj">
<Project>{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}</Project>
<Name>ICSharpCode.NRefactory</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
@ -121,7 +122,6 @@ @@ -121,7 +122,6 @@
<ProjectReference Include="..\..\..\..\Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj">
<Project>{4980B743-B32F-4aba-AABD-45E2CAD3568D}</Project>
<Name>ICSharpCode.SharpDevelop.Tests</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
@ -139,10 +139,6 @@ @@ -139,10 +139,6 @@
<Project>{1F261725-6318-4434-A1B1-6C70CE4CD324}</Project>
<Name>UnitTesting</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<ItemGroup>

2
src/AddIns/Analysis/CodeCoverage/Test/Coverage/CodeCoverageResultsMissingFileIdTestFixture.cs

@ -9,7 +9,7 @@ using NUnit.Framework; @@ -9,7 +9,7 @@ using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Coverage
{
/// <summary>
/// PartCover does not always put a file id in the code
/// OpenCover does not always put a file id in the code
/// coverage report. This is typically for code that
/// has no source code. It can also be for code that
/// is in a method that is not covered at all.

6
src/AddIns/Analysis/CodeCoverage/Test/Coverage/OpenCoverSettingsFactoryTests.cs

@ -4,15 +4,17 @@ @@ -4,15 +4,17 @@
using System;
using System.IO;
using System.Text;
using ICSharpCode.CodeCoverage;
using ICSharpCode.CodeCoverage.Tests.Utils;
using ICSharpCode.SharpDevelop;
using NUnit.Framework;
using UnitTesting.Tests.Utils;
namespace ICSharpCode.CodeCoverage.Tests.Coverage
{
[TestFixture]
public class OpenCoverSettingsFactoryTests
public class OpenCoverSettingsFactoryTests : SDTestFixtureBase
{
OpenCoverSettingsFactory factory;
OpenCoverSettings openCoverSettings;
@ -28,7 +30,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage @@ -28,7 +30,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage
}
[Test]
public void CreateOpenCoverSettingsWhenFileDoesNotExistCreatesSettingsWithNoPartCoverIncludes()
public void CreateOpenCoverSettingsWhenFileDoesNotExistCreatesSettingsWithNoOpenCoverIncludes()
{
fileSystem.FileExistsReturnValue = false;
CreateOpenCoverSettingsFromFactory();

9
src/AddIns/Analysis/CodeCoverage/Test/Coverage/OpenCoverSettingsTestFixture.cs

@ -8,6 +8,7 @@ using System.Xml; @@ -8,6 +8,7 @@ using System.Xml;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
@ -16,12 +17,12 @@ using UnitTesting.Tests.Utils; @@ -16,12 +17,12 @@ using UnitTesting.Tests.Utils;
namespace ICSharpCode.CodeCoverage.Tests.Coverage
{
/// <summary>
/// Tests the saving and loading of the PartCover settings file. This
/// Tests the saving and loading of the OpenCover settings file. This
/// file is used to stores the includes and excludes regular expressions
/// that PartCover uses.
/// that OpenCover uses.
/// </summary>
[TestFixture]
public class OpenCoverSettingsTestFixture
public class OpenCoverSettingsTestFixture : SDTestFixtureBase
{
OpenCoverSettings settings;
OpenCoverSettings savedSettings;
@ -62,7 +63,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage @@ -62,7 +63,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage
MSBuildBasedProject project = new MSBuildBasedProject(
new ProjectCreateInformation {
Solution = new Solution(new MockProjectChangeWatcher()),
OutputProjectFileName = @"C:\temp\test.csproj",
OutputProjectFileName = new FileName(@"C:\temp\test.csproj"),
ProjectName = "test"
});

4
src/AddIns/Analysis/CodeCoverage/Test/Coverage/RemoveTaskMarkerTests.cs

@ -4,8 +4,10 @@ @@ -4,8 +4,10 @@
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Tests.Utils;
@ -34,7 +36,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage @@ -34,7 +36,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage
public void CodeCoverageHighlighterRemoveMarkersDoesNotThrowInvalidCastExceptionWhenOneMarkerTagIsTask()
{
ITextMarker textMarker = markerService.Create(0, 2);
textMarker.Tag = new Task(null, String.Empty, 1, 1, TaskType.Error);
textMarker.Tag = new SDTask(null, String.Empty, 1, 1, TaskType.Error);
CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();
Assert.DoesNotThrow(delegate { highlighter.RemoveMarkers(document); });

6
src/AddIns/Analysis/CodeCoverage/Test/Coverage/SolutionCodeCoverageResultsTests.cs

@ -7,6 +7,8 @@ using System.IO; @@ -7,6 +7,8 @@ using System.IO;
using System.Linq;
using ICSharpCode.CodeCoverage.Tests.Utils;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
using Rhino.Mocks;
@ -15,7 +17,7 @@ using UnitTesting.Tests.Utils; @@ -15,7 +17,7 @@ using UnitTesting.Tests.Utils;
namespace ICSharpCode.CodeCoverage.Tests.Coverage
{
[TestFixture]
public class SolutionCodeCoverageResultsTests
public class SolutionCodeCoverageResultsTests : SDTestFixtureBase
{
SolutionCodeCoverageResults solutionCodeCoverageResults;
Solution solution;
@ -36,7 +38,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage @@ -36,7 +38,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage
void AddProject(string fileName)
{
var project = new MockCSharpProject(solution, Path.GetFileNameWithoutExtension(fileName));
project.FileName = fileName;
project.FileName = new FileName(fileName);
solution.Folders.Add(project);
}

9
src/AddIns/Analysis/CodeCoverage/Test/Highlighting/AddCodeCoverageMarkersTestFixture.cs

@ -4,15 +4,17 @@ @@ -4,15 +4,17 @@
using System;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Tests.Utils;
using ICSharpCode.SharpDevelop.WinForms;
using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Highlighting
{
[TestFixture]
public class AddCodeCoverageMarkersTestFixture
public class AddCodeCoverageMarkersTestFixture : SDTestFixtureBase
{
ITextMarker markerOne;
ITextMarker markerTwo;
@ -23,10 +25,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting @@ -23,10 +25,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting
[TestFixtureSetUp]
public void SetUpFixture()
{
try {
string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
} catch (Exception) {}
base.FixtureSetUp();
document = MockTextMarkerService.CreateDocumentWithMockService();
string code = "\t\t{\r\n" +

21
src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersCoverMultipleLinesTestFixture.cs

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.NRefactory;
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Tests.Utils;
using NUnit.Framework;
@ -23,8 +24,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting @@ -23,8 +24,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting
public void SetUpFixture()
{
try {
string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
//string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
//PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
} catch (Exception) {}
document = MockTextMarkerService.CreateDocumentWithMockService();
@ -90,22 +91,22 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting @@ -90,22 +91,22 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting
[Test]
public void FirstMarkerPosition()
{
Assert.AreEqual(new Location(3, 1), document.OffsetToPosition(markers[0].StartOffset));
Assert.AreEqual(new Location(4, 1), document.OffsetToPosition(markers[0].EndOffset));
Assert.AreEqual(new TextLocation(1, 3), document.GetLocation(markers[0].StartOffset));
Assert.AreEqual(new TextLocation(1, 4), document.GetLocation(markers[0].EndOffset));
}
[Test]
public void SecondMarkerPosition()
{
Assert.AreEqual(new Location(4, 2), document.OffsetToPosition(markers[1].StartOffset));
Assert.AreEqual(new Location(20, 9), document.OffsetToPosition(markers[1].EndOffset));
Assert.AreEqual(new TextLocation(2, 4), document.GetLocation(markers[1].StartOffset));
Assert.AreEqual(new TextLocation(9, 20), document.GetLocation(markers[1].EndOffset));
}
[Test]
public void ThirdMarkerPosition()
{
Assert.AreEqual(new Location(3, 10), document.OffsetToPosition(markers[2].StartOffset));
Assert.AreEqual(new Location(4, 10), document.OffsetToPosition(markers[2].EndOffset));
Assert.AreEqual(new TextLocation(10, 3), document.GetLocation(markers[2].StartOffset));
Assert.AreEqual(new TextLocation(10, 4), document.GetLocation(markers[2].EndOffset));
}
}
}

12
src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersCoverTwoLinesTestFixture.cs

@ -1,19 +1,22 @@ @@ -1,19 +1,22 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop.Tests.Utils;
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Tests.Utils;
using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Highlighting
{
[TestFixture]
public class CodeCoverageMarkersCoverTwoLinesTestFixture
public class CodeCoverageMarkersCoverTwoLinesTestFixture : SDTestFixtureBase
{
ITextMarker markerOne;
ITextMarker markerTwo;
@ -22,11 +25,6 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting @@ -22,11 +25,6 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting
[TestFixtureSetUp]
public void SetUpFixture()
{
try {
string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
} catch (Exception) {}
IDocument document = MockTextMarkerService.CreateDocumentWithMockService();
ITextMarkerService markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
string code = "\t\t{\r\n" +

8
src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersInvalidEndColumnTestFixture.cs

@ -1,13 +1,15 @@ @@ -1,13 +1,15 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop.Tests.Utils;
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Tests.Utils;
using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Highlighting
@ -21,8 +23,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting @@ -21,8 +23,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting
public void Init()
{
try {
string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
//string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
//PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
} catch (Exception) {}
IDocument document = MockTextMarkerService.CreateDocumentWithMockService();

8
src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersInvalidEndLineTestFixture.cs

@ -1,13 +1,15 @@ @@ -1,13 +1,15 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop.Tests.Utils;
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Tests.Utils;
using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Highlighting
@ -21,8 +23,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting @@ -21,8 +23,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting
public void Init()
{
try {
string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
//string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
//PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
} catch (Exception) {}
IDocument document = MockTextMarkerService.CreateDocumentWithMockService();

8
src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersInvalidStartColumnTestFixture.cs

@ -1,13 +1,15 @@ @@ -1,13 +1,15 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop.Tests.Utils;
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Tests.Utils;
using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Highlighting
@ -21,8 +23,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting @@ -21,8 +23,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting
public void Init()
{
try {
string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
//string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
//PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
} catch (Exception) {}
IDocument document = MockTextMarkerService.CreateDocumentWithMockService();

8
src/AddIns/Analysis/CodeCoverage/Test/Highlighting/CodeCoverageMarkersInvalidStartLineTestFixture.cs

@ -1,13 +1,15 @@ @@ -1,13 +1,15 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop.Tests.Utils;
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Tests.Utils;
using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Highlighting
@ -21,8 +23,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting @@ -21,8 +23,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting
public void Init()
{
try {
string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
//string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
//PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
} catch (Exception) {}
IDocument document = MockTextMarkerService.CreateDocumentWithMockService();

8
src/AddIns/Analysis/CodeCoverage/Test/Highlighting/RemoveCodeCoverageMarkersTestFixture.cs

@ -1,13 +1,15 @@ @@ -1,13 +1,15 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop.Tests.Utils;
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Tests.Utils;
using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Highlighting
@ -22,8 +24,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting @@ -22,8 +24,8 @@ namespace ICSharpCode.CodeCoverage.Tests.Highlighting
public void SetUpTestFixture()
{
try {
string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
//string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
//PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
} catch (Exception) {}
document = MockTextMarkerService.CreateDocumentWithMockService();

474
src/AddIns/Analysis/CodeCoverage/Test/Testing/CodeCoverageTestRunnerTests.cs

@ -1,237 +1,237 @@ @@ -1,237 +1,237 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text;
using ICSharpCode.Core;
using ICSharpCode.CodeCoverage;
using ICSharpCode.CodeCoverage.Tests.Utils;
using ICSharpCode.SharpDevelop;
using ICSharpCode.UnitTesting;
using NUnit.Framework;
using UnitTesting.Tests.Utils;
namespace ICSharpCode.CodeCoverage.Tests.Testing
{
[TestFixture]
public class CodeCoverageTestRunnerTests
{
MockProcessRunner processRunner;
MockTestResultsMonitor testResultsMonitor;
UnitTestingOptions options;
DerivedCodeCoverageTestRunner testRunner;
MockFileSystem fileSystem;
MockMessageService messageService;
[SetUp]
public void Init()
{
processRunner = new MockProcessRunner();
testResultsMonitor = new MockTestResultsMonitor();
options = new UnitTestingOptions(new Properties());
fileSystem = new MockFileSystem();
messageService = new MockMessageService();
testRunner = new DerivedCodeCoverageTestRunner(processRunner, testResultsMonitor, options, fileSystem, messageService);
}
[Test]
public void CreateTestResultForTestFrameworkReturnsNUnitTestResult()
{
TestResult testResult = new TestResult("abc");
Assert.IsInstanceOf(typeof(NUnitTestResult), testRunner.CallCreateTestResultForTestFramework(testResult));
}
[Test]
public void HasCodeCoverageResultsWhenCoverageFileExistsReturnsTrue()
{
StartTestRunner();
fileSystem.FileExistsReturnValue = true;
Assert.IsTrue(testRunner.HasCodeCoverageResults());
}
void StartTestRunner()
{
FileUtility.ApplicationRootPath = @"d:\sharpdevelop";
MockCSharpProject project = new MockCSharpProject();
SelectedTests tests = new SelectedTests(project);
testRunner.Start(tests);
}
[Test]
public void HasCodeCoverageResultsWhenCoverageFileDoesNotExistsReturnsFalse()
{
fileSystem.FileExistsReturnValue = false;
StartTestRunner();
Assert.IsFalse(testRunner.HasCodeCoverageResults());
}
[Test]
public void HasCodeCoverageResultsAfterTestRunChecksPassesCodeCoverageFileToFileExistsMethod()
{
fileSystem.FileExistsReturnValue = false;
fileSystem.FileExistsPathParameter = null;
StartTestRunner();
testRunner.HasCodeCoverageResults();
string expectedFileName =
@"c:\projects\MyTests\OpenCover\coverage.xml";
Assert.AreEqual(expectedFileName, fileSystem.FileExistsPathParameter);
}
[Test]
public void ReadCodeCoverageResultsAfterTestRunChecksPassesCodeCoverageFileToCreateTextReaderMethod()
{
StartTestRunner();
fileSystem.FileExistsReturnValue = true;
fileSystem.CreateTextReaderPathParameter = null;
fileSystem.CreateTextReaderReturnValue = new StringReader("<abc/>");
testRunner.ReadCodeCoverageResults();
string expectedFileName =
@"c:\projects\MyTests\OpenCover\coverage.xml";
Assert.AreEqual(expectedFileName, fileSystem.CreateTextReaderPathParameter);
}
[Test]
public void GetProcessStartInfoWhenTestResultsFileNameSetReturnsCommandLineWithTestResultsFileName()
{
FileUtility.ApplicationRootPath = @"d:\sharpdevelop";
testResultsMonitor.FileName = @"d:\temp\results.txt";
fileSystem.CreateTextReaderReturnValue = CreatePartCoverSettingsTextReader();
fileSystem.FileExistsReturnValue = true;
MockCSharpProject project = new MockCSharpProject();
SelectedTests tests = new SelectedTests(project);
testRunner.Start(tests);
ProcessStartInfo processStartInfo = testRunner.CallGetProcessStartInfo(tests);
string expectedCommandLine =
"-register:user -target:\"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " +
"-targetdir:\"c:\\projects\\MyTests\\bin\\Debug\" " +
"-targetargs:\"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\" /noxml /results=\\\"d:\\temp\\results.txt\\\"\" " +
"-output:\"c:\\projects\\MyTests\\OpenCover\\coverage.xml\" " +
"-filter:\"+[MyTests]* \"";
Assert.AreEqual(expectedCommandLine, processStartInfo.Arguments);
}
TextReader CreatePartCoverSettingsTextReader()
{
OpenCoverSettings settings = new OpenCoverSettings();
settings.Include.Add("[MyTests]*");
StringBuilder text = new StringBuilder();
StringWriter writer = new StringWriter(text);
settings.Save(writer);
return new StringReader(text.ToString());
}
[Test]
public void StartSetsProfilerEnvironmentVariableInProcessRunner()
{
StartTestRunner();
string environmentVariableValue = processRunner.EnvironmentVariables["COMPLUS_ProfAPI_ProfilerCompatibilitySetting"];
Assert.AreEqual("EnableV2Profiler", environmentVariableValue);
}
[Test]
public void StartWhenCodeCoverageResultsFileExistsDeletesExistingCodeCoverageResultsFile()
{
fileSystem.FileExistsReturnValue = true;
fileSystem.CreateTextReaderReturnValue = new StringReader("<abc/>");
StartTestRunner();
string expectedFileName = @"c:\projects\MyTests\OpenCover\coverage.xml";
Assert.AreEqual(expectedFileName, fileSystem.DeleteFilePathParameter);
}
[Test]
public void StartWhenCodeCoverageResultsFileDoesNotExistsCodeCoverageResultsFileIsNotDeleted()
{
fileSystem.FileExistsReturnValue = false;
StartTestRunner();
Assert.IsNull(fileSystem.DeleteFilePathParameter);
}
[Test]
public void StartCreatesDirectoryCodeCoverageResultsFileIfDoesNotExist()
{
fileSystem.DirectoryExistsReturnValue = false;
StartTestRunner();
string expectedDirectory = @"c:\projects\MyTests\OpenCover";
Assert.AreEqual(expectedDirectory, fileSystem.CreateDirectoryPathParameter);
}
[Test]
public void StartChecksDirectoryForCodeCoverageResultsExists()
{
fileSystem.DirectoryExistsReturnValue = true;
StartTestRunner();
string expectedDirectory = @"c:\projects\MyTests\OpenCover";
Assert.AreEqual(expectedDirectory, fileSystem.DirectoryExistsPathParameter);
}
[Test]
public void StartDoesNotCreateDirectoryForCodeCoverageResultsFileIfItExists()
{
fileSystem.DirectoryExistsReturnValue = true;
StartTestRunner();
Assert.IsNull(fileSystem.CreateDirectoryPathParameter);
}
[Test]
public void StartFiresMessagesReceivedEventTwice()
{
List<string> messages = new List<string>();
testRunner.MessageReceived += delegate(object o, MessageReceivedEventArgs e) {
messages.Add(e.Message);
};
testRunner.ParseStringReturnValue = "Running code coverage";
StartTestRunner();
string[] expectedMessages = new string[] {
"Running code coverage",
GetCodeCoverageCommandLine()
};
Assert.AreEqual(expectedMessages, messages.ToArray());
}
string GetCodeCoverageCommandLine()
{
return
"\"d:\\sharpdevelop\\bin\\Tools\\OpenCover\\OpenCover.Console.exe\" -register:user " +
"-target:\"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " +
"-targetdir:\"c:\\projects\\MyTests\\bin\\Debug\" " +
"-targetargs:\"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\" /noxml\" " +
"-output:\"c:\\projects\\MyTests\\OpenCover\\coverage.xml\" " +
"-filter:\"+[*]* \"";
}
[Test]
public void StartParsesTextForRunningCodeCoverageMessages()
{
testRunner.ParseStringReturnValue = "Running code coverage";
StartTestRunner();
string expectedStringResource = "${res:ICSharpCode.CodeCoverage.RunningCodeCoverage}";
Assert.AreEqual(expectedStringResource, testRunner.ParseStringParameter);
}
}
}
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using System.Collections.Generic;
//using System.Diagnostics;
//using System.IO;
//using System.Text;
//using ICSharpCode.Core;
//using ICSharpCode.CodeCoverage;
//using ICSharpCode.CodeCoverage.Tests.Utils;
//using ICSharpCode.SharpDevelop;
//using ICSharpCode.UnitTesting;
//using NUnit.Framework;
//using UnitTesting.Tests.Utils;
//
//namespace ICSharpCode.CodeCoverage.Tests.Testing
//{
// [TestFixture]
// public class CodeCoverageTestRunnerTests
// {
// MockProcessRunner processRunner;
// MockTestResultsMonitor testResultsMonitor;
// UnitTestingOptions options;
// DerivedCodeCoverageTestRunner testRunner;
// MockFileSystem fileSystem;
// MockMessageService messageService;
//
// [SetUp]
// public void Init()
// {
// processRunner = new MockProcessRunner();
// testResultsMonitor = new MockTestResultsMonitor();
// options = new UnitTestingOptions(new Properties());
// fileSystem = new MockFileSystem();
// messageService = new MockMessageService();
// testRunner = new DerivedCodeCoverageTestRunner(processRunner, testResultsMonitor, options, fileSystem, messageService);
// }
//
// [Test]
// public void CreateTestResultForTestFrameworkReturnsNUnitTestResult()
// {
// TestResult testResult = new TestResult("abc");
// Assert.IsInstanceOf(typeof(NUnitTestResult), testRunner.CallCreateTestResultForTestFramework(testResult));
// }
//
// [Test]
// public void HasCodeCoverageResultsWhenCoverageFileExistsReturnsTrue()
// {
// StartTestRunner();
//
// fileSystem.FileExistsReturnValue = true;
//
// Assert.IsTrue(testRunner.HasCodeCoverageResults());
// }
//
// void StartTestRunner()
// {
// FileUtility.ApplicationRootPath = @"d:\sharpdevelop";
// MockCSharpProject project = new MockCSharpProject();
// SelectedTests tests = new SelectedTests(project);
// testRunner.Start(tests);
// }
//
// [Test]
// public void HasCodeCoverageResultsWhenCoverageFileDoesNotExistsReturnsFalse()
// {
// fileSystem.FileExistsReturnValue = false;
// StartTestRunner();
// Assert.IsFalse(testRunner.HasCodeCoverageResults());
// }
//
// [Test]
// public void HasCodeCoverageResultsAfterTestRunChecksPassesCodeCoverageFileToFileExistsMethod()
// {
// fileSystem.FileExistsReturnValue = false;
// fileSystem.FileExistsPathParameter = null;
// StartTestRunner();
// testRunner.HasCodeCoverageResults();
//
// string expectedFileName =
// @"c:\projects\MyTests\OpenCover\coverage.xml";
//
// Assert.AreEqual(expectedFileName, fileSystem.FileExistsPathParameter);
// }
//
// [Test]
// public void ReadCodeCoverageResultsAfterTestRunChecksPassesCodeCoverageFileToCreateTextReaderMethod()
// {
// StartTestRunner();
//
// fileSystem.FileExistsReturnValue = true;
// fileSystem.CreateTextReaderPathParameter = null;
// fileSystem.CreateTextReaderReturnValue = new StringReader("<abc/>");
//
// testRunner.ReadCodeCoverageResults();
//
// string expectedFileName =
// @"c:\projects\MyTests\OpenCover\coverage.xml";
//
// Assert.AreEqual(expectedFileName, fileSystem.CreateTextReaderPathParameter);
// }
//
// [Test]
// public void GetProcessStartInfoWhenTestResultsFileNameSetReturnsCommandLineWithTestResultsFileName()
// {
// FileUtility.ApplicationRootPath = @"d:\sharpdevelop";
// testResultsMonitor.FileName = @"d:\temp\results.txt";
//
// fileSystem.CreateTextReaderReturnValue = CreatePartCoverSettingsTextReader();
// fileSystem.FileExistsReturnValue = true;
//
// MockCSharpProject project = new MockCSharpProject();
// SelectedTests tests = new SelectedTests(project);
// testRunner.Start(tests);
// ProcessStartInfo processStartInfo = testRunner.CallGetProcessStartInfo(tests);
//
// string expectedCommandLine =
// "-register:user -target:\"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " +
// "-targetdir:\"c:\\projects\\MyTests\\bin\\Debug\" " +
// "-targetargs:\"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\" /noxml /results=\\\"d:\\temp\\results.txt\\\"\" " +
// "-output:\"c:\\projects\\MyTests\\OpenCover\\coverage.xml\" " +
// "-filter:\"+[MyTests]* \"";
//
// Assert.AreEqual(expectedCommandLine, processStartInfo.Arguments);
// }
//
// TextReader CreatePartCoverSettingsTextReader()
// {
// OpenCoverSettings settings = new OpenCoverSettings();
// settings.Include.Add("[MyTests]*");
// StringBuilder text = new StringBuilder();
// StringWriter writer = new StringWriter(text);
// settings.Save(writer);
//
// return new StringReader(text.ToString());
// }
//
// [Test]
// public void StartSetsProfilerEnvironmentVariableInProcessRunner()
// {
// StartTestRunner();
// string environmentVariableValue = processRunner.EnvironmentVariables["COMPLUS_ProfAPI_ProfilerCompatibilitySetting"];
// Assert.AreEqual("EnableV2Profiler", environmentVariableValue);
// }
//
// [Test]
// public void StartWhenCodeCoverageResultsFileExistsDeletesExistingCodeCoverageResultsFile()
// {
// fileSystem.FileExistsReturnValue = true;
// fileSystem.CreateTextReaderReturnValue = new StringReader("<abc/>");
// StartTestRunner();
//
// string expectedFileName = @"c:\projects\MyTests\OpenCover\coverage.xml";
// Assert.AreEqual(expectedFileName, fileSystem.DeleteFilePathParameter);
// }
//
// [Test]
// public void StartWhenCodeCoverageResultsFileDoesNotExistsCodeCoverageResultsFileIsNotDeleted()
// {
// fileSystem.FileExistsReturnValue = false;
// StartTestRunner();
//
// Assert.IsNull(fileSystem.DeleteFilePathParameter);
// }
//
// [Test]
// public void StartCreatesDirectoryCodeCoverageResultsFileIfDoesNotExist()
// {
// fileSystem.DirectoryExistsReturnValue = false;
// StartTestRunner();
//
// string expectedDirectory = @"c:\projects\MyTests\OpenCover";
// Assert.AreEqual(expectedDirectory, fileSystem.CreateDirectoryPathParameter);
// }
//
// [Test]
// public void StartChecksDirectoryForCodeCoverageResultsExists()
// {
// fileSystem.DirectoryExistsReturnValue = true;
// StartTestRunner();
//
// string expectedDirectory = @"c:\projects\MyTests\OpenCover";
// Assert.AreEqual(expectedDirectory, fileSystem.DirectoryExistsPathParameter);
// }
//
// [Test]
// public void StartDoesNotCreateDirectoryForCodeCoverageResultsFileIfItExists()
// {
// fileSystem.DirectoryExistsReturnValue = true;
// StartTestRunner();
//
// Assert.IsNull(fileSystem.CreateDirectoryPathParameter);
// }
//
// [Test]
// public void StartFiresMessagesReceivedEventTwice()
// {
// List<string> messages = new List<string>();
// testRunner.MessageReceived += delegate(object o, MessageReceivedEventArgs e) {
// messages.Add(e.Message);
// };
//
// testRunner.ParseStringReturnValue = "Running code coverage";
// StartTestRunner();
//
// string[] expectedMessages = new string[] {
// "Running code coverage",
// GetCodeCoverageCommandLine()
// };
//
// Assert.AreEqual(expectedMessages, messages.ToArray());
// }
//
// string GetCodeCoverageCommandLine()
// {
// return
// "\"d:\\sharpdevelop\\bin\\Tools\\OpenCover\\OpenCover.Console.exe\" -register:user " +
// "-target:\"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " +
// "-targetdir:\"c:\\projects\\MyTests\\bin\\Debug\" " +
// "-targetargs:\"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\" /noxml\" " +
// "-output:\"c:\\projects\\MyTests\\OpenCover\\coverage.xml\" " +
// "-filter:\"+[*]* \"";
// }
//
// [Test]
// public void StartParsesTextForRunningCodeCoverageMessages()
// {
// testRunner.ParseStringReturnValue = "Running code coverage";
// StartTestRunner();
//
// string expectedStringResource = "${res:ICSharpCode.CodeCoverage.RunningCodeCoverage}";
//
// Assert.AreEqual(expectedStringResource, testRunner.ParseStringParameter);
// }
// }
//}

66
src/AddIns/Analysis/CodeCoverage/Test/Testing/OpenCoverApplicationTests.cs

@ -2,9 +2,12 @@ @@ -2,9 +2,12 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Diagnostics;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.UnitTesting;
using NUnit.Framework;
using UnitTesting.Tests.Utils;
@ -12,18 +15,18 @@ using UnitTesting.Tests.Utils; @@ -12,18 +15,18 @@ using UnitTesting.Tests.Utils;
namespace ICSharpCode.CodeCoverage.Tests.Testing
{
[TestFixture]
public class OpenCoverApplicationTests
public class OpenCoverApplicationTests : SDTestFixtureBase
{
NUnitConsoleApplication nunitConsoleApp;
SelectedTests selectedTests;
UnitTestingOptions options;
OpenCoverApplication openCoverApp;
OpenCoverSettings openCoverSettings;
MockCSharpProject project;
[Test]
public void FileNameWhenPartCoverApplicationConstructedWithFileNameParameterMatchesFileNameParameter()
public void FileNameWhenOpenCoverApplicationConstructedWithFileNameParameterMatchesFileNameParameter()
{
string expectedFileName = @"d:\projects\PartCover.exe";
string expectedFileName = @"d:\projects\OpenCover.exe";
CreateOpenCoverApplication(expectedFileName);
Assert.AreEqual(expectedFileName, openCoverApp.FileName);
}
@ -32,38 +35,43 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing @@ -32,38 +35,43 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing
{
CreateNUnitConsoleApplication();
openCoverSettings = new OpenCoverSettings();
openCoverApp = new OpenCoverApplication(fileName, nunitConsoleApp, openCoverSettings);
openCoverApp = new OpenCoverApplication(
fileName,
nunitConsoleApp.GetProcessStartInfo(),
openCoverSettings,
project);
}
void CreateNUnitConsoleApplication()
{
MockCSharpProject project = new MockCSharpProject();
selectedTests = new SelectedTests(project);
project = new MockCSharpProject();
project.FileName = FileName.Create(@"c:\projects\MyTests\MyTests.csproj");
var testProject = new NUnitTestProject(project);
options = new UnitTestingOptions(new Properties());
nunitConsoleApp = new NUnitConsoleApplication(selectedTests, options);
nunitConsoleApp = new NUnitConsoleApplication(new [] { testProject }, options);
}
[Test]
public void FileNameWhenPartCoverApplicationConstructedWithNoParametersIsDeterminedFromFileUtilityAppRootPath()
public void FileNameWhenOpenCoverApplicationConstructedWithNoParametersIsDeterminedFromFileUtilityAppRootPath()
{
FileUtility.ApplicationRootPath = @"d:\sharpdevelop";
CreatePartCoverApplicationWithoutFileName();
CreateOpenCoverApplicationWithoutFileName();
string expectedPath = @"d:\sharpdevelop\bin\Tools\OpenCover\OpenCover.Console.exe";
Assert.AreEqual(expectedPath, openCoverApp.FileName);
}
void CreatePartCoverApplicationWithoutFileName()
void CreateOpenCoverApplicationWithoutFileName()
{
CreateNUnitConsoleApplication();
openCoverApp = new OpenCoverApplication(nunitConsoleApp, new OpenCoverSettings());
openCoverApp = new OpenCoverApplication(nunitConsoleApp.GetProcessStartInfo(), new OpenCoverSettings(), project);
}
[Test]
public void FileNameWhenTakenFromFileUtilityAppRootPathRemovesDotDotCharacters()
{
FileUtility.ApplicationRootPath = @"d:\sharpdevelop\..\sharpdevelop";
CreatePartCoverApplicationWithoutFileName();
CreateOpenCoverApplicationWithoutFileName();
string expectedPath = @"d:\sharpdevelop\bin\Tools\OpenCover\OpenCover.Console.exe";
Assert.AreEqual(expectedPath, openCoverApp.FileName);
}
@ -71,35 +79,35 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing @@ -71,35 +79,35 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing
[Test]
public void TargetIsNUnitConsoleApplicationFileName()
{
CreatePartCoverApplication();
CreateOpenCoverApplication();
Assert.AreEqual(nunitConsoleApp.FileName, openCoverApp.Target);
}
void CreatePartCoverApplication()
void CreateOpenCoverApplication()
{
string fileName = @"d:\partcover\PartCover.exe";
string fileName = @"d:\openCover\OpenCover.exe";
CreateOpenCoverApplication(fileName);
}
[Test]
public void GetTargetArgumentsReturnsNUnitConsoleApplicationCommandLineArguments()
{
CreatePartCoverApplication();
CreateOpenCoverApplication();
Assert.AreEqual(nunitConsoleApp.GetArguments(), openCoverApp.GetTargetArguments());
}
[Test]
public void GetTargetWorkingDirectoryReturnsWorkingDirectoryForProjectOutput()
public void GetTargetWorkingDirectoryReturnsWorkingDirectorySpecifiedByNUnitConsoleApplication()
{
CreatePartCoverApplication();
CreateOpenCoverApplication();
string expectedTargetWorkingDirectory = @"c:\projects\MyTests\bin\Debug";
Assert.AreEqual(expectedTargetWorkingDirectory, openCoverApp.GetTargetWorkingDirectory());
}
[Test]
public void CodeCoverageResultsFileNameReturnsCoverageXmlFileInsidePartCoverDirectoryInsideProjectDirectory()
public void CodeCoverageResultsFileNameReturnsCoverageXmlFileInsideOpenCoverDirectoryInsideProjectDirectory()
{
CreatePartCoverApplication();
CreateOpenCoverApplication();
string expectedOutputDirectory =
@"c:\projects\MyTests\OpenCover\coverage.xml";
@ -107,27 +115,27 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing @@ -107,27 +115,27 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing
}
[Test]
public void SettingsReturnsPartCoverSettingsPassedToConstructor()
public void SettingsReturnsOpenCoverSettingsPassedToConstructor()
{
CreatePartCoverApplication();
CreateOpenCoverApplication();
Assert.AreEqual(openCoverSettings, openCoverApp.Settings);
}
[Test]
public void GetProcessStartInfoReturnsStartInfoWhereFileNameIsPartCoverAppFileName()
public void GetProcessStartInfoReturnsStartInfoWhereFileNameIsOpenCoverAppFileName()
{
string partCoverAppFileName = @"d:\projects\partcover.exe";
CreateOpenCoverApplication(partCoverAppFileName);
string openCoverAppFileName = @"d:\projects\OpenCover.exe";
CreateOpenCoverApplication(openCoverAppFileName);
ProcessStartInfo processStartInfo = openCoverApp.GetProcessStartInfo();
Assert.AreEqual(partCoverAppFileName, processStartInfo.FileName);
Assert.AreEqual(openCoverAppFileName, processStartInfo.FileName);
}
[Test]
public void GetProcessStartInfoWhenNoIncludedItemsReturnsCommandLineWithIncludeForAllAssemblies()
{
FileUtility.ApplicationRootPath = @"d:\sharpdevelop";
CreatePartCoverApplication();
CreateOpenCoverApplication();
ProcessStartInfo processStartInfo = openCoverApp.GetProcessStartInfo();
string expectedCommandLine =
@ -144,7 +152,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing @@ -144,7 +152,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing
public void GetProcessStartInfoWhenHaveIncludedAndExcludedItemsReturnsCommandLineWithIncludeAndExcludeCommandLineArgs()
{
FileUtility.ApplicationRootPath = @"d:\sharpdevelop";
CreatePartCoverApplication();
CreateOpenCoverApplication();
openCoverSettings.Include.Add("[MyTests]*");
openCoverSettings.Include.Add("[MoreTests]*");

544
src/AddIns/Analysis/CodeCoverage/Test/Testing/RunTestWithCodeCoverageCommandTests.cs

@ -1,272 +1,272 @@ @@ -1,272 +1,272 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.UnitTesting;
using NUnit.Framework;
using ICSharpCode.CodeCoverage.Tests.Utils;
using UnitTesting.Tests.Utils;
namespace ICSharpCode.CodeCoverage.Tests.Testing
{
[TestFixture]
public class RunTestWithCodeCoverageCommandTests
{
DerivedRunTestWithCodeCoverageCommand command;
MockRunTestCommandContext context;
MockCodeCoverageTestRunnerFactory mockCodeCoverageTestRunnerFactory;
[SetUp]
public void Init()
{
context = new MockRunTestCommandContext();
mockCodeCoverageTestRunnerFactory = new MockCodeCoverageTestRunnerFactory();
command = new DerivedRunTestWithCodeCoverageCommand(context, mockCodeCoverageTestRunnerFactory);
}
[Test]
public void OnBeforeRunTestsWhenNoCodeCoverageMessageViewCreatedCreatesNewMessageViewCategory()
{
command.CodeCoverageMessageViewCategory = null;
command.CallOnBeforeRunTests();
Assert.AreEqual("CodeCoverage", command.CodeCoverageMessageViewCategory.Category);
}
[Test]
public void OnBeforeRunTestsWhenNoCodeCoverageMessageViewCreatedCreatesNewMessageViewCategoryWithCodeCoverageDisplayCategoryName()
{
command.CodeCoverageMessageViewCategory = null;
command.ParsedStringToReturn = "Code Coverage";
command.CallOnBeforeRunTests();
string expectedDisplayCategoryName = "Code Coverage";
Assert.AreEqual(expectedDisplayCategoryName, command.CodeCoverageMessageViewCategory.DisplayCategory);
}
[Test]
public void OnBeforeRunTestsWhenNoCodeCoverageMessageViewCreatedPassedStringResourceToStringParser()
{
command.CodeCoverageMessageViewCategory = null;
command.ParsedString = null;
command.CallOnBeforeRunTests();
string expectedStringResourceName = "${res:ICSharpCode.UnitTesting.CodeCoverage}";
Assert.AreEqual(expectedStringResourceName, command.ParsedString);
}
[Test]
public void OnBeforeRunTestsWhenCodeCoverageMessageViewCreatedPreviouslyDoesNotCreateAnotherMessageView()
{
MessageViewCategory view = new MessageViewCategory("Test");
command.CodeCoverageMessageViewCategory = view;
command.CallOnBeforeRunTests();
Assert.AreEqual(view, command.CodeCoverageMessageViewCategory);
}
[Test]
public void OnBeforeRunTestsClearsCodeCoverageMessageViewTextWithSafeAsyncCall()
{
MessageViewCategory view = new MessageViewCategory("Test");
view.AppendText("abc");
command.CodeCoverageMessageViewCategory = view;
command.CallOnBeforeRunTests();
Assert.AreEqual(String.Empty, view.Text);
}
[Test]
public void OnBeforeRunTestsClearsCodeCoverageResults()
{
command.CallOnBeforeRunTests();
Action expectedAction = CodeCoverageService.ClearResults;
Assert.AreEqual(expectedAction, context.MockUnitTestWorkbench.SafeThreadAsyncMethodCalls[0]);
}
[Test]
public void OnAfterRunTestsWhenNoCriticalTestErrorsCodeCoveragePadIsShown()
{
context.MockTaskService.HasCriticalErrorsReturnValue = false;
PadDescriptor padDescriptor = AddCodeCoveragePadToMockWorkbench();
command.CallOnAfterRunTests();
Action expectedAction = padDescriptor.BringPadToFront;
Assert.AreEqual(expectedAction, context.MockUnitTestWorkbench.SafeThreadAsyncMethodCalls[0]);
}
PadDescriptor AddCodeCoveragePadToMockWorkbench()
{
PadDescriptor padDescriptor = new PadDescriptor(typeof(CodeCoveragePad), "Code Coverage", String.Empty);
context.MockUnitTestWorkbench.AddPadDescriptor(padDescriptor);
return padDescriptor;
}
[Test]
public void OnAfterRunTestsWhenCriticalErrorsCodeCoveragePadIsNotShown()
{
context.MockTaskService.HasCriticalErrorsReturnValue = true;
PadDescriptor padDescriptor = AddCodeCoveragePadToMockWorkbench();
command.CallOnAfterRunTests();
Assert.AreEqual(0, context.MockUnitTestWorkbench.SafeThreadAsyncMethodCalls.Count);
}
[Test]
public void OnAfterRunTestsDoesNotTreatWarningsAsErrors()
{
context.MockTaskService.TreatWarningsAsErrorsParameterPassedToHasCriticalErrors = true;
AddCodeCoveragePadToMockWorkbench();
command.CallOnAfterRunTests();
Assert.IsFalse(context.MockTaskService.TreatWarningsAsErrorsParameterPassedToHasCriticalErrors);
}
[Test]
public void MessageReceivedFromTestRunnerIsAddedToCodeCoverageMessageViewNotUnitTestsMessageView()
{
command.CodeCoverageMessageViewCategory = null;
MessageReceivedEventArgs e = new MessageReceivedEventArgs("test");
command.CallTestRunnerMessageReceived(this, e);
string expectedText = "test\r\n";
Assert.AreEqual(expectedText, command.CodeCoverageMessageViewCategory.Text);
}
[Test]
public void CreateTestRunnerCreatesNewCodeCoverageTestRunner()
{
CodeCoverageTestRunner expectedTestRunner = mockCodeCoverageTestRunnerFactory.TestRunner;
Assert.AreEqual(expectedTestRunner, command.CallCreateTestRunner(null));
}
[Test]
public void CodeCoverageProcessExitsAndCodeCoverageFileExistsCausesCodeCoverageResultsToBeDisplayed()
{
ActionArguments<CodeCoverageResults> actionArgs =
CreateTestRunnerAndFireCodeCoverageProcessExitEvent();
Action<CodeCoverageResults> expectedAction = CodeCoverageService.ShowResults;
Assert.AreEqual(expectedAction, actionArgs.Action);
}
ActionArguments<CodeCoverageResults> CreateTestRunnerAndFireCodeCoverageProcessExitEvent()
{
command.CallCreateTestRunner(null);
MockCSharpProject project = new MockCSharpProject();
SelectedTests tests = new SelectedTests(project);
mockCodeCoverageTestRunnerFactory.FileSystem.FileExistsReturnValue = true;
mockCodeCoverageTestRunnerFactory.FileSystem.CreateTextReaderReturnValue = new StringReader("<a/>");
mockCodeCoverageTestRunnerFactory.TestRunner.Start(tests);
mockCodeCoverageTestRunnerFactory.FileSystem.CreateTextReaderReturnValue = CreateCodeCoverageResultsTextReader();
mockCodeCoverageTestRunnerFactory.ProcessRunner.FireProcessExitedEvent();
object actionArgsAsObject = context.MockUnitTestWorkbench.SafeThreadAsyncMethodCallsWithArguments[0];
return (ActionArguments<CodeCoverageResults>)actionArgsAsObject;
}
[Test]
public void CodeCoverageResultsFromXmlHasModuleCalledMyTests()
{
CodeCoverageResults results = CreateCodeCoverageResults();
string expectedName = "MyTests";
Assert.AreEqual(expectedName, results.Modules[0].Name);
}
CodeCoverageResults CreateCodeCoverageResults()
{
TextReader reader = CreateCodeCoverageResultsTextReader();
return new CodeCoverageResults(reader);
}
TextReader CreateCodeCoverageResultsTextReader()
{
string xml =
"<CoverageSession xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n" +
" <Modules>\r\n" +
" <Module hash=\"44-54-B6-13-97-49-45-F8-6A-74-9E-49-0C-77-87-C6-9C-54-47-7A\">\r\n" +
" <FullName>C:\\Projects\\MyTests\\bin\\MyTests.DLL</FullName>\r\n" +
" <ModuleName>MyTests</ModuleName>\r\n" +
" <Files>\r\n" +
" <File uid=\"1\" fullPath=\"c:\\Projects\\MyTests\\MyTestFixture.cs\" />\r\n" +
" </Files>\r\n" +
" <Classes>\r\n" +
" <Class>\r\n" +
" <FullName>MyTests.Tests.MyTestFixture</FullName>\r\n" +
" <Methods>\r\n" +
" <Method visited=\"true\" cyclomaticComplexity=\"1\" sequenceCoverage=\"100\" branchCoverage=\"100\" isConstructor=\"false\" isStatic=\"false\" isGetter=\"false\" isSetter=\"false\">\r\n" +
" <MetadataToken>100663297</MetadataToken>\r\n" +
" <Name>System.Void MyTests.Tests.MyTestFixture::SimpleTest1()</Name>\r\n" +
" <FileRef uid=\"1\" />\r\n" +
" <SequencePoints>\r\n" +
" <SequencePoint vc='12' sl='20' sc='3' el='20' ec='4'/>\r\n" +
" </SequencePoints>\r\n" +
" </Method>\r\n" +
" </Methods>\r\n" +
" </Class>\r\n" +
" </Classes>\r\n" +
" </Module>\r\n" +
" </Modules>\r\n" +
"</CoverageSession>";
return new StringReader(xml);
}
[Test]
public void CodeCoverageProcessExitsAndCodeCoverageFileExistsCausesCodeCoverageResultsToBeReadFromFile()
{
ActionArguments<CodeCoverageResults> actionArgs =
CreateTestRunnerAndFireCodeCoverageProcessExitEvent();
CodeCoverageResults result = actionArgs.Arg;
Assert.AreEqual("MyTests", result.Modules[0].Name);
}
[Test]
public void CodeCoverageProcessExitsAndCodeCoverageFileDoesNotExistsAddsTaskToTaskList()
{
ActionArguments<Task> args = CreateTestRunnerAndFirePartCoverProcessExitEventWhenNoCoverageFileProduced();
Action<Task> expectedAction = context.MockTaskService.Add;
Assert.AreEqual(expectedAction, args.Action);
}
ActionArguments<Task> CreateTestRunnerAndFirePartCoverProcessExitEventWhenNoCoverageFileProduced()
{
command.CallCreateTestRunner(null);
MockCSharpProject project = new MockCSharpProject();
SelectedTests tests = new SelectedTests(project);
mockCodeCoverageTestRunnerFactory.FileSystem.FileExistsReturnValue = true;
mockCodeCoverageTestRunnerFactory.FileSystem.CreateTextReaderReturnValue = new StringReader("<a/>");
mockCodeCoverageTestRunnerFactory.TestRunner.Start(tests);
mockCodeCoverageTestRunnerFactory.FileSystem.FileExistsReturnValue = false;
mockCodeCoverageTestRunnerFactory.ProcessRunner.FireProcessExitedEvent();
object actionArgsAsObject = context.MockUnitTestWorkbench.SafeThreadAsyncMethodCallsWithArguments[0];
return (ActionArguments<Task>)actionArgsAsObject;
}
[Test]
public void CodeCoverageProcessExitsAndCodeCoverageFileDoesNotExistsAddsErrorTaskToTaskList()
{
command.ParsedStringToReturn = "No code coverage results file generated.";
ActionArguments<Task> args = CreateTestRunnerAndFirePartCoverProcessExitEventWhenNoCoverageFileProduced();
Task task = args.Arg;
string description = @"No code coverage results file generated. c:\projects\MyTests\OpenCover\coverage.xml";
int column = 1;
int line = 1;
Task expectedTask = new Task(null, description, column, line, TaskType.Error);
TaskComparison comparison = new TaskComparison(expectedTask, task);
Assert.IsTrue(comparison.IsMatch, comparison.MismatchReason);
}
}
}
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using System.IO;
//using ICSharpCode.SharpDevelop;
//using ICSharpCode.SharpDevelop.Gui;
//using ICSharpCode.UnitTesting;
//using NUnit.Framework;
//using ICSharpCode.CodeCoverage.Tests.Utils;
//using UnitTesting.Tests.Utils;
//
//namespace ICSharpCode.CodeCoverage.Tests.Testing
//{
// [TestFixture]
// public class RunTestWithCodeCoverageCommandTests
// {
// DerivedRunTestWithCodeCoverageCommand command;
// MockRunTestCommandContext context;
// MockCodeCoverageTestRunnerFactory mockCodeCoverageTestRunnerFactory;
//
// [SetUp]
// public void Init()
// {
// context = new MockRunTestCommandContext();
// mockCodeCoverageTestRunnerFactory = new MockCodeCoverageTestRunnerFactory();
// command = new DerivedRunTestWithCodeCoverageCommand(context, mockCodeCoverageTestRunnerFactory);
// }
//
// [Test]
// public void OnBeforeRunTestsWhenNoCodeCoverageMessageViewCreatedCreatesNewMessageViewCategory()
// {
// command.CodeCoverageMessageViewCategory = null;
// command.CallOnBeforeRunTests();
//
// Assert.AreEqual("CodeCoverage", command.CodeCoverageMessageViewCategory.Category);
// }
//
// [Test]
// public void OnBeforeRunTestsWhenNoCodeCoverageMessageViewCreatedCreatesNewMessageViewCategoryWithCodeCoverageDisplayCategoryName()
// {
// command.CodeCoverageMessageViewCategory = null;
// command.ParsedStringToReturn = "Code Coverage";
// command.CallOnBeforeRunTests();
//
// string expectedDisplayCategoryName = "Code Coverage";
// Assert.AreEqual(expectedDisplayCategoryName, command.CodeCoverageMessageViewCategory.DisplayCategory);
// }
//
// [Test]
// public void OnBeforeRunTestsWhenNoCodeCoverageMessageViewCreatedPassedStringResourceToStringParser()
// {
// command.CodeCoverageMessageViewCategory = null;
// command.ParsedString = null;
// command.CallOnBeforeRunTests();
//
// string expectedStringResourceName = "${res:ICSharpCode.UnitTesting.CodeCoverage}";
// Assert.AreEqual(expectedStringResourceName, command.ParsedString);
// }
//
// [Test]
// public void OnBeforeRunTestsWhenCodeCoverageMessageViewCreatedPreviouslyDoesNotCreateAnotherMessageView()
// {
// MessageViewCategory view = new MessageViewCategory("Test");
// command.CodeCoverageMessageViewCategory = view;
// command.CallOnBeforeRunTests();
// Assert.AreEqual(view, command.CodeCoverageMessageViewCategory);
// }
//
// [Test]
// public void OnBeforeRunTestsClearsCodeCoverageMessageViewTextWithSafeAsyncCall()
// {
// MessageViewCategory view = new MessageViewCategory("Test");
// view.AppendText("abc");
// command.CodeCoverageMessageViewCategory = view;
// command.CallOnBeforeRunTests();
//
// Assert.AreEqual(String.Empty, view.Text);
// }
//
// [Test]
// public void OnBeforeRunTestsClearsCodeCoverageResults()
// {
// command.CallOnBeforeRunTests();
//
// Action expectedAction = CodeCoverageService.ClearResults;
// Assert.AreEqual(expectedAction, context.MockUnitTestWorkbench.SafeThreadAsyncMethodCalls[0]);
// }
//
// [Test]
// public void OnAfterRunTestsWhenNoCriticalTestErrorsCodeCoveragePadIsShown()
// {
// context.MockTaskService.HasCriticalErrorsReturnValue = false;
// PadDescriptor padDescriptor = AddCodeCoveragePadToMockWorkbench();
// command.CallOnAfterRunTests();
//
// Action expectedAction = padDescriptor.BringPadToFront;
// Assert.AreEqual(expectedAction, context.MockUnitTestWorkbench.SafeThreadAsyncMethodCalls[0]);
// }
//
// PadDescriptor AddCodeCoveragePadToMockWorkbench()
// {
// PadDescriptor padDescriptor = new PadDescriptor(typeof(CodeCoveragePad), "Code Coverage", String.Empty);
// context.MockUnitTestWorkbench.AddPadDescriptor(padDescriptor);
// return padDescriptor;
// }
//
// [Test]
// public void OnAfterRunTestsWhenCriticalErrorsCodeCoveragePadIsNotShown()
// {
// context.MockTaskService.HasCriticalErrorsReturnValue = true;
// PadDescriptor padDescriptor = AddCodeCoveragePadToMockWorkbench();
// command.CallOnAfterRunTests();
//
// Assert.AreEqual(0, context.MockUnitTestWorkbench.SafeThreadAsyncMethodCalls.Count);
// }
//
// [Test]
// public void OnAfterRunTestsDoesNotTreatWarningsAsErrors()
// {
// context.MockTaskService.TreatWarningsAsErrorsParameterPassedToHasCriticalErrors = true;
// AddCodeCoveragePadToMockWorkbench();
// command.CallOnAfterRunTests();
//
// Assert.IsFalse(context.MockTaskService.TreatWarningsAsErrorsParameterPassedToHasCriticalErrors);
// }
//
// [Test]
// public void MessageReceivedFromTestRunnerIsAddedToCodeCoverageMessageViewNotUnitTestsMessageView()
// {
// command.CodeCoverageMessageViewCategory = null;
// MessageReceivedEventArgs e = new MessageReceivedEventArgs("test");
// command.CallTestRunnerMessageReceived(this, e);
// string expectedText = "test\r\n";
// Assert.AreEqual(expectedText, command.CodeCoverageMessageViewCategory.Text);
// }
//
// [Test]
// public void CreateTestRunnerCreatesNewCodeCoverageTestRunner()
// {
// CodeCoverageTestRunner expectedTestRunner = mockCodeCoverageTestRunnerFactory.TestRunner;
// Assert.AreEqual(expectedTestRunner, command.CallCreateTestRunner(null));
// }
//
// [Test]
// public void CodeCoverageProcessExitsAndCodeCoverageFileExistsCausesCodeCoverageResultsToBeDisplayed()
// {
// ActionArguments<CodeCoverageResults> actionArgs =
// CreateTestRunnerAndFireCodeCoverageProcessExitEvent();
//
// Action<CodeCoverageResults> expectedAction = CodeCoverageService.ShowResults;
// Assert.AreEqual(expectedAction, actionArgs.Action);
// }
//
// ActionArguments<CodeCoverageResults> CreateTestRunnerAndFireCodeCoverageProcessExitEvent()
// {
// command.CallCreateTestRunner(null);
// MockCSharpProject project = new MockCSharpProject();
// SelectedTests tests = new SelectedTests(project);
// mockCodeCoverageTestRunnerFactory.FileSystem.FileExistsReturnValue = true;
// mockCodeCoverageTestRunnerFactory.FileSystem.CreateTextReaderReturnValue = new StringReader("<a/>");
// mockCodeCoverageTestRunnerFactory.TestRunner.Start(tests);
//
// mockCodeCoverageTestRunnerFactory.FileSystem.CreateTextReaderReturnValue = CreateCodeCoverageResultsTextReader();
//
// mockCodeCoverageTestRunnerFactory.ProcessRunner.FireProcessExitedEvent();
//
// object actionArgsAsObject = context.MockUnitTestWorkbench.SafeThreadAsyncMethodCallsWithArguments[0];
// return (ActionArguments<CodeCoverageResults>)actionArgsAsObject;
// }
//
// [Test]
// public void CodeCoverageResultsFromXmlHasModuleCalledMyTests()
// {
// CodeCoverageResults results = CreateCodeCoverageResults();
// string expectedName = "MyTests";
// Assert.AreEqual(expectedName, results.Modules[0].Name);
// }
//
// CodeCoverageResults CreateCodeCoverageResults()
// {
// TextReader reader = CreateCodeCoverageResultsTextReader();
// return new CodeCoverageResults(reader);
// }
//
// TextReader CreateCodeCoverageResultsTextReader()
// {
// string xml =
// "<CoverageSession xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n" +
// " <Modules>\r\n" +
// " <Module hash=\"44-54-B6-13-97-49-45-F8-6A-74-9E-49-0C-77-87-C6-9C-54-47-7A\">\r\n" +
// " <FullName>C:\\Projects\\MyTests\\bin\\MyTests.DLL</FullName>\r\n" +
// " <ModuleName>MyTests</ModuleName>\r\n" +
// " <Files>\r\n" +
// " <File uid=\"1\" fullPath=\"c:\\Projects\\MyTests\\MyTestFixture.cs\" />\r\n" +
// " </Files>\r\n" +
// " <Classes>\r\n" +
// " <Class>\r\n" +
// " <FullName>MyTests.Tests.MyTestFixture</FullName>\r\n" +
// " <Methods>\r\n" +
// " <Method visited=\"true\" cyclomaticComplexity=\"1\" sequenceCoverage=\"100\" branchCoverage=\"100\" isConstructor=\"false\" isStatic=\"false\" isGetter=\"false\" isSetter=\"false\">\r\n" +
// " <MetadataToken>100663297</MetadataToken>\r\n" +
// " <Name>System.Void MyTests.Tests.MyTestFixture::SimpleTest1()</Name>\r\n" +
// " <FileRef uid=\"1\" />\r\n" +
// " <SequencePoints>\r\n" +
// " <SequencePoint vc='12' sl='20' sc='3' el='20' ec='4'/>\r\n" +
// " </SequencePoints>\r\n" +
// " </Method>\r\n" +
// " </Methods>\r\n" +
// " </Class>\r\n" +
// " </Classes>\r\n" +
// " </Module>\r\n" +
// " </Modules>\r\n" +
// "</CoverageSession>";
//
// return new StringReader(xml);
// }
//
// [Test]
// public void CodeCoverageProcessExitsAndCodeCoverageFileExistsCausesCodeCoverageResultsToBeReadFromFile()
// {
// ActionArguments<CodeCoverageResults> actionArgs =
// CreateTestRunnerAndFireCodeCoverageProcessExitEvent();
//
// CodeCoverageResults result = actionArgs.Arg;
// Assert.AreEqual("MyTests", result.Modules[0].Name);
// }
//
// [Test]
// public void CodeCoverageProcessExitsAndCodeCoverageFileDoesNotExistsAddsTaskToTaskList()
// {
// ActionArguments<Task> args = CreateTestRunnerAndFirePartCoverProcessExitEventWhenNoCoverageFileProduced();
// Action<Task> expectedAction = context.MockTaskService.Add;
// Assert.AreEqual(expectedAction, args.Action);
// }
//
// ActionArguments<Task> CreateTestRunnerAndFirePartCoverProcessExitEventWhenNoCoverageFileProduced()
// {
// command.CallCreateTestRunner(null);
//
// MockCSharpProject project = new MockCSharpProject();
// SelectedTests tests = new SelectedTests(project);
//
// mockCodeCoverageTestRunnerFactory.FileSystem.FileExistsReturnValue = true;
// mockCodeCoverageTestRunnerFactory.FileSystem.CreateTextReaderReturnValue = new StringReader("<a/>");
// mockCodeCoverageTestRunnerFactory.TestRunner.Start(tests);
//
// mockCodeCoverageTestRunnerFactory.FileSystem.FileExistsReturnValue = false;
// mockCodeCoverageTestRunnerFactory.ProcessRunner.FireProcessExitedEvent();
//
// object actionArgsAsObject = context.MockUnitTestWorkbench.SafeThreadAsyncMethodCallsWithArguments[0];
// return (ActionArguments<Task>)actionArgsAsObject;
// }
//
// [Test]
// public void CodeCoverageProcessExitsAndCodeCoverageFileDoesNotExistsAddsErrorTaskToTaskList()
// {
// command.ParsedStringToReturn = "No code coverage results file generated.";
// ActionArguments<Task> args = CreateTestRunnerAndFirePartCoverProcessExitEventWhenNoCoverageFileProduced();
// Task task = args.Arg;
//
// string description = @"No code coverage results file generated. c:\projects\MyTests\OpenCover\coverage.xml";
// int column = 1;
// int line = 1;
// Task expectedTask = new Task(null, description, column, line, TaskType.Error);
//
// TaskComparison comparison = new TaskComparison(expectedTask, task);
//
// Assert.IsTrue(comparison.IsMatch, comparison.MismatchReason);
// }
// }
//}

82
src/AddIns/Analysis/CodeCoverage/Test/Utils/DerivedCodeCoverageTestRunner.cs

@ -1,41 +1,41 @@ @@ -1,41 +1,41 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Diagnostics;
using ICSharpCode.CodeCoverage;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.CodeCoverage.Tests.Utils
{
public class DerivedCodeCoverageTestRunner : CodeCoverageTestRunner
{
public string ParseStringReturnValue;
public string ParseStringParameter;
public DerivedCodeCoverageTestRunner(IUnitTestProcessRunner processRunner,
ITestResultsMonitor testResultsMonitor,
UnitTestingOptions options,
IFileSystem fileSystem,
IUnitTestMessageService messageService)
: base(new CodeCoverageTestRunnerContext(processRunner, testResultsMonitor, fileSystem, messageService, options))
{
}
public ProcessStartInfo CallGetProcessStartInfo(SelectedTests selectedTests)
{
return base.GetProcessStartInfo(selectedTests);
}
public TestResult CallCreateTestResultForTestFramework(TestResult testResult)
{
return base.CreateTestResultForTestFramework(testResult);
}
protected override string ParseString(string text)
{
ParseStringParameter = text;
return ParseStringReturnValue;
}
}
}
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using System.Diagnostics;
//using ICSharpCode.CodeCoverage;
//using ICSharpCode.UnitTesting;
//
//namespace ICSharpCode.CodeCoverage.Tests.Utils
//{
// public class DerivedCodeCoverageTestRunner : CodeCoverageTestRunner
// {
// public string ParseStringReturnValue;
// public string ParseStringParameter;
//
// public DerivedCodeCoverageTestRunner(IUnitTestProcessRunner processRunner,
// ITestResultsMonitor testResultsMonitor,
// UnitTestingOptions options,
// IFileSystem fileSystem,
// IUnitTestMessageService messageService)
// : base(new CodeCoverageTestRunnerContext(processRunner, testResultsMonitor, fileSystem, messageService, options))
// {
// }
//
// public ProcessStartInfo CallGetProcessStartInfo(SelectedTests selectedTests)
// {
// return base.GetProcessStartInfo(selectedTests);
// }
//
// public TestResult CallCreateTestResultForTestFramework(TestResult testResult)
// {
// return base.CreateTestResultForTestFramework(testResult);
// }
//
// protected override string ParseString(string text)
// {
// ParseStringParameter = text;
// return ParseStringReturnValue;
// }
// }
//}

118
src/AddIns/Analysis/CodeCoverage/Test/Utils/DerivedRunTestWithCodeCoverageCommand.cs

@ -1,59 +1,59 @@ @@ -1,59 +1,59 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.CodeCoverage;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.CodeCoverage.Tests.Utils
{
public class DerivedRunTestWithCodeCoverageCommand : RunTestWithCodeCoverageCommand
{
public string ParsedStringToReturn = String.Empty;
public string ParsedString;
public DerivedRunTestWithCodeCoverageCommand(IRunTestCommandContext context,
ICodeCoverageTestRunnerFactory factory)
: base(context, factory)
{
}
public void CallOnBeforeRunTests()
{
base.OnBeforeRunTests();
}
public void CallOnAfterRunTests()
{
base.OnAfterRunTests();
}
protected override MessageViewCategory CreateMessageViewCategory(string category, string displayCategory)
{
return new MessageViewCategory(category, displayCategory);
}
public MessageViewCategory CodeCoverageMessageViewCategory {
get { return base.Category; }
set { base.Category = value;}
}
protected override string StringParse(string text)
{
ParsedString = text;
return ParsedStringToReturn;
}
public void CallTestRunnerMessageReceived(object source, MessageReceivedEventArgs e)
{
base.TestRunnerMessageReceived(source, e);
}
public ITestRunner CallCreateTestRunner(IProject project)
{
return base.CreateTestRunner(project);
}
}
}
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.CodeCoverage;
//using ICSharpCode.SharpDevelop.Gui;
//using ICSharpCode.SharpDevelop.Project;
//using ICSharpCode.UnitTesting;
//
//namespace ICSharpCode.CodeCoverage.Tests.Utils
//{
// public class DerivedRunTestWithCodeCoverageCommand : RunTestWithCodeCoverageCommand
// {
// public string ParsedStringToReturn = String.Empty;
// public string ParsedString;
//
// public DerivedRunTestWithCodeCoverageCommand(IRunTestCommandContext context,
// ICodeCoverageTestRunnerFactory factory)
// : base(context, factory)
// {
// }
//
// public void CallOnBeforeRunTests()
// {
// base.OnBeforeRunTests();
// }
//
// public void CallOnAfterRunTests()
// {
// base.OnAfterRunTests();
// }
//
// protected override MessageViewCategory CreateMessageViewCategory(string category, string displayCategory)
// {
// return new MessageViewCategory(category, displayCategory);
// }
//
// public MessageViewCategory CodeCoverageMessageViewCategory {
// get { return base.Category; }
// set { base.Category = value;}
// }
//
// protected override string StringParse(string text)
// {
// ParsedString = text;
// return ParsedStringToReturn;
// }
//
// public void CallTestRunnerMessageReceived(object source, MessageReceivedEventArgs e)
// {
// base.TestRunnerMessageReceived(source, e);
// }
//
// public ITestRunner CallCreateTestRunner(IProject project)
// {
// return base.CreateTestRunner(project);
// }
// }
//}

80
src/AddIns/Analysis/CodeCoverage/Test/Utils/MockCodeCoverageTestRunnerFactory.cs

@ -1,40 +1,40 @@ @@ -1,40 +1,40 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.UnitTesting;
using UnitTesting.Tests.Utils;
namespace ICSharpCode.CodeCoverage.Tests.Utils
{
public class MockCodeCoverageTestRunnerFactory : ICodeCoverageTestRunnerFactory
{
public MockProcessRunner ProcessRunner;
public MockTestResultsMonitor TestResultsMonitor;
public UnitTestingOptions Options;
public CodeCoverageTestRunner TestRunner;
public MockFileSystem FileSystem;
public MockMessageService MessageService;
public MockCodeCoverageTestRunnerFactory()
{
ProcessRunner = new MockProcessRunner();
TestResultsMonitor = new MockTestResultsMonitor();
Options = new UnitTestingOptions(new Properties());
FileSystem = new MockFileSystem();
CodeCoverageTestRunnerContext context = new CodeCoverageTestRunnerContext(ProcessRunner,
TestResultsMonitor,
FileSystem,
MessageService,
Options);
TestRunner = new CodeCoverageTestRunner(context);
}
public CodeCoverageTestRunner CreateCodeCoverageTestRunner()
{
return TestRunner;
}
}
}
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
//// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System;
//using ICSharpCode.CodeCoverage;
//using ICSharpCode.Core;
//using ICSharpCode.UnitTesting;
//using UnitTesting.Tests.Utils;
//
//namespace ICSharpCode.CodeCoverage.Tests.Utils
//{
// public class MockCodeCoverageTestRunnerFactory : ICodeCoverageTestRunnerFactory
// {
// public MockProcessRunner ProcessRunner;
// public MockTestResultsMonitor TestResultsMonitor;
// public UnitTestingOptions Options;
// public CodeCoverageTestRunner TestRunner;
// public MockFileSystem FileSystem;
// public MockMessageService MessageService;
//
// public MockCodeCoverageTestRunnerFactory()
// {
// ProcessRunner = new MockProcessRunner();
// TestResultsMonitor = new MockTestResultsMonitor();
// Options = new UnitTestingOptions(new Properties());
// FileSystem = new MockFileSystem();
// CodeCoverageTestRunnerContext context = new CodeCoverageTestRunnerContext(ProcessRunner,
// TestResultsMonitor,
// FileSystem,
// MessageService,
// Options);
// TestRunner = new CodeCoverageTestRunner(context);
// }
//
// public CodeCoverageTestRunner CreateCodeCoverageTestRunner()
// {
// return TestRunner;
// }
// }
//}

2
src/AddIns/Analysis/UnitTesting/NUnit/NUnitTestProject.cs

@ -27,7 +27,7 @@ namespace ICSharpCode.UnitTesting @@ -27,7 +27,7 @@ namespace ICSharpCode.UnitTesting
if (options.UseDebugger)
return new NUnitTestDebugger();
else
return new NUnitTestRunner();
return new NUnitTestRunner(options);
}
protected override bool IsTestClass(ITypeDefinition typeDefinition)

7
src/AddIns/Analysis/UnitTesting/NUnit/NUnitTestRunner.cs

@ -14,13 +14,14 @@ namespace ICSharpCode.UnitTesting @@ -14,13 +14,14 @@ namespace ICSharpCode.UnitTesting
{
UnitTestingOptions options;
public NUnitTestRunner()
: this(new TestProcessRunnerBaseContext(),
public NUnitTestRunner(TestExecutionOptions executionOptions)
: this(new TestProcessRunnerBaseContext(executionOptions),
UnitTestingOptions.Instance.Clone())
{
}
public NUnitTestRunner(TestProcessRunnerBaseContext context, UnitTestingOptions options)
public NUnitTestRunner(TestProcessRunnerBaseContext context,
UnitTestingOptions options)
: base(context)
{
this.options = options;

8
src/AddIns/Analysis/UnitTesting/TestRunner/TestExecutionOptions.cs

@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace ICSharpCode.UnitTesting
{
@ -15,5 +17,11 @@ namespace ICSharpCode.UnitTesting @@ -15,5 +17,11 @@ namespace ICSharpCode.UnitTesting
/// The default is <c>false</c>.
/// </summary>
public bool UseDebugger { get; set; }
/// <summary>
/// Modifies the ProcessStartInfo before the tests are run.
/// </summary>
public Func<ProcessStartInfo, IEnumerable<ITest>, ProcessStartInfo> ModifyProcessStartInfoBeforeTestRun
= (startInfo, tests) => startInfo;
}
}

10
src/AddIns/Analysis/UnitTesting/TestRunner/TestProcessRunnerBase.cs

@ -12,6 +12,7 @@ namespace ICSharpCode.UnitTesting @@ -12,6 +12,7 @@ namespace ICSharpCode.UnitTesting
{
public abstract class TestProcessRunnerBase : TestRunnerBase
{
TestExecutionOptions executionOptions;
IUnitTestProcessRunner processRunner;
ITestResultsReader testResultsReader;
IFileSystem fileSystem;
@ -19,6 +20,7 @@ namespace ICSharpCode.UnitTesting @@ -19,6 +20,7 @@ namespace ICSharpCode.UnitTesting
public TestProcessRunnerBase(TestProcessRunnerBaseContext context)
{
this.executionOptions = context.ExecutionOptions;
this.processRunner = context.TestProcessRunner;
this.testResultsReader = context.TestResultsReader;
this.fileSystem = context.FileSystem;
@ -47,7 +49,13 @@ namespace ICSharpCode.UnitTesting @@ -47,7 +49,13 @@ namespace ICSharpCode.UnitTesting
public override void Start(IEnumerable<ITest> selectedTests)
{
ProcessStartInfo startInfo = GetProcessStartInfo(selectedTests);
Start(startInfo);
ProcessStartInfo modifiedStartInfo = ModifyProcessStartInfoBeforeRun(startInfo, selectedTests);
Start(modifiedStartInfo);
}
ProcessStartInfo ModifyProcessStartInfoBeforeRun(ProcessStartInfo startInfo, IEnumerable<ITest> selectedTests)
{
return executionOptions.ModifyProcessStartInfoBeforeTestRun(startInfo, selectedTests);
}
void Start(ProcessStartInfo processStartInfo)

18
src/AddIns/Analysis/UnitTesting/TestRunner/TestProcessRunnerBaseContext.cs

@ -8,31 +8,39 @@ using ICSharpCode.SharpDevelop; @@ -8,31 +8,39 @@ using ICSharpCode.SharpDevelop;
namespace ICSharpCode.UnitTesting
{
public class TestProcessRunnerBaseContext
{
{
TestExecutionOptions executionOptions;
IUnitTestProcessRunner processRunner;
ITestResultsReader testResultsReader;
IFileSystem fileSystem;
IMessageService messageService;
public TestProcessRunnerBaseContext()
: this(new UnitTestProcessRunner(),
public TestProcessRunnerBaseContext(TestExecutionOptions executionOptions)
: this(executionOptions,
new UnitTestProcessRunner(),
new TestResultsReader(),
new UnitTestFileService(),
SD.MessageService)
{
}
public TestProcessRunnerBaseContext(IUnitTestProcessRunner processRunner,
public TestProcessRunnerBaseContext(TestExecutionOptions executionOptions,
IUnitTestProcessRunner processRunner,
ITestResultsReader testResultsMonitor,
IFileSystem fileSystem,
IMessageService messageService)
{
this.executionOptions = executionOptions;
this.processRunner = processRunner;
this.testResultsReader = testResultsMonitor;
this.fileSystem = fileSystem;
this.messageService = messageService;
}
public TestExecutionOptions ExecutionOptions {
get { return executionOptions; }
}
public IUnitTestProcessRunner TestProcessRunner {
get { return processRunner; }
}

3
src/Setup/Files.wxs

@ -769,13 +769,12 @@ @@ -769,13 +769,12 @@
<File Source="..\..\AddIns\Analysis\CodeAnalysis\CodeAnalysis.addin" Id="CodeAnalysis.addin" Name="CodeAnalysis.addin" />
</Component>
</Directory>
<!--
<Directory Id="CodeCoverageFolder" Name="CodeCoverage">
<Component Guid="86A8B8D1-9FFD-46A4-84F8-2BD530E1F83E" Id="CodeCoverageFiles" DiskId="1">
<File Source="..\..\AddIns\Analysis\CodeCoverage\CodeCoverage.dll" Id="CodeCoverage.dll" Name="CodeCoverage.dll" Assembly=".net" AssemblyApplication="CodeCoverage.dll" AssemblyManifest="CodeCoverage.dll" KeyPath="yes" />
<File Source="..\..\AddIns\Analysis\CodeCoverage\CodeCoverage.addin" Id="CodeCoverage.addin" Name="CodeCoverage.addin" />
</Component>
</Directory>-->
</Directory>
<Directory Id="UnitTestingFolder" Name="UnitTesting">
<Component Guid="F2F7F12D-1920-49BC-86B0-65B5A1B76516" Id="UnitTestingAddInFiles" DiskId="1">
<File Source="..\..\AddIns\Analysis\UnitTesting\UnitTesting.dll" Id="UnitTesting.dll" Name="UnitTesting.dll" Assembly=".net" AssemblyApplication="UnitTesting.dll" AssemblyManifest="UnitTesting.dll" KeyPath="yes" />

4
src/Setup/Setup.wxs

@ -310,8 +310,8 @@ @@ -310,8 +310,8 @@
<ComponentRef Id="AddInManagerSharpZipLibDll"/>
<ComponentRef Id="AddInScoutFiles"/>
<ComponentRef Id="CodeAnalysisFiles"/>
<!--<ComponentRef Id="CodeQualityFiles"/>
<ComponentRef Id="CodeCoverageFiles"/>-->
<!--<ComponentRef Id="CodeQualityFiles"/>-->
<ComponentRef Id="CodeCoverageFiles"/>
<ComponentRef Id="DebuggerAddInFiles"/>
<ComponentRef Id="FiletypeIcons"/>
<ComponentRef Id="FiletypeRegistererFiles"/>

Loading…
Cancel
Save