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
path: root/main
diff options
context:
space:
mode:
authorMatt Ward <matt.ward@xamarin.com>2017-01-23 19:23:25 +0300
committerMatt Ward <matt.ward@xamarin.com>2017-01-23 19:23:25 +0300
commitca468eda8e46284d14f8c8cc6c9281a8635b660a (patch)
treea95cf6f794c82e47f6f5ee81887bb6ebdf823853 /main
parent18da8d5424c7c8dabea6c4470fafecab9d0e9532 (diff)
[Core] Add unit tests for MSBuildProject.SetMonoDevelopProjectExtension
The xmlns attribute was not being removed for a Sdk style project when setting a MonoDevelop project extension. However this did not affect the file being saved. To make things consistent the xmlns attribute is now removed if it is an empty string and the project is an Sdk style project.
Diffstat (limited to 'main')
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs2
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs45
2 files changed, 46 insertions, 1 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs
index de52502587..3db8b8c64a 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs
@@ -929,7 +929,7 @@ namespace MonoDevelop.Projects.MSBuild
}
XmlUtil.Indent (format, value, false);
var xmlns = value.GetAttribute ("xmlns");
- if (xmlns == Namespace)
+ if (xmlns == (Namespace ?? string.Empty))
value.RemoveAttribute ("xmlns");
SetProjectExtension (parent);
NotifyChanged ();
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs
index ce15b478b6..2e87dee4e9 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs
@@ -793,6 +793,51 @@ namespace MonoDevelop.Projects
Assert.AreEqual (1, monoDevelopElement.ChildNodes.Count);
}
+ [TestCase ("Sdk=\"Microsoft.NET.Sdk\" ToolsVersion=\"15.0\"",
+ "<ExtensionData>Value</ExtensionData>",
+ false)]
+ [TestCase ("Sdk=\"Microsoft.NET.Sdk\" ToolsVersion=\"15.0\"",
+ "<ExtensionData xmlns=\"\">Value</ExtensionData>",
+ false)]
+ [TestCase ("ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"",
+ "<ExtensionData>Value</ExtensionData>",
+ true)] // xmlns=''
+ [TestCase ("ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"",
+ "<ExtensionData xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">Value</ExtensionData>",
+ false)]
+ public void SetMonoDevelopProjectExtension (
+ string projectElementAttributes,
+ string extensionXml,
+ bool expectedHasXmlAttribute)
+ {
+ string projectXml =
+ "<Project " + projectElementAttributes + ">\r\n" +
+ " <PropertyGroup>\r\n" +
+ " <TargetFramework>netcoreapp1.0</TargetFramework>\r\n" +
+ " </PropertyGroup>\r\n" +
+ "</Project>";
+
+ var p = new MSBuildProject ();
+ p.LoadXml (projectXml);
+
+ var doc = new XmlDocument ();
+ doc.LoadXml (extensionXml);
+ var element = doc.DocumentElement;
+ p.SetMonoDevelopProjectExtension ("Test", element);
+
+ string xml = p.SaveToString ();
+ doc = new XmlDocument ();
+ doc.LoadXml (xml);
+
+ var projectExtensions = (XmlElement)doc.DocumentElement.ChildNodes[1];
+ var monoDevelopElement = (XmlElement)projectExtensions.ChildNodes[0];
+ var propertiesElement = (XmlElement)monoDevelopElement.ChildNodes[0];
+ var extensionDataElement = (XmlElement)propertiesElement.ChildNodes[0];
+
+ Assert.AreEqual (expectedHasXmlAttribute, extensionDataElement.HasAttribute ("xmlns"));
+ Assert.AreEqual ("ExtensionData", extensionDataElement.Name);
+ }
+
/// <summary>
/// This works without any changes to MSBuildProperty using the full
/// MSBuild xmlns value.