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:
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetProjectContext.cs5
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs35
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopProjectSystemTests.cs82
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProjectSystem.cs14
4 files changed, 134 insertions, 2 deletions
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetProjectContext.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetProjectContext.cs
index 34cc7c2016..124c159f38 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetProjectContext.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetProjectContext.cs
@@ -45,8 +45,13 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
public void Log (MessageLevel level, string message, params object [] args)
{
+ LastLogLevel = level;
+ LastMessageLogged = String.Format (message, args);
}
+ public MessageLevel? LastLogLevel { get; set; }
+ public string LastMessageLogged { get; set; }
+
public void ReportError (string message)
{
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs
index e5c6bdf939..cd658a6425 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableMonoDevelopProjectSystem.cs
@@ -25,6 +25,7 @@
// THE SOFTWARE.
using System;
+using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
@@ -114,6 +115,40 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
NewImportsHandler = new FakeNuGetPackageNewImportsHandler ();
return NewImportsHandler;
}
+
+ Dictionary<string, IEnumerable<string>> enumeratedDirectories = new Dictionary<string, IEnumerable<string>> ();
+
+ public void AddDirectoriesForPath (string path, params string[] directories)
+ {
+ enumeratedDirectories[path] = directories;
+ }
+
+ protected override IEnumerable<string> EnumerateDirectories (string path)
+ {
+ IEnumerable<string> directories;
+ if (enumeratedDirectories.TryGetValue (path, out directories)) {
+ return directories;
+ }
+ return new string[0];
+ }
+
+ Dictionary<string, IEnumerable<string>> enumeratedFiles = new Dictionary<string, IEnumerable<string>> ();
+
+ public void AddFilesForPath (string path, string searchPattern, SearchOption searchOption, params string[] files)
+ {
+ string key = path + searchPattern + searchOption.ToString ();
+ enumeratedFiles[key] = files;
+ }
+
+ protected override IEnumerable<string> EnumerateFiles (string path, string searchPattern, SearchOption searchOption)
+ {
+ IEnumerable<string> files;
+ string key = path + searchPattern + searchOption.ToString ();
+ if (enumeratedFiles.TryGetValue (key, out files)) {
+ return files;
+ }
+ return new string[0];
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopProjectSystemTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopProjectSystemTests.cs
index f2dff69aa6..6950a2ed3f 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopProjectSystemTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopProjectSystemTests.cs
@@ -28,12 +28,15 @@ using System;
using System.IO;
using System.Linq;
using System.Runtime.Versioning;
+using System.Threading.Tasks;
using MonoDevelop.Core;
using MonoDevelop.Core.Assemblies;
using MonoDevelop.PackageManagement.Tests.Helpers;
using MonoDevelop.Projects;
using MonoDevelop.Projects.MSBuild;
+using NuGet.Packaging.Core;
using NuGet.ProjectManagement;
+using NuGet.Versioning;
using NUnit.Framework;
namespace MonoDevelop.PackageManagement.Tests
@@ -1216,6 +1219,85 @@ namespace MonoDevelop.PackageManagement.Tests
Assert.IsTrue (projectSystem.NewImportsHandler.IsDisposed);
}
+
+ [Test]
+ public void AddExistingFile_FileExists_AddsFileToProject ()
+ {
+ CreateTestProject (@"d:\projects\MyProject\MyProject.csproj");
+ string fileName = @"d:\projects\MyProject\src\NewFile.cs".ToNativePath ();
+ project.AddDefaultBuildAction (BuildAction.Compile, fileName);
+ CreateProjectSystem (project);
+
+ projectSystem.AddExistingFile (fileName);
+
+ ProjectFile fileItem = ProjectHelper.GetFile (project, fileName);
+ var expectedFileName = new FilePath (fileName);
+ Assert.AreEqual (expectedFileName, fileItem.FilePath);
+ Assert.AreEqual (BuildAction.Compile, fileItem.BuildAction);
+ Assert.IsNull (projectSystem.PathPassedToPhysicalFileSystemAddFile);
+ Assert.IsTrue (project.IsSaved);
+ Assert.AreEqual (1, project.FilesAddedWhenSavedCount);
+ }
+
+ [Test]
+ public async Task ExecuteScriptAsync_InitPowerShellScript_WarningLogged ()
+ {
+ CreateTestProject ();
+ CreateProjectSystem (project);
+ string scriptPath = @"init.ps1".ToNativePath ();
+ var package = new PackageIdentity ("Test", new NuGetVersion ("1.2"));
+ string expectedLogMessage = "WARNING: Test Package contains PowerShell script 'init.ps1' which will not be run.";
+
+ await projectSystem.ExecuteScriptAsync (package, null, scriptPath, null, false);
+
+ Assert.AreEqual (MessageLevel.Warning, projectSystem.FakeNuGetProjectContext.LastLogLevel);
+ Assert.AreEqual (expectedLogMessage, projectSystem.FakeNuGetProjectContext.LastMessageLogged);
+ }
+
+ [Test]
+ public void GetDirectories_TwoDirectories_ReturnsTwoDirectories ()
+ {
+ CreateTestProject (@"d:\projects\MyProject\MyProject.csproj");
+ CreateProjectSystem (project);
+ var expectedDirectories = new string[] {
+ @"d:\projects\MyProject\Scripts\One".ToNativePath (),
+ @"d:\projects\MyProject\Scripts\Two".ToNativePath (),
+ };
+ projectSystem.AddDirectoriesForPath (@"d:\projects\MyProject\Scripts".ToNativePath (), expectedDirectories);
+
+ string[] directories = projectSystem.GetDirectories (@"Scripts").ToArray ();
+
+ CollectionAssert.AreEqual (expectedDirectories, directories);
+ }
+
+ [Test]
+ public void GetFiles_Recursive_ThrowsNotImplementedException ()
+ {
+ CreateTestProject ();
+ CreateProjectSystem (project);
+
+ Assert.Throws<NotImplementedException> (() => projectSystem.GetFiles ("", "*.*", true));
+ }
+
+ [Test]
+ public void GetFiles_TwoFiles_ReturnsTwoFiles ()
+ {
+ CreateTestProject (@"d:\projects\MyProject\MyProject.csproj");
+ CreateProjectSystem (project);
+ var expectedFiles = new string[] {
+ @"d:\projects\MyProject\Scripts\one.js".ToNativePath (),
+ @"d:\projects\MyProject\Scripts\two.js".ToNativePath (),
+ };
+ projectSystem.AddFilesForPath (
+ @"d:\projects\MyProject\Scripts".ToNativePath (),
+ "*.*",
+ SearchOption.TopDirectoryOnly,
+ expectedFiles);
+
+ string[] files = projectSystem.GetFiles (@"Scripts", "*.*", false).ToArray ();
+
+ CollectionAssert.AreEqual (expectedFiles, files);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProjectSystem.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProjectSystem.cs
index a53421b30a..18851a668f 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProjectSystem.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopMSBuildNuGetProjectSystem.cs
@@ -311,7 +311,12 @@ namespace MonoDevelop.PackageManagement
public IEnumerable<string> GetDirectories (string path)
{
string fullPath = GetFullPath (path);
- return Directory.EnumerateDirectories (fullPath);
+ return EnumerateDirectories (fullPath);
+ }
+
+ protected virtual IEnumerable<string> EnumerateDirectories (string path)
+ {
+ return Directory.EnumerateDirectories (path);
}
public IEnumerable<string> GetFiles (string path, string filter, bool recursive)
@@ -322,7 +327,12 @@ namespace MonoDevelop.PackageManagement
}
string fullPath = GetFullPath (path);
- return Directory.EnumerateFiles (fullPath, filter, SearchOption.TopDirectoryOnly);
+ return EnumerateFiles (fullPath, filter, SearchOption.TopDirectoryOnly);
+ }
+
+ protected virtual IEnumerable<string> EnumerateFiles (string path, string searchPattern, SearchOption searchOption)
+ {
+ return Directory.EnumerateFiles (path, searchPattern, searchOption);
}
/// <summary>