Skip to content

Commit 0105778

Browse files
authored
Add StrongHash implementation (#135)
* Add StrongHash implementation * Add swift-crypto support * Update GitHub workflow file * Fix Linux include directory issue * Fix XCTestScaffold.runAllTests issue * Exclude UpdateTests from non-Darwin platform * Fix wasm workflow * Fix CI test case issue * Update Package.swift
1 parent 98f3ac8 commit 0105778

File tree

14 files changed

+396
-30
lines changed

14 files changed

+396
-30
lines changed

.github/workflows/compatibility_tests.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ jobs:
2020
OPENSWIFTUI_WERROR: 1
2121
OPENGRAPH_ATTRIBUTEGRAPH: 1
2222
OPENSWIFTUI_SWIFT_LOG: 0
23+
OPENSWIFTUI_SWIFT_CRYPTO: 0
2324
OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }}
2425
steps:
2526
- uses: actions/checkout@v4
@@ -60,6 +61,7 @@ jobs:
6061
OPENSWIFTUI_WERROR: 1
6162
OPENGRAPH_ATTRIBUTEGRAPH: 1
6263
OPENSWIFTUI_SWIFT_LOG: 0
64+
OPENSWIFTUI_SWIFT_CRYPTO: 0
6365
OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }}
6466
steps:
6567
- uses: actions/checkout@v4

.github/workflows/ios.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ jobs:
2525
OPENGRAPH_ATTRIBUTEGRAPH: 1
2626
OPENSWIFTUI_COMPATIBILITY_TEST: 0
2727
OPENSWIFTUI_SWIFT_LOG: 0
28+
OPENSWIFTUI_SWIFT_CRYPTO: 0
2829
OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }}
2930
steps:
3031
- uses: actions/checkout@v4

.github/workflows/macos.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ jobs:
2121
OPENGRAPH_ATTRIBUTEGRAPH: 1
2222
OPENSWIFTUI_COMPATIBILITY_TEST: 0
2323
OPENSWIFTUI_SWIFT_LOG: 0
24+
OPENSWIFTUI_SWIFT_CRYPTO: 0
2425
OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }}
2526
steps:
2627
- uses: actions/checkout@v4
@@ -35,7 +36,7 @@ jobs:
3536
swift test \
3637
-c debug \
3738
--filter OpenSwiftUITests \
38-
-Xswiftc -warnings-as-errors \
39+
--filter OpenSwiftUICoreTests \
3940
--enable-code-coverage \
4041
--build-path .build-test-debug
4142
xcrun llvm-cov show \
@@ -47,7 +48,7 @@ jobs:
4748
swift test \
4849
-c release \
4950
--filter OpenSwiftUITests \
50-
-Xswiftc -warnings-as-errors \
51+
--filter OpenSwiftUICoreTests \
5152
--enable-code-coverage \
5253
--build-path .build-test-release
5354
- uses: codecov/codecov-action@v3

.github/workflows/ubuntu.yml

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,14 @@ jobs:
1212
strategy:
1313
fail-fast: false
1414
matrix:
15-
swift_version: ["6.0"]
16-
include:
17-
- container: "swiftlang/swift:nightly-6.0-jammy"
18-
continue-on-error: true
15+
swift_version: ["6.0.1"]
1916
runs-on: ubuntu-22.04
2017
env:
2118
OPENSWIFTUI_WERROR: 1
2219
OPENGRAPH_ATTRIBUTEGRAPH: 0
2320
OPENSWIFTUI_COMPATIBILITY_TEST: 0
2421
OPENSWIFTUI_SWIFT_LOG: 1
22+
OPENSWIFTUI_SWIFT_CRYPTO: 1
2523
container: swift:${{ matrix.swift_version }}-jammy
2624
steps:
2725
- uses: actions/checkout@v4
@@ -30,28 +28,23 @@ jobs:
3028
swift test \
3129
-c debug \
3230
--filter OpenSwiftUITests \
33-
-Xswiftc -warnings-as-errors \
31+
--filter OpenSwiftUICoreTests \
3432
--enable-code-coverage \
3533
--build-path .build-test-debug
3634
llvm-cov show \
3735
-instr-profile=.build-test-debug/debug/codecov/default.profdata \
3836
.build-test-debug/debug/OpenSwiftUIPackageTests.xctest \
3937
> coverage.txt
40-
continue-on-error: ${{ matrix.continue-on-error }}
4138
id: debug-test
4239
- name: Building and running tests in release mode
4340
run: |
4441
swift test \
4542
-c release \
4643
--filter OpenSwiftUITests \
47-
-Xswiftc -warnings-as-errors \
44+
--filter OpenSwiftUICoreTests \
4845
--build-path .build-test-release
49-
continue-on-error: ${{ matrix.continue-on-error }}
5046
id: release-test
51-
if: steps.debug-test.outcome == 'success'
5247
- uses: codecov/codecov-action@v3
5348
with:
5449
token: ${{ secrets.CODECOV_TOKEN }}
55-
verbose: true
56-
continue-on-error: true
57-
if: steps.debug-test.outcome == 'success'
50+
verbose: true

