add travis and code coverage settings

BUG=
R=nweiz@google.com

Review URL: https://codereview.chromium.org//966353002
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..0808dd6
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,8 @@
+language: dart
+sudo: false
+dart:
+  - stable
+  - dev
+before_install:
+  - pub global activate dart_coveralls
+script: ./tool/travis.sh
diff --git a/README.md b/README.md
index b138204..b0fcbf6 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,8 @@
 ## Web Server Middleware for Dart
 
+[![Build Status](https://travis-ci.org/dart-lang/shelf.svg?branch=master)](https://travis-ci.org/dart-lang/shelf)
+[![Coverage Status](https://coveralls.io/repos/dart-lang/shelf/badge.svg?branch=master)](https://coveralls.io/r/dart-lang/shelf?branch=travis_coveralls)
+
 ## Introduction
 
 **Shelf** makes it easy to create and compose **web servers** and **parts of web
diff --git a/pubspec.yaml b/pubspec.yaml
index db43786..2dc368a 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: shelf
-version: 0.5.7
+version: 0.5.8-dev
 author: Dart Team <misc@dartlang.org>
 description: Web Server Middleware for Dart
 homepage: https://github.com/dart-lang/shelf
diff --git a/test/test_all.dart b/test/test_all.dart
new file mode 100644
index 0000000..5a21edf
--- /dev/null
+++ b/test/test_all.dart
@@ -0,0 +1,25 @@
+import 'package:unittest/unittest.dart';
+
+import 'cascade_test.dart' as cascade;
+import 'create_middleware_test.dart' as create_middleware;
+import 'hijack_test.dart' as hijack;
+import 'log_middleware_test.dart' as log_middleware;
+import 'message_change_test.dart' as message_change;
+import 'message_test.dart' as message;
+import 'pipeline_test.dart' as pipeline;
+import 'request_test.dart' as request;
+import 'response_test.dart' as response;
+import 'shelf_io_test.dart' as shelf_io;
+
+void main() {
+  group('cascade', cascade.main);
+  group('create_middleware', create_middleware.main);
+  group('hijack', hijack.main);
+  group('log_middleware', log_middleware.main);
+  group('message_change', message_change.main);
+  group('message', message.main);
+  group('pipeline', pipeline.main);
+  group('request', request.main);
+  group('response', response.main);
+  group('shelf_io', shelf_io.main);
+}
diff --git a/tool/travis.sh b/tool/travis.sh
new file mode 100755
index 0000000..f7ac953
--- /dev/null
+++ b/tool/travis.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+# Fast fail the script on failures.   
+set -e
+
+dart --checked test/test_all.dart
+
+# Install dart_coveralls; gather and send coverage data.
+if [ "$COVERALLS_TOKEN" ] && [ "$TRAVIS_DART_VERSION" = "stable" ]; then
+  pub global run dart_coveralls report \
+    --token $COVERALLS_TOKEN \
+    --retry 2 \
+    --exclude-test-files \
+    test/test_all.dart
+fi