Merge remote-tracking branch 'upstream/master'
diff --git a/test/all.dart b/test/all.dart
new file mode 100644
index 0000000..1c7afe6
--- /dev/null
+++ b/test/all.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2014, Google Inc. 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.
+
+library all_test;
+
+import 'benchmark_harness_test.dart' as benchmark_harness_test;
+import 'result_emitter_test.dart' as result_emitter_test;
+
+void main() {
+  benchmark_harness_test.main();
+  result_emitter_test.main();
+}
diff --git a/test/benchmark_harness_test.dart b/test/benchmark_harness_test.dart
new file mode 100644
index 0000000..ae06e7a
--- /dev/null
+++ b/test/benchmark_harness_test.dart
@@ -0,0 +1,29 @@
+// Copyright (c) 2014, Google Inc. 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.
+
+library benchmark_harness_test;
+
+import 'package:benchmark_harness/benchmark_harness.dart';
+import 'package:unittest/unittest.dart';
+
+void main() {
+  group('benchmark_harness', () {
+    test('run is called', () {
+      MockBenchmark benchmark = new MockBenchmark();
+      double micros = benchmark.measure();
+      expect(micros, isPositive);
+      expect(benchmark.runCount, isPositive);
+    });
+  });
+}
+
+class MockBenchmark extends BenchmarkBase {
+  int runCount = 0;
+
+  MockBenchmark() : super('mock benchmark');
+
+  void run() {
+    runCount++;
+  }
+}
diff --git a/test/drone.sh b/test/drone.sh
new file mode 100755
index 0000000..011d231
--- /dev/null
+++ b/test/drone.sh
@@ -0,0 +1,11 @@
+# get the packages
+pub install
+
+# analyze the code
+dartanalyzer example/Template.dart
+dartanalyzer lib/benchmark_harness.dart
+dartanalyzer test/all.dart
+dartanalyzer test/benchmark_harness_test.dart
+
+# run the tests
+dart test/all.dart
diff --git a/test/fixed-unittest.dart b/test/fixed-unittest.dart
index 2c1ed53..4f8951c 100644
--- a/test/fixed-unittest.dart
+++ b/test/fixed-unittest.dart
@@ -1,4 +1,4 @@
-library unittest;
+library fixed_unittest;
 
 import 'package:unittest/unittest.dart';
 
diff --git a/test/result_emitter_test.dart b/test/result_emitter_test.dart
index 4975835..d08d06f 100644
--- a/test/result_emitter_test.dart
+++ b/test/result_emitter_test.dart
@@ -1,9 +1,9 @@
-library remote;
+library result_emitter_test;
+
+import 'package:benchmark_harness/benchmark_harness.dart';
+import 'package:unittest/mock.dart';
 
 import 'fixed-unittest.dart';
-import 'package:unittest/mock.dart';
-import 'package:benchmark_harness/benchmark_harness.dart';
-
 
 void main() {
   benchmarkHarnessTest();
@@ -19,6 +19,9 @@
   void fakeEmit(String name, double value) {
     hasEmitted = true;
   }
+
+  // Added to quiet an analyzer warning.
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
 }
 
 // Create a new benchmark which has an emitter.
@@ -46,4 +49,4 @@
       emitter.getLogs(callsTo('emit')).verify(happenedOnce);
     });
   });
-}
\ No newline at end of file
+}