From 4a9efec055734dd421e8b55889e2c24564352bc5 Mon Sep 17 00:00:00 2001 From: Dongjoon Hyun Date: Wed, 23 Apr 2025 09:23:56 +0900 Subject: [PATCH] [SPARK-51870] Support `SPARK_GENERATE_GOLDEN_FILES` in `SQLTests` --- Tests/SparkConnectTests/SQLTests.swift | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Tests/SparkConnectTests/SQLTests.swift b/Tests/SparkConnectTests/SQLTests.swift index 7df5c99..7f7ae8b 100644 --- a/Tests/SparkConnectTests/SQLTests.swift +++ b/Tests/SparkConnectTests/SQLTests.swift @@ -26,7 +26,7 @@ import SparkConnect struct SQLTests { let fm = FileManager.default let path = Bundle.module.path(forResource: "queries", ofType: "")! - let encoder = JSONEncoder() + let regenerateGoldenFiles = ProcessInfo.processInfo.environment["SPARK_GENERATE_GOLDEN_FILES"] == "1" let regexID = /#\d+L?/ let regexPlanId = /plan_id=\d+/ @@ -79,8 +79,13 @@ struct SQLTests { let sql = try String(contentsOf: URL(fileURLWithPath: "\(path)/\(name)"), encoding: .utf8) let answer = cleanUp(try await spark.sql(sql).collect().map { $0.toString() }.joined(separator: "\n")) - let expected = cleanUp(try String(contentsOf: URL(fileURLWithPath: "\(path)/\(name).answer"), encoding: .utf8)) - #expect(answer == expected.trimmingCharacters(in: .whitespacesAndNewlines)) + if (regenerateGoldenFiles) { + let path = "\(FileManager.default.currentDirectoryPath)/Tests/SparkConnectTests/Resources/queries/\(name).answer" + fm.createFile(atPath: path, contents: (answer + "\n").data(using: .utf8)!, attributes: nil) + } else { + let expected = cleanUp(try String(contentsOf: URL(fileURLWithPath: "\(path)/\(name).answer"), encoding: .utf8)) + #expect(answer == expected.trimmingCharacters(in: .whitespacesAndNewlines)) + } } await spark.stop() }