GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Add test cases for `WebWorkerDedicatedExecutor` · aehlke/JavaScriptKit@9c38b8f

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • Sources/JavaScriptEventLoopTestSupport
    • JavaScriptEventLoopTestSupport.swift
  • Tests/JavaScriptEventLoopTests
    • WebWorkerDedicatedExecutorTests.swift
    • WebWorkerTaskExecutorTests.swift
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎Sources/JavaScriptEventLoopTestSupport/JavaScriptEventLoopTestSupport.swift‎

Copy file name to clipboardExpand all lines: Sources/JavaScriptEventLoopTestSupport/JavaScriptEventLoopTestSupport.swift
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ import JavaScriptEventLoop
2727
func swift_javascriptkit_activate_js_executor_impl() {
2828
MainActor.assumeIsolated {
2929
JavaScriptEventLoop.installGlobalExecutor()
30+
#if canImport(wasi_pthread) && compiler(>=6.1) && _runtime(_multithreaded)
31+
if #available(macOS 15.0, iOS 18.0, watchOS 11.0, tvOS 18.0, visionOS 2.0, *) {
32+
WebWorkerTaskExecutor.installGlobalExecutor()
33+
}
34+
#endif
3035
}
3136
}
3237

Collapse file

‎Tests/JavaScriptEventLoopTests/WebWorkerDedicatedExecutorTests.swift‎

Copy file name to clipboard
+32Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import XCTest
2+
@testable import JavaScriptEventLoop
3+
4+
final class WebWorkerDedicatedExecutorTests: XCTestCase {
5+
actor MyActor {
6+
let executor: WebWorkerDedicatedExecutor
7+
nonisolated var unownedExecutor: UnownedSerialExecutor {
8+
self.executor.asUnownedSerialExecutor()
9+
}
10+
11+
init(executor: WebWorkerDedicatedExecutor) {
12+
self.executor = executor
13+
XCTAssertTrue(isMainThread())
14+
}
15+
16+
func onWorkerThread() async {
17+
XCTAssertFalse(isMainThread())
18+
await Task.detached {}.value
19+
// Should keep on the thread after back from the other isolation domain
20+
XCTAssertFalse(isMainThread())
21+
}
22+
}
23+
24+
func testEnqueue() async throws {
25+
let executor = try await WebWorkerDedicatedExecutor()
26+
defer { executor.terminate() }
27+
let actor = MyActor(executor: executor)
28+
XCTAssertTrue(isMainThread())
29+
await actor.onWorkerThread()
30+
XCTAssertTrue(isMainThread())
31+
}
32+
}
Collapse file

‎Tests/JavaScriptEventLoopTests/WebWorkerTaskExecutorTests.swift‎

Copy file name to clipboardExpand all lines: Tests/JavaScriptEventLoopTests/WebWorkerTaskExecutorTests.swift
-4Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,6 @@ func pthread_mutex_lock(_ mutex: UnsafeMutablePointer<pthread_mutex_t>) -> Int32
2323
#endif
2424

2525
final class WebWorkerTaskExecutorTests: XCTestCase {
26-
override func setUp() async {
27-
WebWorkerTaskExecutor.installGlobalExecutor()
28-
}
29-
3026
func testTaskRunOnMainThread() async throws {
3127
let executor = try await WebWorkerTaskExecutor(numberOfThreads: 1)
3228

0 commit comments

Comments
0 (0)
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.