diff options
author | Jérémie Laval <jeremie.laval@gmail.com> | 2017-08-14 21:58:07 +0300 |
---|---|---|
committer | Jérémie Laval <jeremie.laval@gmail.com> | 2017-08-14 23:45:17 +0300 |
commit | f07659c22f1fd45d76d439e305e739afa7564d71 (patch) | |
tree | 733674bd90f38038587588155d0caaf0e725b9a0 /main/src/addins/MonoDevelop.UnitTesting.NUnit | |
parent | 57618ee76560cb6369e36667e84e024001b48b0c (diff) |
[NUnit] Recognize unit-test projects when using PackageReference NuGet references instead of packages.config
This needed to use some (currently) internal types of MonoDevelop.PackageManagement for which a temporary InternalsVisibleTo was added.
Diffstat (limited to 'main/src/addins/MonoDevelop.UnitTesting.NUnit')
3 files changed, 29 insertions, 2 deletions
diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/AddinInfo.cs b/main/src/addins/MonoDevelop.UnitTesting.NUnit/AddinInfo.cs index 6a99bf020a..5de61bfd30 100644 --- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/AddinInfo.cs +++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/AddinInfo.cs @@ -14,3 +14,4 @@ using Mono.Addins.Description; [assembly:AddinDependency ("Core", MonoDevelop.BuildInfo.Version)] [assembly:AddinDependency ("Ide", MonoDevelop.BuildInfo.Version)] [assembly:AddinDependency ("UnitTesting", MonoDevelop.BuildInfo.Version)] +[assembly:AddinDependency ("PackageManagement", MonoDevelop.BuildInfo.Version)] diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit.csproj b/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit.csproj index 30b3da6b60..42d7e3d3f2 100644 --- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit.csproj +++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit.csproj @@ -70,6 +70,11 @@ <Name>MonoDevelop.UnitTesting</Name> <Private>False</Private> </ProjectReference> + <ProjectReference Include="..\MonoDevelop.PackageManagement\MonoDevelop.PackageManagement.csproj"> + <Project>{F218643D-2E74-4309-820E-206A54B7133F}</Project> + <Name>MonoDevelop.PackageManagement</Name> + <Private>False</Private> + </ProjectReference> </ItemGroup> <ItemGroup> <EmbeddedResource Include="MonoDevelopNUnit.addin.xml"> diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitProjectTestSuite.cs b/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitProjectTestSuite.cs index 1d88381efb..92f49b88b9 100644 --- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitProjectTestSuite.cs +++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitProjectTestSuite.cs @@ -43,6 +43,7 @@ using System.Reflection; using MonoDevelop.Ide.Gui.Components; using MonoDevelop.Core.Assemblies; using MonoDevelop.Core; +using MonoDevelop.PackageManagement; namespace MonoDevelop.UnitTesting.NUnit { @@ -80,8 +81,8 @@ namespace MonoDevelop.UnitTesting.NUnit if (!project.ParentSolution.GetConfiguration (IdeApp.Workspace.ActiveConfiguration).BuildEnabledForItem (project)) return null; - foreach (var p in project.References) { - var nv = GetNUnitVersion (p); + foreach (var item in project.Items) { + var nv = GetNUnitVersion (item); if (nv != null) return new NUnitProjectTestSuite (project, nv.Value); } @@ -93,6 +94,17 @@ namespace MonoDevelop.UnitTesting.NUnit return GetNUnitVersion (p).HasValue; } + public static NUnitVersion? GetNUnitVersion (ProjectItem item) + { + switch (item) { + case ProjectReference pr: + return GetNUnitVersion (pr); + case ProjectPackageReference ppr: + return GetNUnitVersion (ppr); + } + return null; + } + public static NUnitVersion? GetNUnitVersion (ProjectReference p) { if (p.Reference.IndexOf ("GuiUnit", StringComparison.OrdinalIgnoreCase) != -1 || p.Reference.StartsWith ("nunitlite", StringComparison.OrdinalIgnoreCase)) @@ -118,6 +130,15 @@ namespace MonoDevelop.UnitTesting.NUnit return null; } + internal static NUnitVersion? GetNUnitVersion (ProjectPackageReference p) + { + if (p.Include.IndexOf ("GuiUnit", StringComparison.OrdinalIgnoreCase) != -1) + return NUnitVersion.NUnit2; + if (p.Include.IndexOf ("nunit.framework", StringComparison.OrdinalIgnoreCase) != -1) + return p.IsAtLeastVersion (new Version (3, 0)) ? NUnitVersion.NUnit3 : NUnitVersion.NUnit2; + return null; + } + protected override SourceCodeLocation GetSourceCodeLocation (string fixtureTypeNamespace, string fixtureTypeName, string testName) { if (string.IsNullOrEmpty (fixtureTypeName)) |