diff options
author | Manish Sinha <manish.sinha@xamarin.com> | 2015-07-24 18:09:15 +0300 |
---|---|---|
committer | Manish Sinha <manish.sinha@xamarin.com> | 2015-07-24 23:07:52 +0300 |
commit | 0e8c6072df5f15b20b3c36911a0a214dd4334175 (patch) | |
tree | 12f8f7b4b684d41b89742bb5238efbf9c98e1d7d /main/tests/UserInterfaceTests/DialogTests | |
parent | 7115b8963ac774beda184032fe41841cc6d7563f (diff) |
[UITests] When the NuGet package is updated, the Local Copy flag should be preserved
Also some fixes to StashManage
Diffstat (limited to 'main/tests/UserInterfaceTests/DialogTests')
-rw-r--r-- | main/tests/UserInterfaceTests/DialogTests/NuGetDialogTests.cs | 77 |
1 files changed, 75 insertions, 2 deletions
diff --git a/main/tests/UserInterfaceTests/DialogTests/NuGetDialogTests.cs b/main/tests/UserInterfaceTests/DialogTests/NuGetDialogTests.cs index 79769714f7..0e0f82e5aa 100644 --- a/main/tests/UserInterfaceTests/DialogTests/NuGetDialogTests.cs +++ b/main/tests/UserInterfaceTests/DialogTests/NuGetDialogTests.cs @@ -25,6 +25,10 @@ // THE SOFTWARE. using NUnit.Framework; +using MonoDevelop.Ide.Commands; +using MonoDevelop.Core; +using System.IO; +using System.Xml; namespace UserInterfaceTests { @@ -56,7 +60,7 @@ namespace UserInterfaceTests Session.WaitForElement (c => c.Window ().Marked ("MonoDevelop.Ide.Gui.DefaultWorkbench").Property ("TabControl.CurrentTab.Text", "readme.txt")); } - [Test, Category ("NuGetUpgrade")] + [Test] public void TestReadmeTxtUpgradeOpens () { CreateProject (); @@ -66,7 +70,7 @@ namespace UserInterfaceTests IsPreRelease = true }, TakeScreenShot); Session.WaitForElement (c => c.Window ().Marked ("MonoDevelop.Ide.Gui.DefaultWorkbench").Property ("TabControl.CurrentTab.Text", "readme.txt")); - Session.ExecuteCommand (MonoDevelop.Ide.Commands.FileCommands.CloseFile); + Session.ExecuteCommand (FileCommands.CloseFile); Session.WaitForElement (IdeQuery.TextArea); NuGetController.UpdatePackage (new NuGetPackageOptions { PackageName = "RestSharp", @@ -76,6 +80,75 @@ namespace UserInterfaceTests Session.WaitForElement (c => c.Window ().Marked ("MonoDevelop.Ide.Gui.DefaultWorkbench").Property ("TabControl.CurrentTab.Text", "readme.txt")); } + [Test, Description ("When a NuGet package is updated, the 'Local Copy' value should be preserved")] + public void TestLocalCopyPreservedUpdate () + { + var templateOptions = new TemplateSelectionOptions { + CategoryRoot = OtherCategoryRoot, + Category = ".NET", + TemplateKindRoot = GeneralKindRoot, + TemplateKind = "Console Project" + }; + var projectDetails = new ProjectDetails (templateOptions); + CreateProject (templateOptions, projectDetails); + NuGetController.AddPackage (new NuGetPackageOptions { + PackageName = "CommandLineParser", + Version = "1.9.7", + IsPreRelease = false + }, TakeScreenShot); + + string solutionFolder = GetSolutionDirectory (); + string solutionPath = Path.Combine (solutionFolder, projectDetails.SolutionName+".sln"); + var projectPath = Path.Combine (solutionFolder, projectDetails.ProjectName, projectDetails.ProjectName + ".csproj"); + Assert.IsTrue (File.Exists (projectPath)); + + TakeScreenShot ("About-To-Close-Solution"); + Session.ExecuteCommand (FileCommands.CloseWorkspace); + TakeScreenShot ("Closed-Solution"); + + AddOrCheckLocalCopy (projectPath, true); + + Session.GlobalInvoke ("MonoDevelop.Ide.IdeApp.Workspace.OpenWorkspaceItem", new FilePath (solutionPath), true); + TakeScreenShot ("Solution-Opened"); + Ide.WaitForPackageUpdate (); + TakeScreenShot ("Solution-Ready"); + Session.WaitForElement (IdeQuery.TextArea); + + NuGetController.UpdateAllNuGetPackages (TakeScreenShot); + + AddOrCheckLocalCopy (projectPath, false); + } + + void AddOrCheckLocalCopy (string projectPath, bool addLocalCopy) + { + using (var stream = new FileStream (projectPath, FileMode.Open, FileAccess.ReadWrite)) { + var xmlDoc = new XmlDocument(); + xmlDoc.Load(stream); + var ns = "http://schemas.microsoft.com/developer/msbuild/2003"; + XmlNamespaceManager xnManager = new XmlNamespaceManager(xmlDoc.NameTable); + xnManager.AddNamespace("ui", ns); + XmlNode root = xmlDoc.DocumentElement; + var uitest = root.SelectSingleNode ("//ui:Reference[@Include=\"CommandLine\"]", xnManager); + Assert.IsNotNull (uitest, "Cannot find CommandLine package reference in file: "+projectPath); + var privateUITestNode = uitest.SelectSingleNode ("./ui:Private", xnManager); + + if (addLocalCopy) { + Assert.IsNull (privateUITestNode, uitest.InnerXml, "CommandLine package is already set to 'No Local Copy'"); + var privateNode = xmlDoc.CreateElement ("Private", ns); + privateNode.InnerText = "False"; + uitest.AppendChild (privateNode); + stream.SetLength (0); + xmlDoc.Save (stream); + stream.Flush (); + } else { + Assert.IsNotNull (privateUITestNode, "Cannot find CommandLine package with 'No Local Copy' set"); + Assert.AreEqual (privateUITestNode.InnerText, "False"); + } + stream.Close (); + } + } + + ProjectDetails CreateProject (TemplateSelectionOptions templateOptions = null, ProjectDetails projectDetails = null) { templateOptions = templateOptions ?? new TemplateSelectionOptions { |