Fix crash when libxml set error in @autoreleasepool

- libxml will return first parsing error instead of last one
- option to replace lower ascii chars with whitespace
This commit is contained in:
relikd
2019-03-06 02:05:09 +01:00
parent f9a3c1c831
commit d9b6641a99
8 changed files with 124 additions and 16 deletions

View File

@@ -265,6 +265,28 @@
#pragma clang diagnostic pop
}
- (void)testLowerAsciiCharacters {
NSError *error = nil;
RSXMLData *xmlData = [self xmlFile:@"lower-ascii" extension:@"rss"];
RSXMLParser *parser = [xmlData getParser];
RSParsedFeed *parsedFeed = [parser parseSync:&error];
XCTAssertNotNil(error);
XCTAssertEqual(parsedFeed.articles.count, 2);
parser.dontStopOnLowerAsciiBytes = YES;
parsedFeed = [parser parseSync:&error];
XCTAssertNil(error);
XCTAssertEqual(parsedFeed.articles.count, 5);
}
- (void)testBrokenXML {
NSError *error = nil;
RSXMLData *xmlData = [self xmlFile:@"broken" extension:@"rss"];
[[xmlData getParser] parseSync:&error];
XCTAssertNotNil(error);
XCTAssertEqual(error.code, 76);
XCTAssertEqualObjects(error.localizedDescription, @"Opening and ending tag mismatch: channel line 0 and rss");
}
- (void)testDownloadedFeeds {
NSError *error = nil;
int i = 0;