diff --git a/Package.resolved b/Package.resolved index fba7b308f7eec3bb9d3c4ad7391cd8369efd7900..25d429cff7a6313b3ab32cbc0098a6df1097d4dc 100644 --- a/Package.resolved +++ b/Package.resolved @@ -32,8 +32,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay", "state" : { - "revision" : "50a70a9d3583fe228ce672e8923010c8df2deddd", - "version" : "0.2.1" + "revision" : "30314f1ece684dd60679d598a9b89107557b67d9", + "version" : "0.4.1" } } ], diff --git a/Package.swift b/Package.swift index 066d801f030e5a985edfdd747c82ec71ada20e22..741045ab6d400bac40d895ff9d1083bd4a7ad2ad 100644 --- a/Package.swift +++ b/Package.swift @@ -14,77 +14,47 @@ let package = Package( .macOS(.v12), ], products: [ - .library( - name: "XXModels", - targets: ["XXModels"] - ), - .library( - name: "XXLegacyDatabaseMigrator", - targets: ["XXLegacyDatabaseMigrator"] - ), - .library( - name: "XXDatabase", - targets: ["XXDatabase"] - ), + .library(name: "XXModels", targets: ["XXModels"]), + .library(name: "XXLegacyDatabaseMigrator", targets: ["XXLegacyDatabaseMigrator"]), + .library(name: "XXDatabase", targets: ["XXDatabase"]), ], dependencies: [ - .package( - url: "https://github.com/groue/GRDB.swift", - .upToNextMajor(from: "5.24.0") - ), - .package( - url: "https://github.com/pointfreeco/swift-custom-dump.git", - .upToNextMajor(from: "0.4.0") - ), - .package( - url: "https://github.com/pointfreeco/swift-snapshot-testing.git", - .upToNextMajor(from: "1.9.0") - ), + .package(url: "https://github.com/groue/GRDB.swift", .upToNextMajor(from: "5.24.0")), + .package(url: "https://github.com/pointfreeco/swift-custom-dump.git", .upToNextMajor(from: "0.4.0")), + .package(url: "https://github.com/pointfreeco/swift-snapshot-testing.git", .upToNextMajor(from: "1.9.0")), + .package(url: "https://github.com/pointfreeco/xctest-dynamic-overlay.git", .upToNextMajor(from: "0.4.1")), ], targets: [ .target( name: "XXModels", + dependencies: [ + .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), + ], swiftSettings: swiftSettings ), .testTarget( name: "XXModelsTests", dependencies: [ - .target( - name: "XXModels" - ), + .target(name: "XXModels"), ], swiftSettings: swiftSettings ), .target( name: "XXLegacyDatabaseMigrator", dependencies: [ - .target( - name: "XXDatabase" - ), - .target( - name: "XXModels" - ), - .product( - name: "GRDB", - package: "GRDB.swift" - ), + .target(name: "XXDatabase"), + .target(name: "XXModels"), + .product(name: "GRDB", package: "GRDB.swift"), + .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), ], swiftSettings: swiftSettings ), .testTarget( name: "XXLegacyDatabaseMigratorTests", dependencies: [ - .target( - name: "XXLegacyDatabaseMigrator" - ), - .product( - name: "CustomDump", - package: "swift-custom-dump" - ), - .product( - name: "SnapshotTesting", - package: "swift-snapshot-testing" - ), + .target(name: "XXLegacyDatabaseMigrator"), + .product(name: "CustomDump", package: "swift-custom-dump"), + .product(name: "SnapshotTesting", package: "swift-snapshot-testing"), ], exclude: [ "__Snapshots__", @@ -100,26 +70,16 @@ let package = Package( .target( name: "XXDatabase", dependencies: [ - .target( - name: "XXModels" - ), - .product( - name: "GRDB", - package: "GRDB.swift" - ), + .target(name: "XXModels"), + .product(name: "GRDB", package: "GRDB.swift"), ], swiftSettings: swiftSettings ), .testTarget( name: "XXDatabaseTests", dependencies: [ - .target( - name: "XXDatabase" - ), - .product( - name: "CustomDump", - package: "swift-custom-dump" - ), + .target(name: "XXDatabase"), + .product(name: "CustomDump", package: "swift-custom-dump"), ], swiftSettings: swiftSettings ), diff --git a/Sources/XXLegacyDatabaseMigrator/Migrator.swift b/Sources/XXLegacyDatabaseMigrator/Migrator.swift index 2e15273b93a69c2de134d34f4a1f5aae1a73e70d..eacfb191ffbfe603556b871c6f8a6b583ee3d795 100644 --- a/Sources/XXLegacyDatabaseMigrator/Migrator.swift +++ b/Sources/XXLegacyDatabaseMigrator/Migrator.swift @@ -70,7 +70,11 @@ extension Migrator { } #if DEBUG +import XCTestDynamicOverlay + extension Migrator { - public static let failing = Migrator { _, _, _, _ in fatalError() } + public static let unimplemented = Migrator( + run: XCTUnimplemented("\(Self.self)") + ) } #endif diff --git a/Sources/XXModels/Database.swift b/Sources/XXModels/Database.swift index 7b20c22db659110c53a08fb1bcbfb895878dbf77..f73b8cc5bf8b43ca380393cb73076fa4cb976990 100644 --- a/Sources/XXModels/Database.swift +++ b/Sources/XXModels/Database.swift @@ -177,37 +177,37 @@ public struct Database { #if DEBUG extension Database { - static public let failing = Database( - fetchChatInfos: .failing(), - fetchChatInfosPublisher: .failing(), - fetchContacts: .failing(), - fetchContactsPublisher: .failing(), - saveContact: .failing(), - bulkUpdateContacts: .failing(), - deleteContact: .failing(), - fetchContactChatInfos: .failing(), - fetchContactChatInfosPublisher: .failing(), - fetchGroups: .failing(), - fetchGroupsPublisher: .failing(), - saveGroup: .failing(), - deleteGroup: .failing(), - fetchGroupChatInfos: .failing(), - fetchGroupChatInfosPublisher: .failing(), - fetchGroupInfos: .failing(), - fetchGroupInfosPublisher: .failing(), - saveGroupMember: .failing(), - deleteGroupMember: .failing(), - fetchMessages: .failing(), - fetchMessagesPublisher: .failing(), - saveMessage: .failing(), - bulkUpdateMessages: .failing(), - deleteMessage: .failing(), - deleteMessages: .failing(), - fetchFileTransfers: .failing(), - fetchFileTransfersPublisher: .failing(), - saveFileTransfer: .failing(), - deleteFileTransfer: .failing(), - drop: .failing + static public let unimplemented = Database( + fetchChatInfos: .unimplemented(), + fetchChatInfosPublisher: .unimplemented(), + fetchContacts: .unimplemented(), + fetchContactsPublisher: .unimplemented(), + saveContact: .unimplemented(), + bulkUpdateContacts: .unimplemented(), + deleteContact: .unimplemented(), + fetchContactChatInfos: .unimplemented(), + fetchContactChatInfosPublisher: .unimplemented(), + fetchGroups: .unimplemented(), + fetchGroupsPublisher: .unimplemented(), + saveGroup: .unimplemented(), + deleteGroup: .unimplemented(), + fetchGroupChatInfos: .unimplemented(), + fetchGroupChatInfosPublisher: .unimplemented(), + fetchGroupInfos: .unimplemented(), + fetchGroupInfosPublisher: .unimplemented(), + saveGroupMember: .unimplemented(), + deleteGroupMember: .unimplemented(), + fetchMessages: .unimplemented(), + fetchMessagesPublisher: .unimplemented(), + saveMessage: .unimplemented(), + bulkUpdateMessages: .unimplemented(), + deleteMessage: .unimplemented(), + deleteMessages: .unimplemented(), + fetchFileTransfers: .unimplemented(), + fetchFileTransfersPublisher: .unimplemented(), + saveFileTransfer: .unimplemented(), + deleteFileTransfer: .unimplemented(), + drop: .unimplemented ) } #endif diff --git a/Sources/XXModels/Operations/BulkUpdate.swift b/Sources/XXModels/Operations/BulkUpdate.swift index 6c9c28f4de91d1844d853cbc800defdd92e56e57..a814ed614cadf419e24668272149e398f4210463 100644 --- a/Sources/XXModels/Operations/BulkUpdate.swift +++ b/Sources/XXModels/Operations/BulkUpdate.swift @@ -22,9 +22,11 @@ public struct BulkUpdate<Query, Assignments> { } #if DEBUG +import XCTestDynamicOverlay + extension BulkUpdate { - public static func failing<Query, Assignments>() -> BulkUpdate<Query, Assignments> { - BulkUpdate<Query, Assignments> { _, _ in fatalError() } + public static func unimplemented<Query, Assignments>() -> BulkUpdate<Query, Assignments> { + BulkUpdate<Query, Assignments>(run: XCTUnimplemented("\(Self.self)")) } } #endif diff --git a/Sources/XXModels/Operations/Delete.swift b/Sources/XXModels/Operations/Delete.swift index b305699998ceb845a1492096a79496b65ca2bb52..fb6bcfed0e84a6368cb105b7b77bb0e20febbccf 100644 --- a/Sources/XXModels/Operations/Delete.swift +++ b/Sources/XXModels/Operations/Delete.swift @@ -22,9 +22,11 @@ public struct Delete<Model> { } #if DEBUG +import XCTestDynamicOverlay + extension Delete { - public static func failing<Model>() -> Delete<Model> { - Delete<Model> { _ in fatalError() } + public static func unimplemented<Model>() -> Delete<Model> { + Delete<Model>(run: XCTUnimplemented("\(Self.self)")) } } #endif diff --git a/Sources/XXModels/Operations/DeleteMany.swift b/Sources/XXModels/Operations/DeleteMany.swift index 43c155cbaab3c8a14b9e41dd780e12bcb12e1673..23e20cf351f56873537e115415e7d6bf4aa30ecb 100644 --- a/Sources/XXModels/Operations/DeleteMany.swift +++ b/Sources/XXModels/Operations/DeleteMany.swift @@ -21,9 +21,11 @@ public struct DeleteMany<Model, Query> { } #if DEBUG +import XCTestDynamicOverlay + extension DeleteMany { - public static func failing<Model, Query>() -> DeleteMany<Model, Query> { - DeleteMany<Model, Query> { _ in fatalError() } + public static func unimplemented<Model>() -> DeleteMany<Model, Query> { + DeleteMany<Model, Query>(run: XCTUnimplemented("\(Self.self)")) } } #endif diff --git a/Sources/XXModels/Operations/Drop.swift b/Sources/XXModels/Operations/Drop.swift index d80e2425413417c2d40461800e98854d63e1bb7a..1b7bd31cac48753f5f9f114c6c92226d35bce14e 100644 --- a/Sources/XXModels/Operations/Drop.swift +++ b/Sources/XXModels/Operations/Drop.swift @@ -20,7 +20,9 @@ public struct Drop { } #if DEBUG +import XCTestDynamicOverlay + extension Drop { - public static let failing = Drop { fatalError() } + public static let unimplemented = Drop(run: XCTUnimplemented("\(Self.self)")) } #endif diff --git a/Sources/XXModels/Operations/Fetch.swift b/Sources/XXModels/Operations/Fetch.swift index 7fe8e6e93891b126d3919d2550e4e0adfee80ca7..5f300f1d19657286e9f4e0949ad0fc5529547d20 100644 --- a/Sources/XXModels/Operations/Fetch.swift +++ b/Sources/XXModels/Operations/Fetch.swift @@ -22,9 +22,11 @@ public struct Fetch<Model, Query> { } #if DEBUG +import XCTestDynamicOverlay + extension Fetch { - public static func failing<Model, Query>() -> Fetch<Model, Query> { - Fetch<Model, Query> { _ in fatalError() } + public static func unimplemented<Model, Query>() -> Fetch<Model, Query> { + Fetch<Model, Query>(run: XCTUnimplemented("\(Self.self)")) } } #endif diff --git a/Sources/XXModels/Operations/FetchPublisher.swift b/Sources/XXModels/Operations/FetchPublisher.swift index fe78d3b5208fe088631796097dca0deea103799f..9758e025f238d4b244b0b25c5c1c7b91ef45cc8e 100644 --- a/Sources/XXModels/Operations/FetchPublisher.swift +++ b/Sources/XXModels/Operations/FetchPublisher.swift @@ -23,9 +23,13 @@ public struct FetchPublisher<Model, Query> { } #if DEBUG +import XCTestDynamicOverlay + extension FetchPublisher { - public static func failing<Model, Query>() -> FetchPublisher<Model, Query> { - FetchPublisher<Model, Query> { _ in fatalError() } + public static func unimplemented<Model, Query>() -> FetchPublisher<Model, Query> { + FetchPublisher<Model, Query>( + run: XCTUnimplemented("\(Self.self)", placeholder: Empty().eraseToAnyPublisher()) + ) } } #endif diff --git a/Sources/XXModels/Operations/Save.swift b/Sources/XXModels/Operations/Save.swift index 31ec662ba5cc4730a2e872f972d1b4b693037a42..abc6ab706135eace82159049a4955948f1317c7e 100644 --- a/Sources/XXModels/Operations/Save.swift +++ b/Sources/XXModels/Operations/Save.swift @@ -25,9 +25,11 @@ public struct Save<Model> { } #if DEBUG +import XCTestDynamicOverlay + extension Save { - public static func failing<Model>() -> Save<Model> { - Save<Model> { _ in fatalError() } + public static func unimplemented<Model>() -> Save<Model> { + Save<Model>(run: XCTUnimplemented("\(Self.self)")) } } #endif diff --git a/Tests/XXLegacyDatabaseMigratorTests/MigratorTests.swift b/Tests/XXLegacyDatabaseMigratorTests/MigratorTests.swift index 2a83537f4e496ccd355de9d39c550e6ab8498b66..68fcbf6f901d6b1e75b802ea2a636afa60c81ebe 100644 --- a/Tests/XXLegacyDatabaseMigratorTests/MigratorTests.swift +++ b/Tests/XXLegacyDatabaseMigratorTests/MigratorTests.swift @@ -36,7 +36,7 @@ final class MigratorTests: XCTestCase { var didSaveContacts = [XXModels.Contact]() - var newDb = XXModels.Database.failing + var newDb = XXModels.Database.unimplemented newDb.fetchContacts = .init { _ in [] } newDb.saveContact = .init(run: { didSaveContacts.append($0) @@ -182,7 +182,7 @@ final class MigratorTests: XCTestCase { // Mock up new database: - var newDb = XXModels.Database.failing + var newDb = XXModels.Database.unimplemented newDb.fetchContacts = .init { _ in [] } newDb.saveContact = .init { $0 }