diff --git a/lib/pub_cache.dart b/lib/pub_cache.dart
index 26ab298..8dd77f6 100644
--- a/lib/pub_cache.dart
+++ b/lib/pub_cache.dart
@@ -96,8 +96,11 @@
 
     Directory globalPackagesDir = _getSubDir(location, 'global_packages');
     if (globalPackagesDir.existsSync()) {
-      _applications = globalPackagesDir.listSync().map(
-          (dir) => new Application._(this, dir)).toList();
+      _applications = globalPackagesDir
+          .listSync()
+          .where((item) => item is Directory)
+          .map((dir) => new Application._(this, dir))
+          .toList();
     }
 
     // Scan hosted packages - just pub.dartlang.org for now.
diff --git a/test/pub_cache_test.dart b/test/pub_cache_test.dart
index 1fb219e..d63a5c1 100644
--- a/test/pub_cache_test.dart
+++ b/test/pub_cache_test.dart
@@ -16,12 +16,39 @@
   final String cacheDirName = Platform.isWindows ? 'Cache' : 'pub-cache';
 
   group('PubCache', () {
+    tearDown(() {
+      Directory cacheDir = PubCache.getSystemCacheLocation();
+      var globalDir = new Directory(path.join(cacheDir.path, "global_packages"));
+      var file = new File(path.join(globalDir.path, "nonsense"));
+      if (file.existsSync()) {
+        file.deleteSync();
+      }
+    });
+
     test('getSystemCacheLocation', () {
       Directory cacheDir = PubCache.getSystemCacheLocation();
       expect(cacheDir, isNotNull);
       expect(path.basename(cacheDir.path), contains(cacheDirName));
     });
 
+    test('Create PubCache when non-directories are in global_packages', () {
+      // Get cache in its current state
+      var cache = new PubCache();
+      var currentGlobalApps = cache.getGlobalApplications();
+
+      // Put a file in global_packages
+      Directory cacheDir = PubCache.getSystemCacheLocation();
+      var globalDir = new Directory(path.join(cacheDir.path, "global_packages"));
+      var file = new File(path.join(globalDir.path, "nonsense"));
+      file.writeAsStringSync("pub_cache test suite");
+
+      // Ensure that this file is not reflected in cache
+      cache = new PubCache();
+      var newGlobalApps = cache.getGlobalApplications();
+
+      expect(currentGlobalApps.length, newGlobalApps.length);
+    });
+
     test('PubCache', () {
       PubCache cache = new PubCache();
       expect(cache, isNotNull);
