diff --git a/test/pub_cache_test.dart b/test/pub_cache_test.dart
index 4301d6f..aa6951b 100644
--- a/test/pub_cache_test.dart
+++ b/test/pub_cache_test.dart
@@ -143,14 +143,25 @@
       expect(buf.toString(), isNotEmpty);
     });
 
+    test('everything parses', () {
+      StringBuffer buf = new StringBuffer();
+      PubCache cache = new PubCache();
+      var packageRefs = cache.getPackageRefs();
+      packageRefs.forEach((ref) {
+        expect(ref.version, isNotNull);
+        buf.writeln('${ref}');
+      });
+      expect(buf.toString(), isNotEmpty);
+    });
+
     test('list packages', () {
       StringBuffer buf = new StringBuffer();
       PubCache cache = new PubCache();
       var packages = cache.getCachedPackages();
       packages.forEach((pkg) {
-        List versions = cache.getAllPackageVersions(pkg);
+        List<PackageRef> versions = cache.getAllPackageVersions(pkg);
         buf.writeln(
-            '  ${pkg} [${versions.map((p) => p.version.toString()).join(', ')}]');
+            '${pkg} [${versions.map((p) => p.version.toString()).join(', ')}]');
       });
       expect(buf.toString(), isNotEmpty);
     });
diff --git a/tool/travis.sh b/tool/travis.sh
index 9cb7432..9c9c989 100755
--- a/tool/travis.sh
+++ b/tool/travis.sh
@@ -8,8 +8,9 @@
 set -e
 
 # Activate some packages for use while running tests.
-pub global activate dart_coveralls 0.1.10
 pub global activate dart_coveralls
+pub global activate path 1.3.0
+pub global activate path
 pub global activate --source git https://github.com/dart-lang/test.git
 pub global activate --source path .
 
