diff options
author | Alexander Köplinger <alex.koeplinger@outlook.com> | 2015-07-23 12:52:06 +0300 |
---|---|---|
committer | Alex Rønne Petersen <alexrp@xamarin.com> | 2015-08-12 22:50:33 +0300 |
commit | 97a225b1c27f36e0a1a749af6dc1f14b75333622 (patch) | |
tree | b063272def3d1f34916d5296ebb01c5e4673f671 | |
parent | 27471e014eae3c27c0929874431cefe72e792b2c (diff) |
Revert "[Microsoft.Build.Engine] Fix bug with escaped semicolon and spaces"mono-4.2.0-pre-branch
This reverts commit 51297ed7ab06480df84520c758639b6cef0790d9.
It caused a regression for escaped quotes (%22) in msbuild properties. See https://github.com/mono/mono/commit/51297ed7ab06480df84520c758639b6cef0790d9#commitcomment-11827605.
Disable test that now fails again after the revert. Add new test that verifies the behavior originally broken by the change.
6 files changed, 20 insertions, 6 deletions
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItem.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItem.cs index 57352e70f4f..f663120bf79 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItem.cs +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItem.cs @@ -472,7 +472,7 @@ namespace Microsoft.Build.BuildEngine { BuildItemGroup big; BuildItem bi = new BuildItem (this); - bi.finalItemSpec = ((ITaskItem2)taskitem).EvaluatedIncludeEscaped; + bi.finalItemSpec = taskitem.ItemSpec; foreach (DictionaryEntry de in taskitem.CloneCustomMetadata ()) { bi.unevaluatedMetadata.Add ((string) de.Key, (string) de.Value); diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs index 536204e94fe..ccfc0fa3a0e 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs @@ -156,7 +156,7 @@ namespace Microsoft.Build.BuildEngine { for (int i = 0; i < lists.Count; i++) { foreach (object o in lists [i]) { if (o is string) - expressionCollection.Add ((string) o); + expressionCollection.Add (MSBuildUtils.Unescape ((string) o)); else if (!allowItems && o is ItemReference) expressionCollection.Add (((ItemReference) o).OriginalString); else if (!allowMd && o is MetadataReference) { diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ExpressionCollection.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ExpressionCollection.cs index d6299066332..ca0034a1092 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ExpressionCollection.cs +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ExpressionCollection.cs @@ -233,11 +233,11 @@ namespace Microsoft.Build.BuildEngine { // Trim and Remove empty items List<ITaskItem> toRemove = new List<ITaskItem> (); for (int i = 0; i < finalItems.Count; i ++) { - string s = ((ITaskItem2)finalItems [i]).EvaluatedIncludeEscaped.Trim (); + string s = finalItems [i].ItemSpec.Trim (); if (s.Length == 0) toRemove.Add (finalItems [i]); else - ((ITaskItem2)finalItems [i]).EvaluatedIncludeEscaped = s; + finalItems [i].ItemSpec = s; } foreach (ITaskItem ti in toRemove) finalItems.Remove (ti); diff --git a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/MessageTest.cs b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/MessageTest.cs index 1aa785622ba..24b76b6c07c 100644 --- a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/MessageTest.cs +++ b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/MessageTest.cs @@ -79,6 +79,7 @@ namespace MonoTests.Microsoft.Build.Tasks { <Message Text='Text5' Importance='normal'/> <Message Text='Text6' Importance='high'/> <Message Text='Text7' /> + <Message Text='%22abc test%22 123 %22def%22' /> <Message Text='Text8' Importance='weird_importance'/> </Target> </Project> @@ -102,7 +103,8 @@ namespace MonoTests.Microsoft.Build.Tasks { Assert.AreEqual (0, testLogger.CheckAny ("Text5", MessageImportance.Normal), "A5"); Assert.AreEqual (0, testLogger.CheckAny ("Text6", MessageImportance.High), "A6"); Assert.AreEqual (0, testLogger.CheckAny ("Text7", MessageImportance.Normal), "A7"); - Assert.AreEqual (1, testLogger.CheckAny ("Text8", MessageImportance.Normal), "A8"); + Assert.AreEqual (0, testLogger.CheckAny ("\"abc test\" 123 \"def\"", MessageImportance.Normal), "A8"); + Assert.AreEqual (1, testLogger.CheckAny ("Text8", MessageImportance.Normal), "A9"); } } } diff --git a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/WriteLinesToFileTest.cs b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/WriteLinesToFileTest.cs index 4a61015f0be..3342c003e8b 100755 --- a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/WriteLinesToFileTest.cs +++ b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/WriteLinesToFileTest.cs @@ -91,6 +91,7 @@ namespace MonoTests.Microsoft.Build.Tasks { } [Test] + [Category("NotWorking")] // this fails due to an xbuild bug, it works on MS.NET public void TestLineWithEscapedSemicolon () { string[] lines = new string[] { "abc%3Btest%3B%3B", "%3Bdef" }; @@ -101,6 +102,7 @@ namespace MonoTests.Microsoft.Build.Tasks { } [Test] + [Category("NotWorking")] // this fails due to an xbuild bug, it works on MS.NET public void TestLineWithEscapedSpace () { string[] lines = new string[] { " %20%20abc%20test ", " def%20%20" }; @@ -111,6 +113,16 @@ namespace MonoTests.Microsoft.Build.Tasks { } [Test] + public void TestLineWithEscapedQuote () + { + string[] lines = new string[] { "%22abc test%22 123 %22def%22" }; + CreateProjectAndCheck (full_filepath, lines, false, true, delegate () { + CheckFileExists (full_filepath, true); + CheckLines (full_filepath, new string [] {"\"abc test\" 123 \"def\""}); + }); + } + + [Test] public void TestNoOverwrite () { string[] lines = new string[] { "abc", "def" }; diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/TaskItem.cs b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/TaskItem.cs index 5e818caf707..2d2de50cd9e 100644 --- a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/TaskItem.cs +++ b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/TaskItem.cs @@ -173,7 +173,7 @@ namespace Microsoft.Build.Utilities } public override string ToString () { - return ItemSpec; + return escapedItemSpec; } public string ItemSpec { |