diff --git a/test/packages_handler_test.dart b/test/packages_handler_test.dart
index dce58a6..1ca031f 100644
--- a/test/packages_handler_test.dart
+++ b/test/packages_handler_test.dart
@@ -13,9 +13,8 @@
 void main() {
   var dir;
   setUp(() {
-    dir = Directory.systemTemp
-        .createTempSync("shelf_packages_handler_test")
-        .path;
+    dir =
+        Directory.systemTemp.createTempSync("shelf_packages_handler_test").path;
     new Directory(dir).createSync();
     new Directory("$dir/foo").createSync();
     new File("$dir/foo/foo.dart")
@@ -31,13 +30,12 @@
       var handler = packagesHandler();
       var request = new Request(
           "GET",
-          Uri.parse(
-              "http://example.com/shelf_packages_handler/"
+          Uri.parse("http://example.com/shelf_packages_handler/"
               "shelf_packages_handler.dart"));
       var response = await handler(request);
       expect(response.statusCode, equals(200));
-      expect(await response.readAsString(),
-          contains("Handler packagesHandler"));
+      expect(
+          await response.readAsString(), contains("Handler packagesHandler"));
     });
 
     group("with a package root", () {
@@ -46,8 +44,8 @@
 
       test("looks up a real file", () async {
         var handler = packagesHandler(resolver: resolver);
-        var request = new Request(
-            "GET", Uri.parse("http://example.com/foo/foo.dart"));
+        var request =
+            new Request("GET", Uri.parse("http://example.com/foo/foo.dart"));
         var response = await handler(request);
         expect(response.statusCode, equals(200));
         expect(await response.readAsString(), contains("in foo"));
@@ -55,8 +53,8 @@
 
       test("404s for a nonexistent file", () async {
         var handler = packagesHandler(resolver: resolver);
-        var request = new Request(
-            "GET", Uri.parse("http://example.com/foo/bar.dart"));
+        var request =
+            new Request("GET", Uri.parse("http://example.com/foo/bar.dart"));
         var response = await handler(request);
         expect(response.statusCode, equals(404));
       });
@@ -70,8 +68,8 @@
 
       test("looks up a real file", () async {
         var handler = packagesHandler(resolver: resolver);
-        var request = new Request(
-            "GET", Uri.parse("http://example.com/foo/foo.dart"));
+        var request =
+            new Request("GET", Uri.parse("http://example.com/foo/foo.dart"));
         var response = await handler(request);
         expect(response.statusCode, equals(200));
         expect(await response.readAsString(), contains("in foo"));
@@ -79,16 +77,16 @@
 
       test("404s for a nonexistent package", () async {
         var handler = packagesHandler(resolver: resolver);
-        var request = new Request(
-            "GET", Uri.parse("http://example.com/bar/foo.dart"));
+        var request =
+            new Request("GET", Uri.parse("http://example.com/bar/foo.dart"));
         var response = await handler(request);
         expect(response.statusCode, equals(404));
       });
 
       test("404s for a nonexistent file", () async {
         var handler = packagesHandler(resolver: resolver);
-        var request = new Request(
-            "GET", Uri.parse("http://example.com/foo/bar.dart"));
+        var request =
+            new Request("GET", Uri.parse("http://example.com/foo/bar.dart"));
         var response = await handler(request);
         expect(response.statusCode, equals(404));
       });
@@ -100,34 +98,31 @@
       var handler = packagesDirHandler();
       var request = new Request(
           "GET",
-          Uri.parse(
-              "http://example.com/packages/shelf_packages_handler/"
+          Uri.parse("http://example.com/packages/shelf_packages_handler/"
               "shelf_packages_handler.dart"));
       var response = await handler(request);
       expect(response.statusCode, equals(200));
-      expect(await response.readAsString(),
-          contains("Handler packagesHandler"));
+      expect(
+          await response.readAsString(), contains("Handler packagesHandler"));
     });
 
     test("supports a directory deep in the URL", () async {
       var handler = packagesDirHandler();
       var request = new Request(
           "GET",
-          Uri.parse(
-              "http://example.com/foo/bar/very/deep/packages/"
+          Uri.parse("http://example.com/foo/bar/very/deep/packages/"
               "shelf_packages_handler/shelf_packages_handler.dart"));
       var response = await handler(request);
       expect(response.statusCode, equals(200));
-      expect(await response.readAsString(),
-          contains("Handler packagesHandler"));
+      expect(
+          await response.readAsString(), contains("Handler packagesHandler"));
     });
 
     test("404s for a URL without a packages directory", () async {
       var handler = packagesDirHandler();
       var request = new Request(
           "GET",
-          Uri.parse(
-              "http://example.com/shelf_packages_handler/"
+          Uri.parse("http://example.com/shelf_packages_handler/"
               "shelf_packages_handler.dart"));
       var response = await handler(request);
       expect(response.statusCode, equals(404));
@@ -137,8 +132,7 @@
       var handler = packagesDirHandler();
       var request = new Request(
           "GET",
-          Uri.parse(
-              "http://example.com/packages/shelf_packages_handler/"
+          Uri.parse("http://example.com/packages/shelf_packages_handler/"
               "non_existent.dart"));
       var response = await handler(request);
       expect(response.statusCode, equals(404));
