Require Dart 2.19, enable and fix new team lints (dart-lang/http_multi_server#51)
diff --git a/pkgs/http_multi_server/.github/workflows/test-package.yml b/pkgs/http_multi_server/.github/workflows/test-package.yml index b552d6a..f8d94da 100644 --- a/pkgs/http_multi_server/.github/workflows/test-package.yml +++ b/pkgs/http_multi_server/.github/workflows/test-package.yml
@@ -47,7 +47,7 @@ matrix: # Add macos-latest and/or windows-latest if relevant for this package. os: [ubuntu-latest] - sdk: [2.12.0, dev] + sdk: [2.19.0, dev] steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - uses: dart-lang/setup-dart@a57a6c04cf7d4840e88432aad6281d1e125f0d46
diff --git a/pkgs/http_multi_server/CHANGELOG.md b/pkgs/http_multi_server/CHANGELOG.md index 3988a6a..70b7abd 100644 --- a/pkgs/http_multi_server/CHANGELOG.md +++ b/pkgs/http_multi_server/CHANGELOG.md
@@ -1,3 +1,7 @@ +## 3.2.2-dev + +* Require Dart 2.19 + ## 3.2.1 * Populate the pubspec `repository` field.
diff --git a/pkgs/http_multi_server/analysis_options.yaml b/pkgs/http_multi_server/analysis_options.yaml index 055ac10..9076448 100644 --- a/pkgs/http_multi_server/analysis_options.yaml +++ b/pkgs/http_multi_server/analysis_options.yaml
@@ -1,5 +1,32 @@ -include: package:lints/recommended.yaml +include: package:dart_flutter_team_lints/analysis_options.yaml analyzer: language: strict-casts: true + +linter: + rules: + - avoid_bool_literals_in_conditional_expressions + - avoid_classes_with_only_static_members + - avoid_private_typedef_functions + - avoid_redundant_argument_values + - avoid_returning_null + - avoid_returning_null_for_future + - avoid_returning_this + - avoid_unused_constructor_parameters + - cancel_subscriptions + - cascade_invocations + - comment_references + - join_return_with_assignment + - literal_only_boolean_expressions + - no_adjacent_strings_in_list + - no_runtimeType_toString + - package_api_docs + - prefer_const_constructors + - prefer_const_declarations + - prefer_expression_function_bodies + - prefer_final_locals + - prefer_relative_imports + - test_types_in_equals + - use_string_buffers + - use_super_parameters
diff --git a/pkgs/http_multi_server/example/main.dart b/pkgs/http_multi_server/example/main.dart index 00f9515..661b52e 100644 --- a/pkgs/http_multi_server/example/main.dart +++ b/pkgs/http_multi_server/example/main.dart
@@ -5,8 +5,9 @@ void main() async { // Both http://127.0.0.1:8080 and http://[::1]:8080 will be bound to the same // server. - var server = await HttpMultiServer.loopback(8080); - shelf_io.serveRequests(server, (request) { - return shelf.Response.ok('Hello, world!'); - }); + final server = await HttpMultiServer.loopback(8080); + shelf_io.serveRequests( + server, + (request) => shelf.Response.ok('Hello, world!'), + ); }
diff --git a/pkgs/http_multi_server/lib/http_multi_server.dart b/pkgs/http_multi_server/lib/http_multi_server.dart index 5f23947..18fba33 100644 --- a/pkgs/http_multi_server/lib/http_multi_server.dart +++ b/pkgs/http_multi_server/lib/http_multi_server.dart
@@ -106,29 +106,27 @@ /// /// See [HttpServer.bind]. static Future<HttpServer> loopback(int port, - {int backlog = 0, bool v6Only = false, bool shared = false}) { - return _loopback( - port, - (address, port) => HttpServer.bind(address, port, - backlog: backlog, v6Only: v6Only, shared: shared)); - } + {int backlog = 0, bool v6Only = false, bool shared = false}) => + _loopback( + port, + (address, port) => HttpServer.bind(address, port, + backlog: backlog, v6Only: v6Only, shared: shared)); /// Like [loopback], but supports HTTPS requests. /// /// See [HttpServer.bindSecure]. static Future<HttpServer> loopbackSecure(int port, SecurityContext context, - {int backlog = 0, - bool v6Only = false, - bool requestClientCertificate = false, - bool shared = false}) { - return _loopback( - port, - (address, port) => HttpServer.bindSecure(address, port, context, - backlog: backlog, - v6Only: v6Only, - shared: shared, - requestClientCertificate: requestClientCertificate)); - } + {int backlog = 0, + bool v6Only = false, + bool requestClientCertificate = false, + bool shared = false}) => + _loopback( + port, + (address, port) => HttpServer.bindSecure(address, port, context, + backlog: backlog, + v6Only: v6Only, + shared: shared, + requestClientCertificate: requestClientCertificate)); /// Bind an [HttpServer] with handling for special addresses 'localhost' and /// 'any'. @@ -206,13 +204,13 @@ return await bind(InternetAddress.loopbackIPv6, port); } - var v4Server = await bind(InternetAddress.loopbackIPv4, port); + final v4Server = await bind(InternetAddress.loopbackIPv4, port); if (!await supportsIPv6) return v4Server; try { // Reuse the IPv4 server's port so that if [port] is 0, both servers use // the same ephemeral port. - var v6Server = await bind(InternetAddress.loopbackIPv6, v4Server.port); + final v6Server = await bind(InternetAddress.loopbackIPv6, v4Server.port); return HttpMultiServer([v4Server, v6Server]); } on SocketException catch (error) { // If there is already a server listening we'll lose the reference on a @@ -238,13 +236,14 @@ /// current connections handled by all the servers. @override HttpConnectionsInfo connectionsInfo() { - var info = HttpConnectionsInfo(); + final info = HttpConnectionsInfo(); for (var server in _servers) { - var subInfo = server.connectionsInfo(); - info.total += subInfo.total; - info.active += subInfo.active; - info.idle += subInfo.idle; - info.closing += subInfo.closing; + final subInfo = server.connectionsInfo(); + info + ..total += subInfo.total + ..active += subInfo.active + ..idle += subInfo.idle + ..closing += subInfo.closing; } return info; }
diff --git a/pkgs/http_multi_server/lib/src/utils.dart b/pkgs/http_multi_server/lib/src/utils.dart index e9fb3b4..87520fb 100644 --- a/pkgs/http_multi_server/lib/src/utils.dart +++ b/pkgs/http_multi_server/lib/src/utils.dart
@@ -7,7 +7,7 @@ /// Returns whether this computer supports binding to IPv6 addresses. final Future<bool> supportsIPv6 = () async { try { - var socket = await ServerSocket.bind(InternetAddress.loopbackIPv6, 0); + final socket = await ServerSocket.bind(InternetAddress.loopbackIPv6, 0); await socket.close(); return true; } on SocketException catch (_) { @@ -18,7 +18,7 @@ /// Returns whether this computer supports binding to IPv4 addresses. final Future<bool> supportsIPv4 = () async { try { - var socket = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0); + final socket = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0); await socket.close(); return true; } on SocketException catch (_) {
diff --git a/pkgs/http_multi_server/pubspec.yaml b/pkgs/http_multi_server/pubspec.yaml index 3d855c0..9220548 100644 --- a/pkgs/http_multi_server/pubspec.yaml +++ b/pkgs/http_multi_server/pubspec.yaml
@@ -1,19 +1,17 @@ name: http_multi_server -version: 3.2.1 +version: 3.2.2-dev description: >- A dart:io HttpServer wrapper that handles requests from multiple servers. repository: https://github.com/dart-lang/http_multi_server environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.19.0 <3.0.0' dependencies: async: ^2.5.0 dev_dependencies: + dart_flutter_team_lints: ^1.0.0 http: ^0.13.0 - lints: ^1.0.0 - test: ^1.16.0 - -dependency_overrides: + shelf: ^1.4.0 test: ^1.16.0
diff --git a/pkgs/http_multi_server/test/http_multi_server_test.dart b/pkgs/http_multi_server/test/http_multi_server_test.dart index 0591267..62f5b77 100644 --- a/pkgs/http_multi_server/test/http_multi_server_test.dart +++ b/pkgs/http_multi_server/test/http_multi_server_test.dart
@@ -19,13 +19,11 @@ late HttpServer subServer2; late HttpServer subServer3; - setUp(() { - return Future.wait([ - HttpServer.bind('localhost', 0).then((server) => subServer1 = server), - HttpServer.bind('localhost', 0).then((server) => subServer2 = server), - HttpServer.bind('localhost', 0).then((server) => subServer3 = server) - ]).then((servers) => multiServer = HttpMultiServer(servers)); - }); + setUp(() => Future.wait([ + HttpServer.bind('localhost', 0).then((server) => subServer1 = server), + HttpServer.bind('localhost', 0).then((server) => subServer2 = server), + HttpServer.bind('localhost', 0).then((server) => subServer3 = server) + ]).then((servers) => multiServer = HttpMultiServer(servers))); tearDown(() => multiServer.close()); @@ -41,12 +39,12 @@ }); test('serverHeader= sets the value for all servers', () { - multiServer.serverHeader = 'http_multi_server test'; - - multiServer.listen((request) { - request.response.write('got request'); - request.response.close(); - }); + multiServer + ..serverHeader = 'http_multi_server test' + ..listen((request) { + request.response.write('got request'); + request.response.close(); + }); expect( _get(subServer1).then((response) { @@ -71,12 +69,12 @@ }); test('autoCompress= sets the value for all servers', () { - multiServer.autoCompress = true; - - multiServer.listen((request) { - request.response.write('got request'); - request.response.close(); - }); + multiServer + ..autoCompress = true + ..listen((request) { + request.response.write('got request'); + request.response.close(); + }); expect( _get(subServer1).then((response) { @@ -130,8 +128,8 @@ test('connectionsInfo sums the values for all servers', () { var pendingRequests = 0; - var awaitingResponseCompleter = Completer(); - var sendResponseCompleter = Completer(); + final awaitingResponseCompleter = Completer(); + final sendResponseCompleter = Completer(); multiServer.listen((request) { sendResponseCompleter.future.then((_) { request.response.write('got request'); @@ -148,7 +146,7 @@ expect(_get(subServer2), completes); return awaitingResponseCompleter.future.then((_) { - var info = multiServer.connectionsInfo(); + final info = multiServer.connectionsInfo(); expect(info.total, equals(2)); expect(info.active, equals(2)); expect(info.idle, equals(0)); @@ -162,9 +160,7 @@ group('HttpMultiServer.loopback', () { late HttpServer server; - setUp(() { - return HttpMultiServer.loopback(0).then((s) => server = s); - }); + setUp(() => HttpMultiServer.loopback(0).then((s) => server = s)); tearDown(() => server.close()); @@ -269,12 +265,12 @@ }); if (await supportsIPv4) { - expect(client.read(Uri.https('127.0.0.1:${server.port}', '')), + expect(client.read(Uri.https('127.0.0.1:${server.port}')), completion(equals('got request'))); } if (await supportsIPv6) { - expect(client.read(Uri.https('[::1]:${server.port}', '')), + expect(client.read(Uri.https('[::1]:${server.port}')), completion(equals('got request'))); } }); @@ -287,12 +283,12 @@ }); if (await supportsIPv4) { - expect(client.read(Uri.https('127.0.0.1:${server.port}', '')), + expect(client.read(Uri.https('127.0.0.1:${server.port}')), completion(equals('got request'))); } if (await supportsIPv6) { - expect(client.read(Uri.https('[::1]:${server.port}', '')), + expect(client.read(Uri.https('[::1]:${server.port}')), completion(equals('got request'))); } }); @@ -306,11 +302,11 @@ request.response.close(); }); - expect(client.read(Uri.https('127.0.0.1:${server.port}', '')), + expect(client.read(Uri.https('127.0.0.1:${server.port}')), completion(equals('got request'))); if (await supportsIPv6) { - expect(client.read(Uri.https('[::1]:${server.port}', '')), + expect(client.read(Uri.https('[::1]:${server.port}')), throwsA(isA<SocketException>())); } });