From f07659c22f1fd45d76d439e305e739afa7564d71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Laval?= Date: Mon, 14 Aug 2017 14:58:07 -0400 Subject: [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. --- .../MonoDevelop.UnitTesting.NUnit/AddinInfo.cs | 1 + .../MonoDevelop.UnitTesting.NUnit.csproj | 5 +++++ .../NUnitProjectTestSuite.cs | 25 ++++++++++++++++++++-- 3 files changed, 29 insertions(+), 2 deletions(-) (limited to 'main/src/addins/MonoDevelop.UnitTesting.NUnit') 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 @@ MonoDevelop.UnitTesting False + + {F218643D-2E74-4309-820E-206A54B7133F} + MonoDevelop.PackageManagement + False + 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)) -- cgit v1.2.3