[msbuild] Fix parsing of json parser errors to handle trailing periods in the error message.

Fixes this test:

    1) Test Failure : Xamarin.iOS.Tasks.Bug60536.TestACToolTaskCatchesJsonException
         ColumnNumber
      Expected: 2
      But was:  0
This commit is contained in:
Rolf Bjarne Kvinge 2018-08-02 11:21:28 +02:00
Родитель 9946fbd4dd
Коммит fc561b247c
2 изменённых файлов: 8 добавлений и 5 удалений

Просмотреть файл

@ -390,12 +390,15 @@ namespace Xamarin.MacDev.Tasks
int line = 0, column = 0;
int index, endIndex;
if ((index = ex.Message.IndexOf ("At line ", StringComparison.Ordinal)) != -1) {
var message = ex.Message;
if (message.EndsWith (".", StringComparison.Ordinal))
message = message.Substring (0, message.Length - 1);
if ((index = message.IndexOf ("At line ", StringComparison.Ordinal)) != -1) {
index += "At line ".Length;
if ((endIndex = ex.Message.IndexOf (", column ", index, StringComparison.Ordinal)) != -1) {
var columnBuf = ex.Message.Substring (endIndex + ", column ".Length);
var lineBuf = ex.Message.Substring (index, endIndex - index);
if ((endIndex = message.IndexOf (", column ", index, StringComparison.Ordinal)) != -1) {
var columnBuf = message.Substring (endIndex + ", column ".Length);
var lineBuf = message.Substring (index, endIndex - index);
int.TryParse (columnBuf, out column);
int.TryParse (lineBuf, out line);

Просмотреть файл

@ -71,7 +71,7 @@ namespace Xamarin.iOS.Tasks
Assert.AreEqual (2, Engine.Logger.ErrorEvents[0].ColumnNumber, "ColumnNumber");
Assert.AreEqual (197, Engine.Logger.ErrorEvents[0].EndLineNumber, "EndLineNumber");
Assert.AreEqual (2, Engine.Logger.ErrorEvents[0].EndColumnNumber, "EndColumnNumber");
Assert.AreEqual ("Unexpected character ']'. At line 197, column 2", Engine.Logger.ErrorEvents[0].Message, "Message");
Assert.AreEqual ("Unexpected character ']'. At line 197, column 2.", Engine.Logger.ErrorEvents[0].Message, "Message");
}
}
}