Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <llsan@microsoft.com>2019-06-07 17:24:45 +0300
committerLluis Sanchez <llsan@microsoft.com>2019-06-07 17:24:45 +0300
commitadc0c4e33b695c315488262c3c09112e87800111 (patch)
treee4c93ea740a9d3b691e14fd04878c98adc4c34de /main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests
parent526ae087002e5e8aba0c5430fea9142942f85635 (diff)
parentb19a7bf2d6a71057f0820de1c12b9a5faa7d9b53 (diff)
Merge remote-tracking branch 'origin/master' into release-8.2monodevelop-8.2.0.707
Diffstat (limited to 'main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests')
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetAwareProject.cs5
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableRestorePackagesHandler.cs54
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableRestorePackagesInProjectHandler.cs54
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj3
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetProjectExtensionsTests.cs6
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackagesCommandHandlerTests.cs257
6 files changed, 379 insertions, 0 deletions
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetAwareProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetAwareProject.cs
index abe4cce276..33cd30fbb5 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetAwareProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetAwareProject.cs
@@ -33,6 +33,11 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
{
class FakeNuGetAwareProject : DummyDotNetProject, INuGetAwareProject
{
+ public FakeNuGetAwareProject ()
+ {
+ Initialize (this);
+ }
+
public NuGetProject CreateNuGetProject ()
{
throw new NotImplementedException ();
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableRestorePackagesHandler.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableRestorePackagesHandler.cs
new file mode 100644
index 0000000000..dfb6272a16
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableRestorePackagesHandler.cs
@@ -0,0 +1,54 @@
+//
+// TestableRestorePackagesHandler.cs
+//
+// Author:
+// Matt Ward <matt.ward@microsoft.com>
+//
+// Copyright (c) 2019 Microsoft
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using MonoDevelop.Components.Commands;
+using MonoDevelop.PackageManagement.Commands;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.PackageManagement.Tests.Helpers
+{
+ class TestableRestorePackagesHandler : RestorePackagesHandler
+ {
+ CommandInfo info = new CommandInfo ();
+ Project project;
+ Solution solution;
+
+ public bool Enabled {
+ get { return info.Enabled; }
+ }
+
+ public void RunUpdate (Solution solution, Project project)
+ {
+ this.solution = solution;
+ this.project = project;
+
+ base.Update (info);
+ }
+
+ protected override Project CurrentSelectedProject => project;
+ protected override Solution CurrentSelectedSolution => solution;
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableRestorePackagesInProjectHandler.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableRestorePackagesInProjectHandler.cs
new file mode 100644
index 0000000000..64304cb624
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableRestorePackagesInProjectHandler.cs
@@ -0,0 +1,54 @@
+//
+// TestableRestorePackagesInProjectHandler.cs
+//
+// Author:
+// Matt Ward <matt.ward@microsoft.com>
+//
+// Copyright (c) 2019 Microsoft
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using MonoDevelop.Components.Commands;
+using MonoDevelop.PackageManagement.Commands;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.PackageManagement.Tests.Helpers
+{
+ class TestableRestorePackagesInProjectHandler : RestorePackagesInProjectHandler
+ {
+ CommandInfo info = new CommandInfo ();
+ Project project;
+ Solution solution;
+
+ public bool Enabled {
+ get { return info.Enabled; }
+ }
+
+ public void RunUpdate (Solution solution, Project project)
+ {
+ this.solution = solution;
+ this.project = project;
+
+ base.Update (info);
+ }
+
+ protected override Project CurrentSelectedProject => project;
+ protected override Solution CurrentSelectedSolution => solution;
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
index 25d8ffd69f..db41a064a4 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
@@ -151,6 +151,9 @@
<Compile Include="MonoDevelop.PackageManagement.Tests\FullyQualifiedReferencePathTests.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests\MSBuildPackageSpecCreatorTests.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests\InstallPackageWithAvailableItemNameTests.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.Tests\PackagesCommandHandlerTests.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\TestableRestorePackagesHandler.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\TestableRestorePackagesInProjectHandler.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj">
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetProjectExtensionsTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetProjectExtensionsTests.cs
index 422d599e35..4843451775 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetProjectExtensionsTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetProjectExtensionsTests.cs
@@ -49,6 +49,12 @@ namespace MonoDevelop.PackageManagement.Tests
DotNetProjectExtensions.FileExists = existingFiles.Contains;
}
+ [TearDown]
+ public void TearDown ()
+ {
+ DotNetProjectExtensions.FileExists = File.Exists;
+ }
+
void CreateProject (string fileName, string projectName)
{
project = new FakeDotNetProject (fileName.ToNativePath ()) {
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackagesCommandHandlerTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackagesCommandHandlerTests.cs
new file mode 100644
index 0000000000..7cec48b14d
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackagesCommandHandlerTests.cs
@@ -0,0 +1,257 @@
+//
+// PackagesCommandHandlerTests.cs
+//
+// Author:
+// Matt Ward <matt.ward@microsoft.com>
+//
+// Copyright (c) 2019 Microsoft
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using MonoDevelop.Core;
+using MonoDevelop.PackageManagement.Tests.Helpers;
+using MonoDevelop.Projects;
+using NUnit.Framework;
+using UnitTests;
+
+namespace MonoDevelop.PackageManagement.Tests
+{
+ [TestFixture]
+ public class PackagesCommandHandlerTests : RestoreTestBase
+ {
+ TestableRestorePackagesHandler restorePackagesHandler;
+ TestableRestorePackagesInProjectHandler restorePackagesInProjectHandler;
+
+ [SetUp]
+ public void Init ()
+ {
+ restorePackagesHandler = new TestableRestorePackagesHandler ();
+ restorePackagesInProjectHandler = new TestableRestorePackagesInProjectHandler ();
+ }
+
+ [Test]
+ public async Task ProjectWithNoPackages ()
+ {
+ FilePath solutionFileName = Util.GetSampleProject ("csharp-console", "csharp-console.sln");
+
+ solution = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName);
+ var project = solution.GetAllDotNetProjects ().Single ();
+
+ // Project selected.
+ restorePackagesHandler.RunUpdate (solution, project);
+ Assert.IsFalse (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled);
+
+ // Solution only selected
+ restorePackagesHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled);
+ }
+
+ [Test]
+ public async Task ProjectWithPackagesConfig ()
+ {
+ FilePath solutionFileName = Util.GetSampleProject ("csharp-console", "csharp-console.sln");
+
+ solution = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName);
+ var project = solution.GetAllDotNetProjects ().Single ();
+
+ var packagesConfigFileName = project.BaseDirectory.Combine ("packages.config");
+ File.WriteAllText (packagesConfigFileName, "<packages />");
+
+ // Project selected.
+ restorePackagesHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesInProjectHandler.Enabled);
+
+ // Solution only selected
+ restorePackagesHandler.RunUpdate (solution, project: null);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled, "Should be false - no project selected");
+ }
+
+ [Test]
+ public async Task SdkProject_PackageReference ()
+ {
+ FilePath solutionFileName = Util.GetSampleProject ("NetStandardXamarinForms", "NetStandardXamarinForms.sln");
+
+ solution = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName);
+ var project = solution.GetAllDotNetProjects ().Single ();
+
+ // Project selected.
+ restorePackagesHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesInProjectHandler.Enabled);
+
+ // Solution only selected
+ restorePackagesHandler.RunUpdate (solution, project: null);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled, "Should be false - no project selected");
+ }
+
+ [Test]
+ public async Task SdkProject_NoPackageReferences ()
+ {
+ FilePath solutionFileName = Util.GetSampleProject ("netstandard-sdk", "netstandard-sdk.sln");
+
+ solution = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName);
+ var project = solution.GetAllDotNetProjects ().Single ();
+
+ // Project selected.
+ restorePackagesHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesInProjectHandler.Enabled);
+
+ // Solution only selected
+ restorePackagesHandler.RunUpdate (solution, project: null);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled, "Should be false - no project selected");
+ }
+
+ [Test]
+ public async Task SdkProject_NetFramework472 ()
+ {
+ FilePath solutionFileName = Util.GetSampleProject ("netframework-sdk", "netframework-sdk.sln");
+
+ solution = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName);
+ var project = solution.GetAllDotNetProjects ().Single ();
+
+ // Project selected.
+ restorePackagesHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesInProjectHandler.Enabled);
+
+ // Solution only selected
+ restorePackagesHandler.RunUpdate (solution, project: null);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled, "Should be false - no project selected");
+ }
+
+ [Test]
+ public async Task PackageReferenceProject_NonSdk ()
+ {
+ FilePath solutionFileName = Util.GetSampleProject ("package-reference", "package-reference.sln");
+
+ solution = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName);
+ var project = solution.GetAllDotNetProjects ().Single ();
+
+ // Project selected.
+ restorePackagesHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesInProjectHandler.Enabled);
+
+ // Solution only selected
+ restorePackagesHandler.RunUpdate (solution, project: null);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled, "Should be false - no project selected");
+ }
+
+ [Test]
+ public async Task RestoreProjectStyle_NoPackageReferences ()
+ {
+ FilePath solutionFileName = Util.GetSampleProject ("RestoreStylePackageReference", "RestoreStylePackageReference.sln");
+
+ solution = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName);
+ var project = solution.GetAllDotNetProjects ().Single ();
+
+ // Project selected.
+ restorePackagesHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesInProjectHandler.Enabled);
+
+ // Solution only selected
+ restorePackagesHandler.RunUpdate (solution, project: null);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled, "Should be false - no project selected");
+ }
+
+ [Test]
+ public void NuGetAwareProject ()
+ {
+ var project = new FakeNuGetAwareProject ();
+ var solution = new Solution ();
+ solution.RootFolder.AddItem (project);
+
+ // No packages in project.
+ project.HasPackagesReturnValue = false;
+
+ // Project selected.
+ restorePackagesHandler.RunUpdate (solution, project);
+ Assert.IsFalse (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled);
+
+ // Solution only selected
+ restorePackagesHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled, "Should be false - no project selected");
+
+ // Project has packages.
+ project.HasPackagesReturnValue = true;
+
+ // Project selected.
+ restorePackagesHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project);
+ Assert.IsTrue (restorePackagesInProjectHandler.Enabled);
+
+ // Solution only selected
+ restorePackagesHandler.RunUpdate (solution, project: null);
+ Assert.IsTrue (restorePackagesHandler.Enabled);
+
+ restorePackagesInProjectHandler.RunUpdate (solution, project: null);
+ Assert.IsFalse (restorePackagesInProjectHandler.Enabled, "Should be false - no project selected");
+ }
+ }
+}