From 3a7c5900890293fe6ca1f4556dc6e1e065561fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cihat=20Gu=CC=88ndu=CC=88z?= Date: Sat, 11 Sep 2021 22:12:26 +0200 Subject: [PATCH] Fix tests when not running from within Xcode --- Package.swift | 1 + Sources/Core/AutoCorrection.swift | 26 ++++++++++++++++++++++---- Sources/TestSupport/TestLogger.swift | 5 +++-- Tests/CheckersTests/LintTests.swift | 3 ++- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/Package.swift b/Package.swift index 010ef1d..996d7b5 100644 --- a/Package.swift +++ b/Package.swift @@ -80,6 +80,7 @@ let package = Package( dependencies: [ "Core", .product(name: "CustomDump", package: "swift-custom-dump"), + .product(name: "Rainbow", package: "Rainbow"), ] ), .testTarget(name: "CoreTests", dependencies: ["Core", "TestSupport"]), diff --git a/Sources/Core/AutoCorrection.swift b/Sources/Core/AutoCorrection.swift index 426b04b..a7e2f2b 100644 --- a/Sources/Core/AutoCorrection.swift +++ b/Sources/Core/AutoCorrection.swift @@ -25,10 +25,10 @@ public struct AutoCorrection: Codable, Equatable { for difference in afterLines.difference(from: beforeLines).sorted() { switch difference { case let .insert(offset, element, _): - lines.append("+ [L\(offset + 1)] \(element)".green) + lines.append("+ [L\(offset + 1)] \(element)".coloredAsAdded) case let .remove(offset, element, _): - lines.append("- [L\(offset + 1)] \(element)".red) + lines.append("- [L\(offset + 1)] \(element)".coloredAsRemoved) } } @@ -37,8 +37,8 @@ public struct AutoCorrection: Codable, Equatable { else { return [ "Autocorrection applied, the diff is: (+ added, - removed)", - "- \(before.showWhitespacesAndNewlines())".red, - "+ \(after.showWhitespacesAndNewlines())".green, + "- \(before.showWhitespacesAndNewlines())".coloredAsRemoved, + "+ \(after.showWhitespacesAndNewlines())".coloredAsAdded, ] } } @@ -86,3 +86,21 @@ extension CollectionDifference.Change: Comparable where ChangeElement == String } } } + +fileprivate extension String { + var coloredAsAdded: String { + #if DEBUG + self // do not color when running tests + #else + green + #endif + } + + var coloredAsRemoved: String { + #if DEBUG + self // do not color when running tests + #else + red + #endif + } +} diff --git a/Sources/TestSupport/TestLogger.swift b/Sources/TestSupport/TestLogger.swift index 7925569..92c92e6 100644 --- a/Sources/TestSupport/TestLogger.swift +++ b/Sources/TestSupport/TestLogger.swift @@ -1,5 +1,6 @@ import Foundation import Core +import Rainbow public final class TestLogger: Loggable { public var loggedMessages: [String] @@ -12,12 +13,12 @@ public final class TestLogger: Loggable { public func message(_ message: String, level: PrintLevel, location: Location?) { if let location = location { loggedMessages.append( - "[\(level.rawValue)] \(location.locationMessage(pathType: .relative)) \(message)" + "[\(level.rawValue)] \(location.locationMessage(pathType: .relative)) \(message.clearColor.clearStyles)" ) } else { loggedMessages.append( - "[\(level.rawValue)] \(message)" + "[\(level.rawValue)] \(message.clearColor.clearStyles)" ) } } diff --git a/Tests/CheckersTests/LintTests.swift b/Tests/CheckersTests/LintTests.swift index a0141fb..a49b228 100644 --- a/Tests/CheckersTests/LintTests.swift +++ b/Tests/CheckersTests/LintTests.swift @@ -276,6 +276,7 @@ final class LintTests: XCTestCase { check: .init(id: "1", hint: "hint #1"), regex: .init(#"(let|var) (\w+)=(\w+)"#), matchingExamples: ["let x=4"], + includeFilters: [try! Regex(#"\#(tempDir)/*"#)], autoCorrectReplacement: "$1 $2 = $3", autoCorrectExamples: [.init(before: "let x=4", after: "let x = 4")] ) @@ -306,7 +307,7 @@ final class LintTests: XCTestCase { func testCheckFilePaths() throws { let violations = try Lint.checkFilePaths( check: .init(id: "2", hint: "hint for #2", severity: .warning), - regex: .init(#"README\.md"#), + regex: .init(#"README\.markdown"#), violateIfNoMatchesFound: true )