Failing test due to network XML validation


(Alex Blewitt) #1

There's a test which attempts to download an XML DTD from an external file, which fails when there's an intermittent network connection:

  Test Case 'TestNSArray.test_writeToFile' started at 09:15:53.214
  I/O warning : failed to load external entity "http://www.apple.com/DTDs/PropertyList-1.0.dtd"
  .../swift-corelibs-foundation/TestFoundation/TestNSArray.swift:492: error: TestNSArray.test_writeToFile : failed - XMLDocument failes to read / validate contenets

It's probably not a good idea to have remote DTD parsing enabled, especially for testing a write to file method. Plus, there's a spelling error or two :slight_smile:

This happens because the XML document has 'validate' called on it:

  let plistDoc = try XMLDocument(contentsOf: URL(fileURLWithPath: testFilePath!, isDirectory: false), options: [])
  try plistDoc.validate()

https://github.com/apple/swift-corelibs-foundation/blob/e05884bd835f6ee22e7c0b0484326d63c31d554a/TestFoundation/TestNSArray.swift#L485-L486

I don't think the validate call is adding anything here, because if it's invalid then the subsequent assert will fail, and we're just testing whether or not we can read the contents from file.

Should we remove the try/validate statement here?

Alex