From 169e78f5af5892b3221a4d6e95f2d3df3c444210 Mon Sep 17 00:00:00 2001 From: omochimetaru Date: Tue, 6 Dec 2022 18:50:33 +0900 Subject: [PATCH 1/2] improve assertion --- .../Generate/GenerateEnumTests.swift | 4 ++ .../Generate/GenerateTestCaseBase.swift | 56 ++++++++++++++++--- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/Tests/CodableToTypeScriptTests/Generate/GenerateEnumTests.swift b/Tests/CodableToTypeScriptTests/Generate/GenerateEnumTests.swift index 31da732..4b8a453 100644 --- a/Tests/CodableToTypeScriptTests/Generate/GenerateEnumTests.swift +++ b/Tests/CodableToTypeScriptTests/Generate/GenerateEnumTests.swift @@ -47,6 +47,10 @@ export function E_decode(json: E_JSON): E { throw new Error("unknown kind"); } } +""" + ], + unexpecteds: [""" +export function E_decode """ ] ) diff --git a/Tests/CodableToTypeScriptTests/Generate/GenerateTestCaseBase.swift b/Tests/CodableToTypeScriptTests/Generate/GenerateTestCaseBase.swift index 1bfd905..14cd0f5 100644 --- a/Tests/CodableToTypeScriptTests/Generate/GenerateTestCaseBase.swift +++ b/Tests/CodableToTypeScriptTests/Generate/GenerateTestCaseBase.swift @@ -3,6 +3,47 @@ import SwiftTypeReader import CodableToTypeScript import TypeScriptAST +struct AssertGenerateResult { + var generated: String + var failureExpecteds: [String] = [] + var failureUnexpecteds: [String] = [] + var file: StaticString + var line: UInt + + func assert() { + if failureExpecteds.isEmpty, + failureUnexpecteds.isEmpty + { + return + } + + var strs: [String] = [] + if !failureExpecteds.isEmpty { + let heads = failureExpecteds.map { head($0).debugDescription } + strs.append("No expected texts: " + heads.joined(separator: ", ")) + } + + if !failureUnexpecteds.isEmpty { + let heads = failureUnexpecteds.map { head($0).debugDescription } + strs.append("Unexpected texts: " + heads.joined(separator: ", ")) + } + + strs.append("Generated:\n" + generated) + + let message = strs.joined(separator: "; ") + XCTFail(message, file: file, line: line) + } + + func head(_ string: String) -> String { + let lines = string.split(whereSeparator: { $0.isNewline }) + guard var head = lines.first else { return "" } + if lines.count >= 2 { + head += "..." + } + return String(head) + } +} + class GenerateTestCaseBase: XCTestCase { enum Prints { case none @@ -68,22 +109,21 @@ class GenerateTestCaseBase: XCTestCase { let actual = code.print() + var result = AssertGenerateResult(generated: actual, file: file, line: line) + for expected in expecteds { if !actual.contains(expected) { - XCTFail( - "No expected text: \(expected)", - file: file, line: line - ) + result.failureExpecteds.append(expected) } } + for unexpected in unexpecteds { if actual.contains(unexpected) { - XCTFail( - "Unexpected text: \(unexpected)", - file: file, line: line - ) + result.failureUnexpecteds.append(unexpected) } } + + result.assert() } } } From 09831c45c2c2118d4715d3c965c168de0914a0f6 Mon Sep 17 00:00:00 2001 From: omochimetaru Date: Tue, 6 Dec 2022 18:59:12 +0900 Subject: [PATCH 2/2] fix test --- .../CodableToTypeScriptTests/Generate/GenerateEnumTests.swift | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Tests/CodableToTypeScriptTests/Generate/GenerateEnumTests.swift b/Tests/CodableToTypeScriptTests/Generate/GenerateEnumTests.swift index 4b8a453..31da732 100644 --- a/Tests/CodableToTypeScriptTests/Generate/GenerateEnumTests.swift +++ b/Tests/CodableToTypeScriptTests/Generate/GenerateEnumTests.swift @@ -47,10 +47,6 @@ export function E_decode(json: E_JSON): E { throw new Error("unknown kind"); } } -""" - ], - unexpecteds: [""" -export function E_decode """ ] )