From e82083c2ea8c6ff59778f87bac0bbabe8b6598e3 Mon Sep 17 00:00:00 2001 From: Richard Piazza Date: Sun, 8 Mar 2026 14:11:14 -0500 Subject: [PATCH 1/3] Updated SQLite.swift; Remove explicit Swift-Testing dependency --- Package.resolved | 42 ++++++++++++------------------------------ Package.swift | 5 +---- 2 files changed, 13 insertions(+), 34 deletions(-) diff --git a/Package.resolved b/Package.resolved index e034aa5..f39501f 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,13 +1,22 @@ { - "originHash" : "f5d0913482fc9f5655c778d1b08693418e6d8736a0f3045f777d6ed8f59ca46e", + "originHash" : "9a66d8177cdf50320a17af7fe570627117405522c142c042e5f8e891166615d0", "pins" : [ + { + "identity" : "csqlite", + "kind" : "remoteSourceControl", + "location" : "https://github.com/stephencelis/CSQLite", + "state" : { + "revision" : "bdb5580e54cdf49251b365ea34e2651199473240", + "version" : "3.50.4" + } + }, { "identity" : "sqlite.swift", "kind" : "remoteSourceControl", "location" : "https://github.com/stephencelis/SQLite.swift.git", "state" : { - "revision" : "0c08856385fe24f7b76d8c51842d78a196e8e817", - "version" : "0.15.5" + "revision" : "964c300fb0736699ce945c9edb56ecd62eba27a3", + "version" : "0.16.0" } }, { @@ -36,33 +45,6 @@ "revision" : "1770152df756b54c28ef1787df1e957d93cc62d5", "version" : "0.0.6" } - }, - { - "identity" : "swift-syntax", - "kind" : "remoteSourceControl", - "location" : "https://github.com/swiftlang/swift-syntax.git", - "state" : { - "revision" : "4799286537280063c85a32f09884cfbca301b1a1", - "version" : "602.0.0" - } - }, - { - "identity" : "swift-testing", - "kind" : "remoteSourceControl", - "location" : "https://github.com/swiftlang/swift-testing.git", - "state" : { - "revision" : "48a471ab313e858258ab0b9b0bf2cea55a50cefb", - "version" : "6.2.3" - } - }, - { - "identity" : "swift-toolchain-sqlite", - "kind" : "remoteSourceControl", - "location" : "https://github.com/swiftlang/swift-toolchain-sqlite.git", - "state" : { - "revision" : "b45b80b943e88db3cb8ddea798fa3fa9912375ff", - "version" : "1.0.7" - } } ], "version" : 3 diff --git a/Package.swift b/Package.swift index a6e9599..de544c4 100644 --- a/Package.swift +++ b/Package.swift @@ -22,11 +22,9 @@ let package = Package( dependencies: [ // Dependencies declare other packages that this package depends on. // .package(url: /* package url */, from: "1.0.0"), - .package(url: "https://github.com/swiftlang/swift-testing.git", from: "6.2.0"), - .package(url: "https://github.com/swiftlang/swift-toolchain-sqlite.git", from: "1.0.7"), .package(url: "https://github.com/apple/swift-log.git", from: "1.9.1"), .package(url: "https://github.com/richardpiazza/Statement.git", from: "0.8.1"), - .package(url: "https://github.com/stephencelis/SQLite.swift.git", from: "0.15.5", traits: ["SwiftToolchainCSQLite"]), + .package(url: "https://github.com/stephencelis/SQLite.swift.git", from: "0.16.0", traits: ["SQLiteSwiftCSQLite"]), .package(url: "https://github.com/swhitty/swift-mutex.git", from: "0.0.6"), ], targets: [ @@ -45,7 +43,6 @@ let package = Package( .testTarget( name: "OccurrenceTests", dependencies: [ - .product(name: "Testing", package: "swift-testing"), .product(name: "Logging", package: "swift-log"), "Occurrence", ], From ec32a81d99a49fdb3f81af55f1613443f18d8d63 Mon Sep 17 00:00:00 2001 From: Richard Piazza Date: Sun, 8 Mar 2026 14:15:04 -0500 Subject: [PATCH 2/3] Updated Workflow --- .github/workflows/pull_request.yml | 86 ++++++++++++++++++++++++++++++ .github/workflows/swift.yml | 43 --------------- 2 files changed, 86 insertions(+), 43 deletions(-) create mode 100644 .github/workflows/pull_request.yml delete mode 100644 .github/workflows/swift.yml diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 0000000..d7db51c --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,86 @@ +name: Pull Request + +on: + pull_request: + branches: [ main ] + workflow_dispatch: + +env: + SCHEME: "Occurrence" + +jobs: + Lint: + runs-on: macos-26 + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Lint + run: swiftformat --lint . --reporter github-actions-log + + Swift: + strategy: + fail-fast: false + matrix: + os: [ + macos-26, + ubuntu-latest, + ] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Cache + uses: actions/cache@v5 + with: + path: | + .build + ~/Library/Developer/Xcode/DerivedData/ModuleCache.noindex + ~/Library/Caches/org.swift.swiftpm + ~/Library/org.swift.swiftpm + key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} + restore-keys: | + ${{ runner.os }}-spm- + + - name: Package Resolution + run: swift package resolve + + - name: Build + run: swift build + + - name: Test + run: swift test + + Xcode: + strategy: + fail-fast: false + matrix: + platform: [ + "macOS", + "iOS", + "tvOS", + "watchOS", + "visionOS", + "macOS,variant=Mac Catalyst", + ] + runs-on: macos-26 + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Cache + uses: actions/cache@v5 + with: + path: | + .build + ~/Library/Developer/Xcode/DerivedData/ModuleCache.noindex + ~/Library/Caches/org.swift.swiftpm + ~/Library/org.swift.swiftpm + key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.swift', '**/Package.resolved') }} + restore-keys: | + ${{ runner.os }}-spm- + - name: Package Resolution + run: set -o pipefail && xcodebuild -resolvePackageDependencies | xcbeautify + - name: Build + env: + DESTINATION: "generic/platform=${{ matrix.platform }}" + run: set -o pipefail && xcodebuild build -scheme "$SCHEME" -destination "$DESTINATION" | xcbeautify diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml deleted file mode 100644 index 1d5d86c..0000000 --- a/.github/workflows/swift.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Swift - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - workflow_dispatch: - -jobs: - - Swift-Package: - strategy: - fail-fast: false - matrix: - os: [macos-26, ubuntu-latest] - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Cache - uses: actions/cache@v5 - with: - path: | - .build - ~/Library/Developer/Xcode/DerivedData/ModuleCache.noindex - ~/Library/Caches/org.swift.swiftpm - ~/Library/org.swift.swiftpm - key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} - restore-keys: | - ${{ runner.os }}-spm- - - - name: Package Resolution - run: swift package resolve - - - name: Build - run: swift build - - - name: Test - run: swift test From c789b1f6d35e73a7ab06833c25387dc345d5a7e1 Mon Sep 17 00:00:00 2001 From: Richard Piazza Date: Sun, 8 Mar 2026 14:16:54 -0500 Subject: [PATCH 3/3] Updated SwiftFormat --- .swiftformat | 1 + .../CoreData/CoreDataLogProvider.swift | 4 +-- .../Occurrence/SQLite/SQLiteLogProvider.swift | 3 +-- Tests/OccurrenceTests/LogProviderTests.swift | 26 +++++++++---------- Tests/OccurrenceTests/RedactionTests.swift | 2 +- 5 files changed, 17 insertions(+), 19 deletions(-) diff --git a/.swiftformat b/.swiftformat index e042843..321250d 100644 --- a/.swiftformat +++ b/.swiftformat @@ -13,3 +13,4 @@ --disable redundantType --disable unusedArguments --disable wrapArguments +--disable wrapPropertyBodies diff --git a/Sources/Occurrence/CoreData/CoreDataLogProvider.swift b/Sources/Occurrence/CoreData/CoreDataLogProvider.swift index 64ae277..4225a8e 100644 --- a/Sources/Occurrence/CoreData/CoreDataLogProvider.swift +++ b/Sources/Occurrence/CoreData/CoreDataLogProvider.swift @@ -126,7 +126,7 @@ final class CoreDataLogProvider: LogProvider { let backgroundContext = context.withLock { $0 } - let results = backgroundContext.performAndWait { + return backgroundContext.performAndWait { var results: [Logger.Entry] = [] do { let entries = try backgroundContext.fetch(request) @@ -136,8 +136,6 @@ final class CoreDataLogProvider: LogProvider { } return results } - - return results } func purge(matching filter: Logger.Filter?) { diff --git a/Sources/Occurrence/SQLite/SQLiteLogProvider.swift b/Sources/Occurrence/SQLite/SQLiteLogProvider.swift index 9f47156..5ac7ecf 100644 --- a/Sources/Occurrence/SQLite/SQLiteLogProvider.swift +++ b/Sources/Occurrence/SQLite/SQLiteLogProvider.swift @@ -8,8 +8,7 @@ final class SQLiteLogProvider: LogProvider { static func defaultURL() throws -> URL { let directory = try FileManager.default.occurrenceDirectory() - let url = directory.appendingPathComponent("LogProvider.sqlite") - return url + return directory.appendingPathComponent("LogProvider.sqlite") } private let db: Connection diff --git a/Tests/OccurrenceTests/LogProviderTests.swift b/Tests/OccurrenceTests/LogProviderTests.swift index 638b762..a8e509c 100644 --- a/Tests/OccurrenceTests/LogProviderTests.swift +++ b/Tests/OccurrenceTests/LogProviderTests.swift @@ -88,7 +88,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func subsystems(logProvider: any LogProvider) throws { + func subsystems(logProvider: any LogProvider) { logProvider.log(Logger.Entry(date: january1st_1530, subsystem: subsystem1, level: .debug, message: "one", metadata: nil, source: "")) logProvider.log(Logger.Entry(date: january1st_1630, subsystem: subsystem2, level: .debug, message: "two", metadata: nil, source: "")) @@ -105,7 +105,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func subsystemFilter(logProvider: any LogProvider) throws { + func subsystemFilter(logProvider: any LogProvider) { logProvider.log(Logger.Entry(date: january1st_1530, subsystem: subsystem1, level: .debug, message: "one", metadata: nil, source: "")) logProvider.log(Logger.Entry(date: january1st_1630, subsystem: subsystem2, level: .debug, message: "two", metadata: nil, source: "")) logProvider.log(Logger.Entry(date: january2nd_0808, subsystem: subsystem1, level: .debug, message: "three", metadata: nil, source: "")) @@ -120,7 +120,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func levelFilter(logProvider: any LogProvider) throws { + func levelFilter(logProvider: any LogProvider) { logProvider.log(Logger.Entry(subsystem: subsystem1, level: .trace, message: "one", metadata: nil, source: "")) logProvider.log(Logger.Entry(subsystem: subsystem1, level: .debug, message: "two", metadata: nil, source: "")) logProvider.log(Logger.Entry(subsystem: subsystem1, level: .info, message: "three", metadata: nil, source: "")) @@ -175,7 +175,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func messageFilter(logProvider: any LogProvider) throws { + func messageFilter(logProvider: any LogProvider) { logProvider.log(Logger.Entry(subsystem: subsystem1, level: .debug, message: "for", metadata: nil, source: "")) logProvider.log(Logger.Entry(subsystem: subsystem1, level: .debug, message: "forward", metadata: nil, source: "")) logProvider.log(Logger.Entry(subsystem: subsystem1, level: .debug, message: "warden", metadata: nil, source: "")) @@ -194,7 +194,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func sourceFilter(logProvider: any LogProvider) throws { + func sourceFilter(logProvider: any LogProvider) { logProvider.log(Logger.Entry(subsystem: subsystem1, level: .trace, message: "one", source: "Class1")) logProvider.log(Logger.Entry(subsystem: subsystem1, level: .trace, message: "two", source: "Class2")) logProvider.log(Logger.Entry(subsystem: subsystem1, level: .trace, message: "three", source: "Class3")) @@ -216,7 +216,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func fileFilter(logProvider: any LogProvider) throws { + func fileFilter(logProvider: any LogProvider) { logProvider.log(Logger.Entry(subsystem: subsystem2, level: .warning, message: "one", source: "", file: "File1.swift")) logProvider.log(Logger.Entry(subsystem: subsystem2, level: .warning, message: "two", source: "", file: "File2.swift")) logProvider.log(Logger.Entry(subsystem: subsystem2, level: .warning, message: "three", source: "", file: "File3.swift")) @@ -238,7 +238,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func functionFilter(logProvider: any LogProvider) throws { + func functionFilter(logProvider: any LogProvider) { logProvider.log(Logger.Entry(subsystem: subsystem2, level: .debug, message: "one", source: "", function: "doWork()")) logProvider.log(Logger.Entry(subsystem: subsystem2, level: .debug, message: "two", source: "", function: "presentData()")) logProvider.log(Logger.Entry(subsystem: subsystem2, level: .debug, message: "three", source: "", function: "asyncTask(_:)")) @@ -260,7 +260,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func periodFilter(logProvider: any LogProvider) throws { + func periodFilter(logProvider: any LogProvider) { logProvider.log(Logger.Entry(date: january1st_1530, subsystem: subsystem1, level: .debug, message: "one", source: "")) logProvider.log(Logger.Entry(date: january1st_1630, subsystem: subsystem2, level: .debug, message: "two", source: "")) logProvider.log(Logger.Entry(date: january2nd_0808, subsystem: subsystem1, level: .debug, message: "three", source: "")) @@ -280,7 +280,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func andFilter(logProvider: any LogProvider) throws { + func andFilter(logProvider: any LogProvider) { logProvider.log(Logger.Entry(date: january1st_1530, subsystem: subsystem1, level: .debug, message: "one", source: "")) logProvider.log(Logger.Entry(date: january1st_1630, subsystem: subsystem2, level: .info, message: "two", source: "")) logProvider.log(Logger.Entry(date: january2nd_0808, subsystem: subsystem1, level: .debug, message: "three", source: "")) @@ -310,7 +310,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func orFilter(logProvider: any LogProvider) throws { + func orFilter(logProvider: any LogProvider) { logProvider.log(Logger.Entry(date: january1st_1530, subsystem: subsystem1, level: .debug, message: "one", source: "")) logProvider.log(Logger.Entry(date: january1st_1630, subsystem: subsystem2, level: .info, message: "two", source: "")) logProvider.log(Logger.Entry(date: january2nd_0808, subsystem: subsystem1, level: .debug, message: "three", source: "")) @@ -330,7 +330,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func notFilter(logProvider: any LogProvider) throws { + func notFilter(logProvider: any LogProvider) { logProvider.log(Logger.Entry(date: january1st_1530, subsystem: subsystem1, level: .debug, message: "one", source: "")) logProvider.log(Logger.Entry(date: january1st_1630, subsystem: subsystem2, level: .info, message: "two", source: "")) logProvider.log(Logger.Entry(date: january2nd_0808, subsystem: subsystem1, level: .debug, message: "three", source: "")) @@ -349,7 +349,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func ascendingLimit(logProvider: any LogProvider) throws { + func ascendingLimit(logProvider: any LogProvider) { logProvider.log(Logger.Entry(subsystem: subsystem1, level: .trace, message: "one", source: "")) logProvider.log(Logger.Entry(subsystem: subsystem1, level: .debug, message: "two", source: "")) logProvider.log(Logger.Entry(subsystem: subsystem1, level: .info, message: "three", source: "")) @@ -374,7 +374,7 @@ final class LogProviderTests { } @Test(arguments: try Self.logProviders) - func descendingLimit(logProvider: any LogProvider) throws { + func descendingLimit(logProvider: any LogProvider) { logProvider.log(Logger.Entry(subsystem: subsystem1, level: .trace, message: "one", source: "")) logProvider.log(Logger.Entry(subsystem: subsystem1, level: .debug, message: "two", source: "")) logProvider.log(Logger.Entry(subsystem: subsystem1, level: .info, message: "three", source: "")) diff --git a/Tests/OccurrenceTests/RedactionTests.swift b/Tests/OccurrenceTests/RedactionTests.swift index 8d56fed..81d1892 100644 --- a/Tests/OccurrenceTests/RedactionTests.swift +++ b/Tests/OccurrenceTests/RedactionTests.swift @@ -10,7 +10,7 @@ struct RedactionTests { "c": ["d": "three"], ] - @Test func redactingKeyPaths() throws { + @Test func redactingKeyPaths() { let redactedDictionary = dictionary.redacting(keyPaths: ["a", "c.d"]) #expect(redactedDictionary.keys.sorted() == ["a", "b", "c"]) #expect(redactedDictionary["a"] as? String == "")