Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #125 invalid character (backspace) in output #235

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

pschneider
Copy link
Contributor

@pschneider pschneider commented Jan 7, 2018

If you clear text in a UITest by pressing backspace, Xcode logs output into console with the UTF-8 character \x08.

This results into the following error message when parsing JUnit output:

org.dom4j.DocumentException: Error on line 496 of document  : An invalid XML character (Unicode: 0x8) was found in the element content of the document. Nested exception: An invalid XML character (Unicode: 0x8) was found in the element content of the document.

To fix this, I’ve replaced the character with the HTML Entity counterpart:

t =    10.54s Type '' into "TestTextField" TextField

This fixes #125.

As I didn’t write any production Objective-C code yet as I started with Swift only please let me know if there’s anything I can improve or needs to be changed.

I couldn’t find any specific unit test for this method to adjust. If there is any I would try to make it test my change. Otherwise I could also provide an XML file with one test case where this specific problem occurs.

@pschneider
Copy link
Contributor Author

Just ran the change on our CI and it looks like it still reports the error even though the XML file only contains the HTML entities. Will check why...

@pschneider
Copy link
Contributor Author

So it looks like even though the XML contains only the HTML entities, it's not possible to parse the file. Replacing the backspace characters \x08 with an empty string seems to work just fine.

Should we go with this solution?

[string replaceOccurrencesOfString:@"\x08" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [string length])];

@oliverhu
Copy link
Member

oliverhu commented Jan 8, 2018

replace \x08 with empty string doesn't sounds good. how about replace \x08 with \\x08. To add a unit test, check https://github.com/linkedin/bluepill/blob/master/Bluepill-cli/BPInstanceTests/BPTreeParserTests.m

@mbalex
Copy link
Contributor

mbalex commented Jan 10, 2018

we have the same issue, so I search a bit and found this:
https://en.wikipedia.org/wiki/Valid_characters_in_XML
https://stackoverflow.com/questions/397250/unicode-regex-invalid-xml-characters

valid characters are [\u0009\u000a\u000d\u0020-\uD7FF\uE000-\uFFFD]

I would propose to go through each character, and if you find them not being valid (see regex) then replace them with their escaped value as olverhu suggested for the \x08 case.

@jmkk
Copy link
Collaborator

jmkk commented May 23, 2019

/azp run

@azure-pipelines
Copy link

Pull request contains merge conflicts.

@chenxiao0228
Copy link
Collaborator

Is this still an issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

test result parsing error
5 participants