Skip to content

Commit 759a50c

Browse files
authored
Enable lints, test on oldest supported SDK (flutter#8)
1 parent ce0b174 commit 759a50c

8 files changed

+112
-41
lines changed

.travis.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
language: dart
2-
sudo: false
2+
33
dart:
4+
- 2.0.0
45
- dev
5-
- stable
6-
- 1.22.1
76

87
dart_task:
98
- test
10-
- dartfmt
11-
- dartanalyzer
9+
- dartanalyzer: --fatal-infos --fatal-warnings .
10+
11+
matrix:
12+
include:
13+
# Only validate formatting using the dev release
14+
- dart: dev
15+
dart_task: dartfmt
1216

1317
# Only building master means that we don't run two builds for each pull request.
1418
branches:

analysis_options.yaml

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,99 @@
1+
include: package:pedantic/analysis_options.yaml
2+
analyzer:
3+
strong-mode:
4+
implicit-casts: false
5+
errors:
6+
dead_code: error
7+
override_on_non_overriding_method: error
8+
unused_element: error
9+
unused_import: error
10+
unused_local_variable: error
111
linter:
212
rules:
13+
- always_declare_return_types
14+
- annotate_overrides
15+
- avoid_bool_literals_in_conditional_expressions
16+
- avoid_classes_with_only_static_members
317
- avoid_empty_else
18+
- avoid_function_literals_in_foreach_calls
419
- avoid_init_to_null
520
- avoid_null_checks_in_equality_operators
21+
- avoid_relative_lib_imports
22+
- avoid_renaming_method_parameters
23+
- avoid_return_types_on_setters
24+
- avoid_returning_null
25+
- avoid_returning_null_for_future
26+
- avoid_returning_null_for_void
27+
- avoid_returning_this
28+
- avoid_shadowing_type_parameters
29+
- avoid_single_cascade_in_expression_statements
30+
- avoid_types_as_parameter_names
31+
- avoid_unused_constructor_parameters
632
- await_only_futures
733
- camel_case_types
834
- cancel_subscriptions
35+
- cascade_invocations
36+
- comment_references
937
- constant_identifier_names
1038
- control_flow_in_finally
1139
- directives_ordering
1240
- empty_catches
1341
- empty_constructor_bodies
1442
- empty_statements
43+
- file_names
1544
- hash_and_equals
1645
- implementation_imports
46+
- invariant_booleans
1747
- iterable_contains_unrelated_type
48+
- join_return_with_assignment
1849
- library_names
1950
- library_prefixes
2051
- list_remove_unrelated_type
52+
- literal_only_boolean_expressions
53+
- no_adjacent_strings_in_list
54+
- no_duplicate_case_values
2155
- non_constant_identifier_names
56+
- null_closures
57+
- omit_local_variable_types
58+
- only_throw_errors
2259
- overridden_fields
2360
- package_api_docs
2461
- package_names
2562
- package_prefixed_library_names
63+
- prefer_adjacent_string_concatenation
64+
- prefer_collection_literals
65+
- prefer_conditional_assignment
66+
- prefer_const_constructors
67+
- prefer_contains
68+
- prefer_equal_for_default_values
2669
- prefer_final_fields
70+
#- prefer_final_locals
71+
- prefer_generic_function_type_aliases
72+
- prefer_initializing_formals
73+
- prefer_interpolation_to_compose_strings
74+
- prefer_is_empty
2775
- prefer_is_not_empty
76+
- prefer_null_aware_operators
77+
#- prefer_single_quotes
78+
- prefer_typing_uninitialized_variables
79+
- recursive_getters
2880
- slash_for_doc_comments
29-
- super_goes_last
3081
- test_types_in_equals
3182
- throw_in_finally
3283
- type_init_formals
84+
- unawaited_futures
85+
- unnecessary_await_in_return
3386
- unnecessary_brace_in_string_interps
87+
- unnecessary_const
88+
- unnecessary_getters_setters
89+
- unnecessary_lambdas
90+
- unnecessary_new
91+
- unnecessary_null_aware_assignments
92+
- unnecessary_parenthesis
93+
- unnecessary_statements
94+
- unnecessary_this
3495
- unrelated_type_equality_checks
96+
- use_function_type_syntax_for_parameters
97+
- use_rethrow_when_possible
3598
- valid_regexps
99+
- void_checks

lib/shelf_packages_handler.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ import 'src/package_config_handler.dart';
2222
/// This can only serve assets from `file:` URIs.
2323
Handler packagesHandler({PackageResolver resolver}) {
2424
resolver ??= PackageResolver.current;
25-
return new AsyncHandler(resolver.packageRoot.then((packageRoot) {
25+
return AsyncHandler(resolver.packageRoot.then((packageRoot) {
2626
if (packageRoot != null) {
2727
return createStaticHandler(p.fromUri(packageRoot),
2828
serveFilesOutsidePath: true);
2929
} else {
30-
return new PackageConfigHandler(resolver);
30+
return PackageConfigHandler(resolver);
3131
}
3232
}));
3333
}
@@ -41,4 +41,4 @@ Handler packagesHandler({PackageResolver resolver}) {
4141
/// This is useful for ensuring that `package:` imports work for all entrypoints
4242
/// in Dartium.
4343
Handler packagesDirHandler({PackageResolver resolver}) =>
44-
new DirHandler("packages", packagesHandler(resolver: resolver));
44+
DirHandler("packages", packagesHandler(resolver: resolver));

lib/src/async_handler.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,16 @@ import 'package:shelf/shelf.dart';
1010
class AsyncHandler {
1111
final ResultFuture<Handler> _future;
1212

13-
AsyncHandler(Future<Handler> future) : _future = new ResultFuture(future);
13+
AsyncHandler(Future<Handler> future) : _future = ResultFuture(future);
1414

1515
FutureOr<Response> call(Request request) {
1616
if (_future.result == null) {
1717
return _future.then((handler) => handler(request));
1818
}
1919

20-
if (_future.result.isError)
21-
return new Future.error(_future.result.asError.error);
20+
if (_future.result.isError) {
21+
return Future.error(_future.result.asError.error);
22+
}
2223

2324
return _future.result.asValue.value(request);
2425
}

lib/src/dir_handler.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ import 'dart:async';
99
import 'package:path/path.dart' as p;
1010
import 'package:shelf/shelf.dart';
1111

12+
import 'package_config_handler.dart';
13+
1214
/// A utility handler that mounts a sub-handler beneath a directory name,
1315
/// wherever that directory name appears in a URL.
1416
///
15-
/// In practice, this is used to mount a [PackagesHandler] underneath
17+
/// In practice, this is used to mount a [PackageConfigHandler] underneath
1618
/// `packages/` directories.
1719
class DirHandler {
1820
/// The directory name to look for.
@@ -31,6 +33,6 @@ class DirHandler {
3133
return _inner(request.change(path: p.url.joinAll(segments.take(i + 1))));
3234
}
3335

34-
return new Response.notFound("Not found.");
36+
return Response.notFound("Not found.");
3537
}
3638
}

lib/src/package_config_handler.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ import 'async_handler.dart';
1616
class PackageConfigHandler {
1717
/// The static handlers for serving entries in the package config, indexed by
1818
/// name.
19-
final _packageHandlers = new Map<String, Handler>();
19+
final _packageHandlers = <String, Handler>{};
2020

2121
/// The information specifying how to do package resolution.
22-
PackageResolver _resolver;
22+
final PackageResolver _resolver;
2323

2424
PackageConfigHandler(this._resolver);
2525

@@ -29,12 +29,12 @@ class PackageConfigHandler {
2929
return _handlerFor(segments.first)(request.change(path: segments.first));
3030
}
3131

32-
/// Creates a handler for [package] based on the package map in [resolver].
32+
/// Creates a handler for [package] based on the package map in [_resolver].
3333
Handler _handlerFor(String package) {
3434
return _packageHandlers.putIfAbsent(package, () {
35-
return new AsyncHandler(_resolver.urlFor(package).then((url) {
35+
return AsyncHandler(_resolver.urlFor(package).then((url) {
3636
var handler = url == null
37-
? (_) => new Response.notFound("Package $package not found.")
37+
? (_) => Response.notFound("Package $package not found.")
3838
: createStaticHandler(p.fromUri(url), serveFilesOutsidePath: true);
3939

4040
return handler;

pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
name: shelf_packages_handler
2-
version: 1.0.4
2+
version: 1.0.5-dev
33

44
description: A shelf handler for serving a `packages/` directory.
55
author: Dart Team <[email protected]>
66
homepage: https://github.com/dart-lang/shelf_packages_handler
77

88
environment:
9-
sdk: '>=1.22.0 <3.0.0'
9+
sdk: '>=2.0.0 <3.0.0'
1010

1111
dependencies:
1212
async: '>=1.1.0 <3.0.0'
@@ -16,4 +16,4 @@ dependencies:
1616
package_resolver: ^1.0.0
1717

1818
dev_dependencies:
19-
test: '>=0.12.0 <2.0.0'
19+
test: '>=1.0.0 <2.0.0'

test/packages_handler_test.dart

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,24 @@ import 'package:shelf_packages_handler/shelf_packages_handler.dart';
1111
import 'package:test/test.dart';
1212

1313
void main() {
14-
var dir;
14+
String dir;
1515
setUp(() {
1616
dir =
1717
Directory.systemTemp.createTempSync("shelf_packages_handler_test").path;
18-
new Directory(dir).createSync();
19-
new Directory("$dir/foo").createSync();
20-
new File("$dir/foo/foo.dart")
18+
Directory(dir).createSync();
19+
Directory("$dir/foo").createSync();
20+
File("$dir/foo/foo.dart")
2121
.writeAsStringSync("void main() => print('in foo');");
2222
});
2323

2424
tearDown(() {
25-
new Directory(dir).deleteSync(recursive: true);
25+
Directory(dir).deleteSync(recursive: true);
2626
});
2727

2828
group("packagesHandler", () {
2929
test("defaults to the current method of package resolution", () async {
3030
var handler = packagesHandler();
31-
var request = new Request(
31+
var request = Request(
3232
"GET",
3333
Uri.parse("http://example.com/shelf_packages_handler/"
3434
"shelf_packages_handler.dart"));
@@ -39,13 +39,13 @@ void main() {
3939
});
4040

4141
group("with a package root", () {
42-
var resolver;
43-
setUp(() => resolver = new PackageResolver.root(p.toUri(dir)));
42+
PackageResolver resolver;
43+
setUp(() => resolver = PackageResolver.root(p.toUri(dir)));
4444

4545
test("looks up a real file", () async {
4646
var handler = packagesHandler(resolver: resolver);
4747
var request =
48-
new Request("GET", Uri.parse("http://example.com/foo/foo.dart"));
48+
Request("GET", Uri.parse("http://example.com/foo/foo.dart"));
4949
var response = await handler(request);
5050
expect(response.statusCode, equals(200));
5151
expect(await response.readAsString(), contains("in foo"));
@@ -54,22 +54,22 @@ void main() {
5454
test("404s for a nonexistent file", () async {
5555
var handler = packagesHandler(resolver: resolver);
5656
var request =
57-
new Request("GET", Uri.parse("http://example.com/foo/bar.dart"));
57+
Request("GET", Uri.parse("http://example.com/foo/bar.dart"));
5858
var response = await handler(request);
5959
expect(response.statusCode, equals(404));
6060
});
6161
});
6262

6363
group("with a package config", () {
64-
var resolver;
64+
PackageResolver resolver;
6565
setUp(() {
66-
resolver = new PackageResolver.config({"foo": p.toUri("$dir/foo")});
66+
resolver = PackageResolver.config({"foo": p.toUri("$dir/foo")});
6767
});
6868

6969
test("looks up a real file", () async {
7070
var handler = packagesHandler(resolver: resolver);
7171
var request =
72-
new Request("GET", Uri.parse("http://example.com/foo/foo.dart"));
72+
Request("GET", Uri.parse("http://example.com/foo/foo.dart"));
7373
var response = await handler(request);
7474
expect(response.statusCode, equals(200));
7575
expect(await response.readAsString(), contains("in foo"));
@@ -78,15 +78,15 @@ void main() {
7878
test("404s for a nonexistent package", () async {
7979
var handler = packagesHandler(resolver: resolver);
8080
var request =
81-
new Request("GET", Uri.parse("http://example.com/bar/foo.dart"));
81+
Request("GET", Uri.parse("http://example.com/bar/foo.dart"));
8282
var response = await handler(request);
8383
expect(response.statusCode, equals(404));
8484
});
8585

8686
test("404s for a nonexistent file", () async {
8787
var handler = packagesHandler(resolver: resolver);
8888
var request =
89-
new Request("GET", Uri.parse("http://example.com/foo/bar.dart"));
89+
Request("GET", Uri.parse("http://example.com/foo/bar.dart"));
9090
var response = await handler(request);
9191
expect(response.statusCode, equals(404));
9292
});
@@ -96,7 +96,7 @@ void main() {
9696
group("packagesDirHandler", () {
9797
test("supports a directory at the root of the URL", () async {
9898
var handler = packagesDirHandler();
99-
var request = new Request(
99+
var request = Request(
100100
"GET",
101101
Uri.parse("http://example.com/packages/shelf_packages_handler/"
102102
"shelf_packages_handler.dart"));
@@ -108,7 +108,7 @@ void main() {
108108

109109
test("supports a directory deep in the URL", () async {
110110
var handler = packagesDirHandler();
111-
var request = new Request(
111+
var request = Request(
112112
"GET",
113113
Uri.parse("http://example.com/foo/bar/very/deep/packages/"
114114
"shelf_packages_handler/shelf_packages_handler.dart"));
@@ -120,7 +120,7 @@ void main() {
120120

121121
test("404s for a URL without a packages directory", () async {
122122
var handler = packagesDirHandler();
123-
var request = new Request(
123+
var request = Request(
124124
"GET",
125125
Uri.parse("http://example.com/shelf_packages_handler/"
126126
"shelf_packages_handler.dart"));
@@ -130,7 +130,7 @@ void main() {
130130

131131
test("404s for a non-existent file within a packages directory", () async {
132132
var handler = packagesDirHandler();
133-
var request = new Request(
133+
var request = Request(
134134
"GET",
135135
Uri.parse("http://example.com/packages/shelf_packages_handler/"
136136
"non_existent.dart"));

0 commit comments

Comments
 (0)