Skip to content

Commit 448a23e

Browse files
committed
fix(audio): return Bool from Task closures in AudioTapTests for Swift 6 Sendable
Capturing local mutable vars in Task closures violates Sendable under Swift 6 strict concurrency. Return the value from each Task instead and read it via .value. This fixes the cascading @const macro-expansion errors on CI. Also lifts Sparkle key presence check out of step-level if: into a job-level HAS_SPARKLE_KEY env so release.yml passes GitHub's expression validator.
1 parent d1147f1 commit 448a23e

3 files changed

Lines changed: 10 additions & 11 deletions

File tree

.github/workflows/release.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ jobs:
2222
ARCHS: arm64
2323
ONLY_ACTIVE_ARCH: "NO"
2424
MARKETING_VERSION: ${{ github.ref_name }}
25+
HAS_SPARKLE_KEY: ${{ secrets.SPARKLE_ED_PRIVATE_KEY != '' && 'true' || 'false' }}
2526

2627
steps:
2728
- name: Checkout (full history for changelog)
@@ -243,7 +244,7 @@ jobs:
243244
} >> "$GITHUB_OUTPUT"
244245
245246
- name: Sign appcast entry (Sparkle EdDSA)
246-
if: ${{ secrets.SPARKLE_ED_PRIVATE_KEY != '' }}
247+
if: env.HAS_SPARKLE_KEY == 'true'
247248
env:
248249
SPARKLE_ED_PRIVATE_KEY: ${{ secrets.SPARKLE_ED_PRIVATE_KEY }}
249250
run: |

Modules/AudioEngine/Tests/AudioEngineTests/Tap/AudioTapTests.swift

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,15 @@ struct AudioTapTests {
3333
let tap = AudioTap(bufferSize: 1024)
3434
tap.install(on: mixer)
3535

36-
var gotNil = false
37-
let task = Task {
36+
let task = Task { () -> Bool in
3837
var iter = tap.samples.makeAsyncIterator()
3938
// After remove(), the very next iteration should return nil.
4039
_ = await iter.next() // may or may not have a sample yet
41-
gotNil = await iter.next() == nil
40+
return await iter.next() == nil
4241
}
4342

4443
tap.remove(from: mixer)
45-
await task.value
44+
let gotNil = await task.value
4645
#expect(gotNil, "Stream did not finish after remove(from:)")
4746
}
4847

@@ -93,14 +92,13 @@ struct AudioTapTests {
9392
let engine = AudioEngine()
9493
let stream = await engine.startTap()
9594

96-
var didFinish = false
97-
let consumer = Task {
95+
let consumer = Task { () -> Bool in
9896
for await _ in stream {}
99-
didFinish = true
97+
return true
10098
}
10199

102100
await engine.stopTap()
103-
await consumer.value
101+
let didFinish = await consumer.value
104102
#expect(didFinish)
105103
}
106104
}

website/.eleventy.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export default function (eleventyConfig) {
1111
// Markdown configuration.
1212
const md = markdownIt({ html: true, linkify: true, typographer: true }).use(
1313
markdownItAnchor,
14-
{ permalink: markdownItAnchor.permalink.headerLink() }
14+
{ permalink: markdownItAnchor.permalink.headerLink() },
1515
);
1616
eleventyConfig.setLibrary("md", md);
1717

@@ -42,7 +42,7 @@ export default function (eleventyConfig) {
4242
day: "numeric",
4343
month: "long",
4444
year: "numeric",
45-
})
45+
}),
4646
);
4747

4848
// Markdown filter for inline use in Nunjucks templates.

0 commit comments

Comments
 (0)