From 77560492118a2dca9a5e15b42543e1cccbb1e798 Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Wed, 28 Feb 2024 17:23:48 -0800 Subject: [PATCH 01/11] v1 --- pkgs/web_socket/lib/browser_web_socket.dart | 1 + .../lib/src/browser_web_socket.dart | 135 ++++++++++++++++++ pkgs/web_socket/lib/src/io_web_socket.dart | 10 +- pkgs/web_socket/lib/src/utils.dart | 14 ++ pkgs/web_socket/pubspec.yaml | 2 + .../browser_web_socket_conformance_test.dart | 14 ++ 6 files changed, 169 insertions(+), 7 deletions(-) create mode 100644 pkgs/web_socket/lib/browser_web_socket.dart create mode 100644 pkgs/web_socket/lib/src/browser_web_socket.dart create mode 100644 pkgs/web_socket/lib/src/utils.dart create mode 100644 pkgs/web_socket/test/browser_web_socket_conformance_test.dart diff --git a/pkgs/web_socket/lib/browser_web_socket.dart b/pkgs/web_socket/lib/browser_web_socket.dart new file mode 100644 index 0000000000..f55835bbb8 --- /dev/null +++ b/pkgs/web_socket/lib/browser_web_socket.dart @@ -0,0 +1 @@ +export 'src/browser_web_socket.dart' show BrowserWebSocket; diff --git a/pkgs/web_socket/lib/src/browser_web_socket.dart b/pkgs/web_socket/lib/src/browser_web_socket.dart new file mode 100644 index 0000000000..198da2976f --- /dev/null +++ b/pkgs/web_socket/lib/src/browser_web_socket.dart @@ -0,0 +1,135 @@ +import 'dart:async'; +import 'dart:js_interop'; +import 'dart:typed_data'; +import 'package:web/web.dart' as web; +import '../web_socket.dart'; +import 'utils.dart'; + +class BrowserWebSocket implements WebSocket { + final web.WebSocket _webSocket; + final _events = StreamController(); + + static Future connect(Uri url) async { + final socket = web.WebSocket(url.toString())..binaryType = 'arraybuffer'; + final htmlSocket = BrowserWebSocket._(socket); + final readyCompleter = Completer(); + + if (socket.readyState == web.WebSocket.OPEN) { + readyCompleter.complete(); + } else { + if (socket.readyState == web.WebSocket.CLOSING || + socket.readyState == web.WebSocket.CLOSED) { + readyCompleter.completeError( + WebSocketException('WebSocket state error: ${socket.readyState}')); + } else { + // The socket API guarantees that only a single open event will be + // emitted. + socket.onOpen.first.then((_) { + readyCompleter.complete(htmlSocket); + }); + } + } + + socket.onError.first.then((e) { + print('I GOT A REAL ERROR!: $e'); + // Unfortunately, the underlying WebSocket API doesn't expose any + // specific information about the error itself. + final error = WebSocketException('WebSocket connection failed.'); + if (!readyCompleter.isCompleted) { + readyCompleter.completeError(error); + } else { + htmlSocket._closed(1006, 'error'); + } + }); + + socket.onMessage.listen((e) { + final eventData = e.data!; + late WebSocketEvent data; + if (eventData.typeofEquals('string')) { + data = TextDataReceived((eventData as JSString).toDart); + } else if (eventData.typeofEquals('object') && + (eventData as JSObject).instanceOfString('ArrayBuffer')) { + data = BinaryDataReceived( + (eventData as JSArrayBuffer).toDart.asUint8List()); + } else { + throw Exception('test'); + } + htmlSocket._events.add(data); + }); + + socket.onClose.first.then((event) { + if (!readyCompleter.isCompleted) { + readyCompleter.complete(htmlSocket); + } + + htmlSocket._closed(event.code, event.reason); + }); + + return readyCompleter.future; + } + + void _closed(int? code, String? reason) { + print('closing with $code, $reason'); + if (!_events.isClosed) { + _events + ..add(CloseReceived(code, reason ?? '')) + ..close(); + } + } + + BrowserWebSocket._(this._webSocket); + + @override + void sendBytes(Uint8List b) { + if (_events.isClosed) { + throw StateError('WebSocket is closed'); + } + // Silently discards the data if the connection is closed. + _webSocket.send(b.jsify()!); + } + + @override + void sendText(String s) { + if (_events.isClosed) { + throw StateError('WebSocket is closed'); + } + // Silently discards the data if the connection is closed. + _webSocket.send(s.jsify()!); + } + + /// Closes the stream. + /// https://datatracker.ietf.org/doc/html/rfc6455#section-5.5.1 + /// Cannot send more data after this. + + // If an endpoint receives a Close frame and did not previously send a + // Close frame, the endpoint MUST send a Close frame in response. (When + // sending a Close frame in response, the endpoint typically echos the + // status code it received.) It SHOULD do so as soon as practical. An + // endpoint MAY delay sending a Close frame until its current message is + // sent (for instance, if the majority of a fragmented message is + // already sent, an endpoint MAY send the remaining fragments before + // sending a Close frame). However, there is no guarantee that the + // endpoint that has already sent a Close frame will continue to process + // data. + @override + Future close([int? code, String? reason]) async { + if (_events.isClosed) { + throw StateError('WebSocket is closed'); + } + + checkCode(code); + checkReason(reason); + + unawaited(_events.close()); + if ((code, reason) case (final closeCode?, final closeReason?)) { + _webSocket.close(closeCode, closeReason); + } else if (code case final closeCode?) { + _webSocket.close(closeCode); + } else { + _webSocket.close(); + } + } + + @override + Stream get events => _events.stream; +} diff --git a/pkgs/web_socket/lib/src/io_web_socket.dart b/pkgs/web_socket/lib/src/io_web_socket.dart index 4141aaff4a..570117b4d5 100644 --- a/pkgs/web_socket/lib/src/io_web_socket.dart +++ b/pkgs/web_socket/lib/src/io_web_socket.dart @@ -4,6 +4,7 @@ import 'dart:io' as io; import 'dart:typed_data'; import '../web_socket.dart'; +import 'utils.dart'; /// A `dart-io`-based [WebSocket] implementation. class IOWebSocket implements WebSocket { @@ -70,13 +71,8 @@ class IOWebSocket implements WebSocket { throw StateError('WebSocket is closed'); } - if (code != null) { - RangeError.checkValueInInterval(code, 3000, 4999, 'code'); - } - if (reason != null && utf8.encode(reason).length > 123) { - throw ArgumentError.value(reason, 'reason', - 'reason must be <= 123 bytes long when encoded as UTF-8'); - } + checkCode(code); + checkReason(reason); unawaited(_events.close()); try { diff --git a/pkgs/web_socket/lib/src/utils.dart b/pkgs/web_socket/lib/src/utils.dart new file mode 100644 index 0000000000..c2fb86c1ee --- /dev/null +++ b/pkgs/web_socket/lib/src/utils.dart @@ -0,0 +1,14 @@ +import 'dart:convert'; + +void checkCode(int? code) { + if (code != null) { + RangeError.checkValueInInterval(code, 3000, 4999, 'code'); + } +} + +void checkReason(String? reason) { + if (reason != null && utf8.encode(reason).length > 123) { + throw ArgumentError.value(reason, 'reason', + 'reason must be <= 123 bytes long when encoded as UTF-8'); + } +} diff --git a/pkgs/web_socket/pubspec.yaml b/pkgs/web_socket/pubspec.yaml index 6ebe7bbed5..f2ad2e24a5 100644 --- a/pkgs/web_socket/pubspec.yaml +++ b/pkgs/web_socket/pubspec.yaml @@ -12,3 +12,5 @@ dev_dependencies: test: ^1.24.0 web_socket_conformance_tests: path: ../web_socket_conformance_tests/ +dependencies: + web: ^0.5.0 diff --git a/pkgs/web_socket/test/browser_web_socket_conformance_test.dart b/pkgs/web_socket/test/browser_web_socket_conformance_test.dart new file mode 100644 index 0000000000..caddff137c --- /dev/null +++ b/pkgs/web_socket/test/browser_web_socket_conformance_test.dart @@ -0,0 +1,14 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +@TestOn('browser') +library; + +import 'package:test/test.dart'; +import 'package:web_socket/browser_web_socket.dart'; +import 'package:web_socket_conformance_tests/web_socket_conformance_tests.dart'; + +void main() { + testAll((uri, {protocols}) => BrowserWebSocket.connect(uri)); +} From 0b06c9f97b4c123a9ab48c302d3e62734c7d2fb4 Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Wed, 28 Feb 2024 18:10:07 -0800 Subject: [PATCH 02/11] Style --- .../lib/src/browser_web_socket.dart | 82 ++++++++----------- pkgs/web_socket/lib/src/io_web_socket.dart | 3 +- 2 files changed, 37 insertions(+), 48 deletions(-) diff --git a/pkgs/web_socket/lib/src/browser_web_socket.dart b/pkgs/web_socket/lib/src/browser_web_socket.dart index 198da2976f..252990651b 100644 --- a/pkgs/web_socket/lib/src/browser_web_socket.dart +++ b/pkgs/web_socket/lib/src/browser_web_socket.dart @@ -5,44 +5,49 @@ import 'package:web/web.dart' as web; import '../web_socket.dart'; import 'utils.dart'; +/// A [WebSocket] using the browser WebSocket API. +/// +/// Usable when targeting the browser using either JavaScript or WASM. class BrowserWebSocket implements WebSocket { final web.WebSocket _webSocket; final _events = StreamController(); static Future connect(Uri url) async { - final socket = web.WebSocket(url.toString())..binaryType = 'arraybuffer'; - final htmlSocket = BrowserWebSocket._(socket); - final readyCompleter = Completer(); + final webSocket = web.WebSocket(url.toString())..binaryType = 'arraybuffer'; + final browserSocket = BrowserWebSocket._(webSocket); + final webSocketConnected = Completer(); - if (socket.readyState == web.WebSocket.OPEN) { - readyCompleter.complete(); + if (webSocket.readyState == web.WebSocket.OPEN) { + webSocketConnected.complete(browserSocket); } else { - if (socket.readyState == web.WebSocket.CLOSING || - socket.readyState == web.WebSocket.CLOSED) { - readyCompleter.completeError( - WebSocketException('WebSocket state error: ${socket.readyState}')); + if (webSocket.readyState == web.WebSocket.CLOSING || + webSocket.readyState == web.WebSocket.CLOSED) { + webSocketConnected.completeError(WebSocketException( + 'Unexpected WebSocket state: ${webSocket.readyState}, ' + 'expected CONNECTING (0) or OPEN (1)')); } else { // The socket API guarantees that only a single open event will be // emitted. - socket.onOpen.first.then((_) { - readyCompleter.complete(htmlSocket); - }); + unawaited(webSocket.onOpen.first.then((_) { + webSocketConnected.complete(browserSocket); + })); } } - socket.onError.first.then((e) { - print('I GOT A REAL ERROR!: $e'); + unawaited(webSocket.onError.first.then((e) { // Unfortunately, the underlying WebSocket API doesn't expose any // specific information about the error itself. - final error = WebSocketException('WebSocket connection failed.'); - if (!readyCompleter.isCompleted) { - readyCompleter.completeError(error); + if (!webSocketConnected.isCompleted) { + final error = WebSocketException('Failed to connect WebSocket'); + webSocketConnected.completeError(error); } else { - htmlSocket._closed(1006, 'error'); + browserSocket._closed(1006, 'error'); } - }); + })); + + webSocket.onMessage.listen((e) { + if (browserSocket._events.isClosed) return; - socket.onMessage.listen((e) { final eventData = e.data!; late WebSocketEvent data; if (eventData.typeofEquals('string')) { @@ -52,28 +57,25 @@ class BrowserWebSocket implements WebSocket { data = BinaryDataReceived( (eventData as JSArrayBuffer).toDart.asUint8List()); } else { - throw Exception('test'); + throw StateError('unexpected message type: ${eventData.runtimeType}'); } - htmlSocket._events.add(data); + browserSocket._events.add(data); }); - socket.onClose.first.then((event) { - if (!readyCompleter.isCompleted) { - readyCompleter.complete(htmlSocket); + unawaited(webSocket.onClose.first.then((event) { + if (!webSocketConnected.isCompleted) { + webSocketConnected.complete(browserSocket); } + browserSocket._closed(event.code, event.reason); + })); - htmlSocket._closed(event.code, event.reason); - }); - - return readyCompleter.future; + return webSocketConnected.future; } void _closed(int? code, String? reason) { - print('closing with $code, $reason'); if (!_events.isClosed) { - _events - ..add(CloseReceived(code, reason ?? '')) - ..close(); + _events.add(CloseReceived(code, reason ?? '')); + unawaited(_events.close()); } } @@ -97,20 +99,6 @@ class BrowserWebSocket implements WebSocket { _webSocket.send(s.jsify()!); } - /// Closes the stream. - /// https://datatracker.ietf.org/doc/html/rfc6455#section-5.5.1 - /// Cannot send more data after this. - - // If an endpoint receives a Close frame and did not previously send a - // Close frame, the endpoint MUST send a Close frame in response. (When - // sending a Close frame in response, the endpoint typically echos the - // status code it received.) It SHOULD do so as soon as practical. An - // endpoint MAY delay sending a Close frame until its current message is - // sent (for instance, if the majority of a fragmented message is - // already sent, an endpoint MAY send the remaining fragments before - // sending a Close frame). However, there is no guarantee that the - // endpoint that has already sent a Close frame will continue to process - // data. @override Future close([int? code, String? reason]) async { if (_events.isClosed) { diff --git a/pkgs/web_socket/lib/src/io_web_socket.dart b/pkgs/web_socket/lib/src/io_web_socket.dart index 570117b4d5..3dcc9884c7 100644 --- a/pkgs/web_socket/lib/src/io_web_socket.dart +++ b/pkgs/web_socket/lib/src/io_web_socket.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'dart:convert'; import 'dart:io' as io; import 'dart:typed_data'; @@ -7,6 +6,8 @@ import '../web_socket.dart'; import 'utils.dart'; /// A `dart-io`-based [WebSocket] implementation. +/// +/// Usable when targeting native platforms. class IOWebSocket implements WebSocket { final io.WebSocket _webSocket; final _events = StreamController(); From e1a1a56d0c8ff837bd3860e67af000b41ac0cf6c Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Wed, 28 Feb 2024 18:20:33 -0800 Subject: [PATCH 03/11] Comments --- pkgs/web_socket/lib/src/browser_web_socket.dart | 4 ++-- pkgs/web_socket/lib/src/io_web_socket.dart | 4 ++-- pkgs/web_socket/lib/src/utils.dart | 6 ++++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkgs/web_socket/lib/src/browser_web_socket.dart b/pkgs/web_socket/lib/src/browser_web_socket.dart index 252990651b..226bd8903c 100644 --- a/pkgs/web_socket/lib/src/browser_web_socket.dart +++ b/pkgs/web_socket/lib/src/browser_web_socket.dart @@ -105,8 +105,8 @@ class BrowserWebSocket implements WebSocket { throw StateError('WebSocket is closed'); } - checkCode(code); - checkReason(reason); + checkCloseCode(code); + checkCloseReason(reason); unawaited(_events.close()); if ((code, reason) case (final closeCode?, final closeReason?)) { diff --git a/pkgs/web_socket/lib/src/io_web_socket.dart b/pkgs/web_socket/lib/src/io_web_socket.dart index 3dcc9884c7..051522c692 100644 --- a/pkgs/web_socket/lib/src/io_web_socket.dart +++ b/pkgs/web_socket/lib/src/io_web_socket.dart @@ -72,8 +72,8 @@ class IOWebSocket implements WebSocket { throw StateError('WebSocket is closed'); } - checkCode(code); - checkReason(reason); + checkCloseCode(code); + checkCloseReason(reason); unawaited(_events.close()); try { diff --git a/pkgs/web_socket/lib/src/utils.dart b/pkgs/web_socket/lib/src/utils.dart index c2fb86c1ee..43b8fee34d 100644 --- a/pkgs/web_socket/lib/src/utils.dart +++ b/pkgs/web_socket/lib/src/utils.dart @@ -1,12 +1,14 @@ import 'dart:convert'; -void checkCode(int? code) { +/// Throw if the given close code is not valid. +void checkCloseCode(int? code) { if (code != null) { RangeError.checkValueInInterval(code, 3000, 4999, 'code'); } } -void checkReason(String? reason) { +/// Throw if the given close reason is not valid. +void checkCloseReason(String? reason) { if (reason != null && utf8.encode(reason).length > 123) { throw ArgumentError.value(reason, 'reason', 'reason must be <= 123 bytes long when encoded as UTF-8'); From 3fe72a46e1134a926058f1c7bb8f04d56672a61f Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Mon, 4 Mar 2024 10:43:36 -0800 Subject: [PATCH 04/11] Update pkgs/web_socket/lib/src/browser_web_socket.dart Co-authored-by: Nate Bosch --- pkgs/web_socket/lib/src/browser_web_socket.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/web_socket/lib/src/browser_web_socket.dart b/pkgs/web_socket/lib/src/browser_web_socket.dart index 226bd8903c..a8e53e40f2 100644 --- a/pkgs/web_socket/lib/src/browser_web_socket.dart +++ b/pkgs/web_socket/lib/src/browser_web_socket.dart @@ -1,7 +1,9 @@ import 'dart:async'; import 'dart:js_interop'; import 'dart:typed_data'; + import 'package:web/web.dart' as web; + import '../web_socket.dart'; import 'utils.dart'; From a04d018f356a80513a26cb312aeade217eeb98ec Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Mon, 4 Mar 2024 10:44:14 -0800 Subject: [PATCH 05/11] Update pkgs/web_socket/lib/src/browser_web_socket.dart Co-authored-by: Nate Bosch --- pkgs/web_socket/lib/src/browser_web_socket.dart | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/web_socket/lib/src/browser_web_socket.dart b/pkgs/web_socket/lib/src/browser_web_socket.dart index a8e53e40f2..527739f974 100644 --- a/pkgs/web_socket/lib/src/browser_web_socket.dart +++ b/pkgs/web_socket/lib/src/browser_web_socket.dart @@ -75,10 +75,9 @@ class BrowserWebSocket implements WebSocket { } void _closed(int? code, String? reason) { - if (!_events.isClosed) { - _events.add(CloseReceived(code, reason ?? '')); - unawaited(_events.close()); - } + if (_events.isClosed) return; + _events.add(CloseReceived(code, reason ?? '')); + unawaited(_events.close()); } BrowserWebSocket._(this._webSocket); From 9223ab38d4428f5471bfd1882050cc4cc35e2b55 Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Mon, 4 Mar 2024 10:51:03 -0800 Subject: [PATCH 06/11] Fixes --- pkgs/web_socket/lib/src/browser_web_socket.dart | 4 ++++ pkgs/web_socket/lib/src/io_web_socket.dart | 4 ++++ pkgs/web_socket/lib/src/utils.dart | 4 ++++ pkgs/web_socket/lib/src/web_socket.dart | 4 ++++ pkgs/web_socket/mono_pkg.yaml | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/pkgs/web_socket/lib/src/browser_web_socket.dart b/pkgs/web_socket/lib/src/browser_web_socket.dart index 226bd8903c..4c9c9ef465 100644 --- a/pkgs/web_socket/lib/src/browser_web_socket.dart +++ b/pkgs/web_socket/lib/src/browser_web_socket.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'dart:async'; import 'dart:js_interop'; import 'dart:typed_data'; diff --git a/pkgs/web_socket/lib/src/io_web_socket.dart b/pkgs/web_socket/lib/src/io_web_socket.dart index 051522c692..3b17ccdf58 100644 --- a/pkgs/web_socket/lib/src/io_web_socket.dart +++ b/pkgs/web_socket/lib/src/io_web_socket.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'dart:async'; import 'dart:io' as io; import 'dart:typed_data'; diff --git a/pkgs/web_socket/lib/src/utils.dart b/pkgs/web_socket/lib/src/utils.dart index 43b8fee34d..06a290f711 100644 --- a/pkgs/web_socket/lib/src/utils.dart +++ b/pkgs/web_socket/lib/src/utils.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'dart:convert'; /// Throw if the given close code is not valid. diff --git a/pkgs/web_socket/lib/src/web_socket.dart b/pkgs/web_socket/lib/src/web_socket.dart index 4109c37960..dfd3486f00 100644 --- a/pkgs/web_socket/lib/src/web_socket.dart +++ b/pkgs/web_socket/lib/src/web_socket.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'dart:typed_data'; /// An event received from the peer through the [WebSocket]. diff --git a/pkgs/web_socket/mono_pkg.yaml b/pkgs/web_socket/mono_pkg.yaml index 16e4e7a5f3..2f94ab35fd 100644 --- a/pkgs/web_socket/mono_pkg.yaml +++ b/pkgs/web_socket/mono_pkg.yaml @@ -8,3 +8,7 @@ stages: - format: sdk: - dev +- unit_test: + - test: --test-randomize-ordering-seed=random -p vm + - test: --test-randomize-ordering-seed=random -p chrome -c dart2js + - test: --test-randomize-ordering-seed=random -p chrome -c dart2wasm From f02516d0e6840c43c109f210322c69040c3f5b85 Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Mon, 4 Mar 2024 10:51:44 -0800 Subject: [PATCH 07/11] Copyright. --- pkgs/web_socket/lib/browser_web_socket.dart | 4 ++++ pkgs/web_socket/lib/io_web_socket.dart | 4 ++++ pkgs/web_socket/lib/web_socket.dart | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/pkgs/web_socket/lib/browser_web_socket.dart b/pkgs/web_socket/lib/browser_web_socket.dart index f55835bbb8..e418d3d827 100644 --- a/pkgs/web_socket/lib/browser_web_socket.dart +++ b/pkgs/web_socket/lib/browser_web_socket.dart @@ -1 +1,5 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + export 'src/browser_web_socket.dart' show BrowserWebSocket; diff --git a/pkgs/web_socket/lib/io_web_socket.dart b/pkgs/web_socket/lib/io_web_socket.dart index eaea4f06dc..674dda11dc 100644 --- a/pkgs/web_socket/lib/io_web_socket.dart +++ b/pkgs/web_socket/lib/io_web_socket.dart @@ -1 +1,5 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + export 'src/io_web_socket.dart' show IOWebSocket; diff --git a/pkgs/web_socket/lib/web_socket.dart b/pkgs/web_socket/lib/web_socket.dart index b08a48fd61..33c8fec00e 100644 --- a/pkgs/web_socket/lib/web_socket.dart +++ b/pkgs/web_socket/lib/web_socket.dart @@ -1 +1,5 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + export 'src/web_socket.dart'; From 8226eb10842cbbb9ae7ed1659e16d094444f78b5 Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Mon, 4 Mar 2024 10:53:46 -0800 Subject: [PATCH 08/11] Fix --- .github/workflows/dart.yml | 226 +++++++++++++++++++++++++++++++++++-- tool/ci.sh | 8 ++ 2 files changed, 223 insertions(+), 11 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 0f53da75a6..09c69122bc 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -457,6 +457,123 @@ jobs: - job_007 - job_008 job_012: + name: "unit_test; linux; Dart 3.3.0; PKG: pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p chrome -c dart2js`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket;commands:test_6" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket + os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0 + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - name: Setup Dart SDK + uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + with: + sdk: "3.3.0" + - id: checkout + name: Checkout repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + - id: pkgs_web_socket_pub_upgrade + name: pkgs/web_socket; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/web_socket + - name: "pkgs/web_socket; dart test --test-randomize-ordering-seed=random -p chrome -c dart2js" + run: "dart test --test-randomize-ordering-seed=random -p chrome -c dart2js" + if: "always() && steps.pkgs_web_socket_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/web_socket + needs: + - job_001 + - job_002 + - job_003 + - job_004 + - job_005 + - job_006 + - job_007 + - job_008 + job_013: + name: "unit_test; linux; Dart 3.3.0; PKG: pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket;commands:test_4" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket + os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0 + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - name: Setup Dart SDK + uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + with: + sdk: "3.3.0" + - id: checkout + name: Checkout repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + - id: pkgs_web_socket_pub_upgrade + name: pkgs/web_socket; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/web_socket + - name: "pkgs/web_socket; dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm" + run: "dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm" + if: "always() && steps.pkgs_web_socket_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/web_socket + needs: + - job_001 + - job_002 + - job_003 + - job_004 + - job_005 + - job_006 + - job_007 + - job_008 + job_014: + name: "unit_test; linux; Dart 3.3.0; PKG: pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p vm`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket;commands:test_5" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket + os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0 + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - name: Setup Dart SDK + uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + with: + sdk: "3.3.0" + - id: checkout + name: Checkout repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + - id: pkgs_web_socket_pub_upgrade + name: pkgs/web_socket; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/web_socket + - name: "pkgs/web_socket; dart test --test-randomize-ordering-seed=random -p vm" + run: "dart test --test-randomize-ordering-seed=random -p vm" + if: "always() && steps.pkgs_web_socket_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/web_socket + needs: + - job_001 + - job_002 + - job_003 + - job_004 + - job_005 + - job_006 + - job_007 + - job_008 + job_015: name: "unit_test; linux; Dart 3.4.0-154.0.dev; PKG: pkgs/http_profile; `dart test --platform vm`" runs-on: ubuntu-latest steps: @@ -495,7 +612,7 @@ jobs: - job_006 - job_007 - job_008 - job_013: + job_016: name: "unit_test; linux; Dart dev; PKG: pkgs/http; `dart run --define=no_default_http_client=true test/no_default_http_client_test.dart`" runs-on: ubuntu-latest steps: @@ -534,7 +651,7 @@ jobs: - job_006 - job_007 - job_008 - job_014: + job_017: name: "unit_test; linux; Dart dev; PKG: pkgs/http; `dart test --platform chrome`" runs-on: ubuntu-latest steps: @@ -573,7 +690,7 @@ jobs: - job_006 - job_007 - job_008 - job_015: + job_018: name: "unit_test; linux; Dart dev; PKGS: pkgs/http, pkgs/http_profile; `dart test --platform vm`" runs-on: ubuntu-latest steps: @@ -621,17 +738,17 @@ jobs: - job_006 - job_007 - job_008 - job_016: - name: "unit_test; linux; Dart dev; PKG: pkgs/http; `dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm`" + job_019: + name: "unit_test; linux; Dart dev; PKGS: pkgs/http, pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm`" runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 with: path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http;commands:test_4" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http-pkgs/web_socket;commands:test_4" restore-keys: | - os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http + os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http-pkgs/web_socket os:ubuntu-latest;pub-cache-hosted;sdk:dev os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest @@ -651,6 +768,15 @@ jobs: run: "dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm" if: "always() && steps.pkgs_http_pub_upgrade.conclusion == 'success'" working-directory: pkgs/http + - id: pkgs_web_socket_pub_upgrade + name: pkgs/web_socket; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/web_socket + - name: "pkgs/web_socket; dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm" + run: "dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm" + if: "always() && steps.pkgs_web_socket_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/web_socket needs: - job_001 - job_002 @@ -660,7 +786,85 @@ jobs: - job_006 - job_007 - job_008 - job_017: + job_020: + name: "unit_test; linux; Dart dev; PKG: pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p chrome -c dart2js`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/web_socket;commands:test_6" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/web_socket + os:ubuntu-latest;pub-cache-hosted;sdk:dev + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - name: Setup Dart SDK + uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + with: + sdk: dev + - id: checkout + name: Checkout repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + - id: pkgs_web_socket_pub_upgrade + name: pkgs/web_socket; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/web_socket + - name: "pkgs/web_socket; dart test --test-randomize-ordering-seed=random -p chrome -c dart2js" + run: "dart test --test-randomize-ordering-seed=random -p chrome -c dart2js" + if: "always() && steps.pkgs_web_socket_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/web_socket + needs: + - job_001 + - job_002 + - job_003 + - job_004 + - job_005 + - job_006 + - job_007 + - job_008 + job_021: + name: "unit_test; linux; Dart dev; PKG: pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p vm`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/web_socket;commands:test_5" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/web_socket + os:ubuntu-latest;pub-cache-hosted;sdk:dev + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - name: Setup Dart SDK + uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + with: + sdk: dev + - id: checkout + name: Checkout repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + - id: pkgs_web_socket_pub_upgrade + name: pkgs/web_socket; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/web_socket + - name: "pkgs/web_socket; dart test --test-randomize-ordering-seed=random -p vm" + run: "dart test --test-randomize-ordering-seed=random -p vm" + if: "always() && steps.pkgs_web_socket_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/web_socket + needs: + - job_001 + - job_002 + - job_003 + - job_004 + - job_005 + - job_006 + - job_007 + - job_008 + job_022: name: "unit_test; linux; Flutter stable; PKG: pkgs/flutter_http_example; `flutter test --platform chrome`" runs-on: ubuntu-latest steps: @@ -699,7 +903,7 @@ jobs: - job_006 - job_007 - job_008 - job_018: + job_023: name: "unit_test; linux; Flutter stable; PKG: pkgs/flutter_http_example; `flutter test`" runs-on: ubuntu-latest steps: @@ -738,7 +942,7 @@ jobs: - job_006 - job_007 - job_008 - job_019: + job_024: name: "unit_test; macos; Flutter stable; PKG: pkgs/flutter_http_example; `flutter test`" runs-on: macos-latest steps: @@ -777,7 +981,7 @@ jobs: - job_006 - job_007 - job_008 - job_020: + job_025: name: "unit_test; windows; Flutter stable; PKG: pkgs/flutter_http_example; `flutter test`" runs-on: windows-latest steps: diff --git a/tool/ci.sh b/tool/ci.sh index d4cc8d2ee6..864885d1fe 100755 --- a/tool/ci.sh +++ b/tool/ci.sh @@ -99,6 +99,14 @@ for PKG in ${PKGS}; do echo 'dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm' dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm || EXIT_CODE=$? ;; + test_5) + echo 'dart test --test-randomize-ordering-seed=random -p vm' + dart test --test-randomize-ordering-seed=random -p vm || EXIT_CODE=$? + ;; + test_6) + echo 'dart test --test-randomize-ordering-seed=random -p chrome -c dart2js' + dart test --test-randomize-ordering-seed=random -p chrome -c dart2js || EXIT_CODE=$? + ;; *) echo -e "\033[31mUnknown TASK '${TASK}' - TERMINATING JOB\033[0m" exit 64 From 7795eea229c67f0f9619343599fc623f6903c37c Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Mon, 4 Mar 2024 11:04:40 -0800 Subject: [PATCH 09/11] Update dart.yml --- .github/workflows/dart.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 77300c0d81..f90242cefc 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -461,7 +461,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 with: path: "~/.pub-cache/hosted" key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket;commands:test_6" @@ -500,7 +500,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 with: path: "~/.pub-cache/hosted" key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket;commands:test_4" @@ -539,7 +539,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 with: path: "~/.pub-cache/hosted" key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket;commands:test_5" @@ -791,7 +791,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 with: path: "~/.pub-cache/hosted" key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/web_socket;commands:test_6" @@ -830,7 +830,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 with: path: "~/.pub-cache/hosted" key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/web_socket;commands:test_5" From 39a6ff745bcdb3582e477b1660660277216bf0b2 Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Mon, 4 Mar 2024 11:09:55 -0800 Subject: [PATCH 10/11] Update disconnect_after_upgrade_tests.dart --- .../lib/src/disconnect_after_upgrade_tests.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/web_socket_conformance_tests/lib/src/disconnect_after_upgrade_tests.dart b/pkgs/web_socket_conformance_tests/lib/src/disconnect_after_upgrade_tests.dart index 16ccd68fa8..b5f52e9503 100644 --- a/pkgs/web_socket_conformance_tests/lib/src/disconnect_after_upgrade_tests.dart +++ b/pkgs/web_socket_conformance_tests/lib/src/disconnect_after_upgrade_tests.dart @@ -33,6 +33,7 @@ void testDisconnectAfterUpgrade( expect( (await channel.events.single as CloseReceived).code, anyOf([ + 1002, // protocol error 1005, // closed no status 1006, // closed abnormal ])); From 4b9425e379ba172290fae30c020d4695a0fa6ee4 Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Mon, 4 Mar 2024 11:19:54 -0800 Subject: [PATCH 11/11] Linux and no wasm --- .github/workflows/dart.yml | 76 +++++++---------------------------- pkgs/web_socket/mono_pkg.yaml | 5 ++- 2 files changed, 18 insertions(+), 63 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index f90242cefc..5f04f84ba7 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -496,45 +496,6 @@ jobs: - job_007 - job_008 job_013: - name: "unit_test; linux; Dart 3.3.0; PKG: pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm`" - runs-on: ubuntu-latest - steps: - - name: Cache Pub hosted dependencies - uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 - with: - path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket;commands:test_4" - restore-keys: | - os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/web_socket - os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0 - os:ubuntu-latest;pub-cache-hosted - os:ubuntu-latest - - name: Setup Dart SDK - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 - with: - sdk: "3.3.0" - - id: checkout - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - - id: pkgs_web_socket_pub_upgrade - name: pkgs/web_socket; dart pub upgrade - run: dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: pkgs/web_socket - - name: "pkgs/web_socket; dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm" - run: "dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm" - if: "always() && steps.pkgs_web_socket_pub_upgrade.conclusion == 'success'" - working-directory: pkgs/web_socket - needs: - - job_001 - - job_002 - - job_003 - - job_004 - - job_005 - - job_006 - - job_007 - - job_008 - job_014: name: "unit_test; linux; Dart 3.3.0; PKG: pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p vm`" runs-on: ubuntu-latest steps: @@ -573,7 +534,7 @@ jobs: - job_006 - job_007 - job_008 - job_015: + job_014: name: "unit_test; linux; Dart 3.4.0-154.0.dev; PKG: pkgs/http_profile; `dart test --platform vm`" runs-on: ubuntu-latest steps: @@ -612,7 +573,7 @@ jobs: - job_006 - job_007 - job_008 - job_016: + job_015: name: "unit_test; linux; Dart dev; PKG: pkgs/http; `dart run --define=no_default_http_client=true test/no_default_http_client_test.dart`" runs-on: ubuntu-latest steps: @@ -651,7 +612,7 @@ jobs: - job_006 - job_007 - job_008 - job_017: + job_016: name: "unit_test; linux; Dart dev; PKG: pkgs/http; `dart test --platform chrome`" runs-on: ubuntu-latest steps: @@ -690,7 +651,7 @@ jobs: - job_006 - job_007 - job_008 - job_018: + job_017: name: "unit_test; linux; Dart dev; PKGS: pkgs/http, pkgs/http_profile; `dart test --platform vm`" runs-on: ubuntu-latest steps: @@ -738,17 +699,17 @@ jobs: - job_006 - job_007 - job_008 - job_019: - name: "unit_test; linux; Dart dev; PKGS: pkgs/http, pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm`" + job_018: + name: "unit_test; linux; Dart dev; PKG: pkgs/http; `dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm`" runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 with: path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http-pkgs/web_socket;commands:test_4" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http;commands:test_4" restore-keys: | - os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http-pkgs/web_socket + os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http os:ubuntu-latest;pub-cache-hosted;sdk:dev os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest @@ -768,15 +729,6 @@ jobs: run: "dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm" if: "always() && steps.pkgs_http_pub_upgrade.conclusion == 'success'" working-directory: pkgs/http - - id: pkgs_web_socket_pub_upgrade - name: pkgs/web_socket; dart pub upgrade - run: dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: pkgs/web_socket - - name: "pkgs/web_socket; dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm" - run: "dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm" - if: "always() && steps.pkgs_web_socket_pub_upgrade.conclusion == 'success'" - working-directory: pkgs/web_socket needs: - job_001 - job_002 @@ -786,7 +738,7 @@ jobs: - job_006 - job_007 - job_008 - job_020: + job_019: name: "unit_test; linux; Dart dev; PKG: pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p chrome -c dart2js`" runs-on: ubuntu-latest steps: @@ -825,7 +777,7 @@ jobs: - job_006 - job_007 - job_008 - job_021: + job_020: name: "unit_test; linux; Dart dev; PKG: pkgs/web_socket; `dart test --test-randomize-ordering-seed=random -p vm`" runs-on: ubuntu-latest steps: @@ -864,7 +816,7 @@ jobs: - job_006 - job_007 - job_008 - job_022: + job_021: name: "unit_test; linux; Flutter stable; PKG: pkgs/flutter_http_example; `flutter test --platform chrome`" runs-on: ubuntu-latest steps: @@ -903,7 +855,7 @@ jobs: - job_006 - job_007 - job_008 - job_023: + job_022: name: "unit_test; linux; Flutter stable; PKG: pkgs/flutter_http_example; `flutter test`" runs-on: ubuntu-latest steps: @@ -942,7 +894,7 @@ jobs: - job_006 - job_007 - job_008 - job_024: + job_023: name: "unit_test; macos; Flutter stable; PKG: pkgs/flutter_http_example; `flutter test`" runs-on: macos-latest steps: @@ -981,7 +933,7 @@ jobs: - job_006 - job_007 - job_008 - job_025: + job_024: name: "unit_test; windows; Flutter stable; PKG: pkgs/flutter_http_example; `flutter test`" runs-on: windows-latest steps: diff --git a/pkgs/web_socket/mono_pkg.yaml b/pkgs/web_socket/mono_pkg.yaml index 2f94ab35fd..13baee341e 100644 --- a/pkgs/web_socket/mono_pkg.yaml +++ b/pkgs/web_socket/mono_pkg.yaml @@ -10,5 +10,8 @@ stages: - dev - unit_test: - test: --test-randomize-ordering-seed=random -p vm + os: + - linux - test: --test-randomize-ordering-seed=random -p chrome -c dart2js - - test: --test-randomize-ordering-seed=random -p chrome -c dart2wasm + os: + - linux