* Merging revisions 42887 from trunk:

------------------------------------------------------------------------
    r42887 | michael | 2019-09-01 13:43:01 +0200 (Sun, 01 Sep 2019) | 1 line
    
    * Fix whitespace handling due to new structure
    ------------------------------------------------------------------------

git-svn-id: branches/fixes_3_2@43252 -
This commit is contained in:
michael 2019-10-19 14:46:30 +00:00
parent 493b0ba4fc
commit 616e4f7342
2 changed files with 31 additions and 2 deletions

View File

@ -267,7 +267,7 @@ begin
FetchLine; FetchLine;
Result := tkWhitespace; Result := tkWhitespace;
end; end;
#9, ' ': #9, ' ', #10, #13:
begin begin
Result := tkWhitespace; Result := tkWhitespace;
repeat repeat

View File

@ -69,6 +69,7 @@ type
Procedure TestNoHandlerError; Procedure TestNoHandlerError;
Procedure TestHandlerResult; Procedure TestHandlerResult;
Procedure TestHandlerResultStream; Procedure TestHandlerResultStream;
Procedure TestEmptyLine;
end; end;
implementation implementation
@ -341,7 +342,6 @@ end;
procedure TTestParser.TestObjectError; procedure TTestParser.TestObjectError;
begin begin
DoTestError('{ "name" : value }',[joUTF8]); DoTestError('{ "name" : value }',[joUTF8]);
end; end;
@ -490,15 +490,19 @@ procedure TTestParser.TestNoHandlerError;
Var Var
H : TJSONParserHandler; H : TJSONParserHandler;
HS : TJSONStringParserHandler;
begin begin
H:=GetJSONParserHandler; H:=GetJSONParserHandler;
HS:=GetJSONStringParserHandler;
try try
AssertSame('SetJSONParserHandler returns previous handler',H,SetJSONParserHandler(Nil)); AssertSame('SetJSONParserHandler returns previous handler',H,SetJSONParserHandler(Nil));
AssertSame('SetJSONStringParserHandler returns previous handler',HS,SetJSONStringParserHandler(Nil));
AssertException('No handler raises exception',EJSON,@CallNoHandler); AssertException('No handler raises exception',EJSON,@CallNoHandler);
AssertException('No handler raises exception',EJSON,@CallNoHandlerStream); AssertException('No handler raises exception',EJSON,@CallNoHandlerStream);
finally finally
SetJSONParserHandler(H); SetJSONParserHandler(H);
SetJSONStringParserHandler(HS);
end; end;
end; end;
@ -535,6 +539,31 @@ begin
end; end;
end; end;
procedure TTestParser.TestEmptyLine;
// Bug report 36037
Const MyJSON =
' {'+sLineBreak+
' "pylib__linux" : "libpython3.7m.so.1.0",'+sLineBreak+
' "ui_toolbar_theme": "default_24x24",'+sLineBreak+
' "ui_toolbar_show" : true,'+sLineBreak+
' "font_name__linux" : "DejaVu Sans Mono",'+sLineBreak+
' "font_size__linux" : 10,'+sLineBreak+
' "ui_listbox_fuzzy": false,'+sLineBreak+
' "ui_max_size_lexer": 5,'+sLineBreak+
' "find_separate_form": false,'+sLineBreak+sLineBreak+
'}';
var
J : TJSONData;
begin
With TJSONParser.Create(MyJSON,[joUTF8,joIgnoreTrailingComma]) do
Try
J:=Parse;
J.Free;
Finally
Free;
end;
end;
procedure TTestParser.DoTestError(S : String; Options : TJSONOptions = DefaultOpts); procedure TTestParser.DoTestError(S : String; Options : TJSONOptions = DefaultOpts);
Var Var