 
 }
 
-private func XCTAssertLinesEqual(_ lhs: String, _ rhs: String) {
+private func XCTAssertLinesEqual(_ lhs: String, _ rhs: String, path: Path) {
   let lhsLines = lhs.split(separator: "\n")
   let rhsLines = rhs.split(separator: "\n")
 


      if let output = outputs[testCase.key] {
        let expectation = TextFile(path: output)
        XCTAssertLinesEqual(testResult.storage, try! expectation.read())
      } else {
        let outputPath = Path(pathname: String(testCase.value.pathname.dropLast(6)) + ".output")
        let expectation = TextFile(path: outputPath)
        try! expectation.write(testResult.storage)
        print("⚠️ no oracle for '\(testCase.value.filename!)', regression test case created now")
      }
    }
  }

  }

  guard errors.isEmpty else {
    XCTFail("⚠️  \(path.filename!)")
    for (lineno, ll, rl) in errors {
      print("  L\(lineno) | expected: " + ll.trimmingCharacters(in: [" "]).styled("green"))
      print("  L\(lineno) | actual  : " + rl.trimmingCharacters(in: [" "]).styled("red"))
    }
    return
  }

  guard lhsLines.count == rhsLines.count else {
    XCTFail("⚠️  \(path.filename!): different line count")
    return
  }
}