.github/workflows/wasm.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@ jobs:
1818
include:
1919
- swift_version: "6.0-SNAPSHOT-2024-09-18-a"
2020
continue-on-error: true
21+
- swift_version: "5.10.0-RELEASE"
22+
continue-on-error: false
2123
runs-on: ${{ matrix.os }}
2224
env:
2325
OPENSWIFTUI_WERROR: 1
2426
OPENGRAPH_ATTRIBUTEGRAPH: 0
2527
OPENSWIFTUI_COMPATIBILITY_TEST: 0
2628
OPENSWIFTUI_SWIFT_LOG: 1
29+
OPENSWIFTUI_SWIFT_CRYPTO: 1
2730
steps:
2831
- uses: actions/checkout@v4
2932
- uses: swiftwasm/setup-swiftwasm@v1

Package.swift

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,10 @@ let openSwiftUICompatibilityTestTarget = Target.testTarget(
133133
swiftSettings: sharedSwiftSettings
134134
)
135135

136-
let swiftBinPath = Context.environment["_"] ?? ""
136+
let swiftBinPath = Context.environment["_"] ?? "/usr/bin/swift"
137137
let swiftBinURL = URL(fileURLWithPath: swiftBinPath)
138138
let SDKPath = swiftBinURL.deletingLastPathComponent().deletingLastPathComponent().deletingLastPathComponent().path
139-
let includePath = SDKPath.appending("/usr/lib/swift_static")
139+
let includePath = SDKPath.appending("/usr/lib/swift")
140140

141141
let package = Package(
142142
name: "OpenSwiftUI",
@@ -213,6 +213,13 @@ extension Target {
213213
swiftSettings.append(.define("OPENSWIFTUI_SWIFT_LOG"))
214214
self.swiftSettings = swiftSettings
215215
}
216+
217+
func addSwiftCryptoSettings() {
218+
dependencies.append(.product(name: "Crypto", package: "swift-crypto"))
219+
var swiftSettings = swiftSettings ?? []
220+
swiftSettings.append(.define("OPENSWIFTUI_SWIFT_CRYPTO"))
221+
self.swiftSettings = swiftSettings
222+
}
216223
}
217224

218225
if attributeGraphCondition {
@@ -249,6 +256,19 @@ if swiftLogCondition {
249256
openSwiftUITarget.addSwiftLogSettings()
250257
}
251258

259+
#if os(macOS)
260+
let swiftCryptoCondition = envEnable("OPENSWIFTUI_SWIFT_CRYPTO")
261+
#else
262+
let swiftCryptoCondition = envEnable("OPENSWIFTUI_SWIFT_CRYPTO", default: true)
263+
#endif
264+
if swiftCryptoCondition {
265+
package.dependencies.append(
266+
.package(url: "https://github.com/apple/swift-crypto.git", from: "3.8.0")
267+
)
268+
openSwiftUICoreTarget.addSwiftCryptoSettings()
269+
openSwiftUITarget.addSwiftCryptoSettings()
270+
}
271+
252272
let compatibilityTestCondition = envEnable("OPENSWIFTUI_COMPATIBILITY_TEST")
253273
if compatibilityTestCondition {
254274
var swiftSettings: [SwiftSetting] = (openSwiftUICompatibilityTestTarget.swiftSettings ?? [])

[email protected]

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,10 @@ let openSwiftUICompatibilityTestTarget = Target.testTarget(
129129
swiftSettings: sharedSwiftSettings
130130
)
131131

132-
let swiftBinPath = Context.environment["_"] ?? ""
132+
let swiftBinPath = Context.environment["_"] ?? "/usr/bin/swift"
133133
let swiftBinURL = URL(fileURLWithPath: swiftBinPath)
134134
let SDKPath = swiftBinURL.deletingLastPathComponent().deletingLastPathComponent().deletingLastPathComponent().path
135-
let includePath = SDKPath.appending("/usr/lib/swift_static")
135+
let includePath = SDKPath.appending("/usr/lib/swift")
136136

137137
let package = Package(
138138
name: "OpenSwiftUI",
@@ -206,6 +206,13 @@ extension Target {
206206
self.swiftSettings = swiftSettings
207207
}
208208

209+
func addSwiftCryptoSettings() {
210+
dependencies.append(.product(name: "Crypto", package: "swift-crypto"))
211+
var swiftSettings = swiftSettings ?? []
212+
swiftSettings.append(.define("OPENSWIFTUI_SWIFT_CRYPTO"))
213+
self.swiftSettings = swiftSettings
214+
}
215+
209216
func addSwiftTestingSettings() {
210217
dependencies.append(.product(name: "Testing", package: "swift-testing"))
211218
var swiftSettings = swiftSettings ?? []
@@ -248,6 +255,19 @@ if swiftLogCondition {
248255
openSwiftUITarget.addSwiftLogSettings()
249256
}
250257

258+
#if os(macOS)
259+
let swiftCryptoCondition = envEnable("OPENSWIFTUI_SWIFT_CRYPTO")
260+
#else
261+
let swiftCryptoCondition = envEnable("OPENSWIFTUI_SWIFT_CRYPTO", default: true)
262+
#endif
263+
if swiftCryptoCondition {
264+
package.dependencies.append(
265+
.package(url: "https://github.com/apple/swift-crypto.git", from: "3.8.0")
266+
)
267+
openSwiftUICoreTarget.addSwiftCryptoSettings()
268+
openSwiftUITarget.addSwiftCryptoSettings()
269+
}
270+
251271
// Remove the check when swift-testing reaches 1.0.0
252272
let swiftTestingCondition = envEnable("OPENSWIFTUI_SWIFT_TESTING")
253273
if swiftTestingCondition {

0 commit comments

Comments
 (0)