No metadata when CI=true (#2837)

diff --git a/lib/src/http.dart b/lib/src/http.dart
index 04bfa10..3645c3b 100644
--- a/lib/src/http.dart
+++ b/lib/src/http.dart
@@ -80,6 +80,11 @@
       if (request.url.origin != 'https://pub.dartlang.org') return false;
     }
 
+    if (Platform.environment.containsKey('CI') &&
+        Platform.environment['CI'] != 'false') {
+      return false;
+    }
+
     return true;
   }
 
diff --git a/test/hosted/metadata_test.dart b/test/hosted/metadata_test.dart
index 342bd11..7554a0f 100644
--- a/test/hosted/metadata_test.dart
+++ b/test/hosted/metadata_test.dart
@@ -95,5 +95,19 @@
 
       await pubCommand(command, silent: isNot(contains('X-Pub-')));
     });
+
+    test("doesn't send metadata headers when CI=true", () async {
+      await servePackages((builder) {
+        builder.serve('foo', '1.0.0');
+      });
+
+      await d.appDir({'foo': '1.0.0'}).create();
+
+      await pubCommand(command,
+          silent: isNot(contains('X-Pub-')),
+          environment: {
+            'CI': 'true',
+          });
+    });
   });
 }
diff --git a/test/test_pub.dart b/test/test_pub.dart
index dfef189..beff0ce 100644
--- a/test/test_pub.dart
+++ b/test/test_pub.dart
@@ -374,6 +374,7 @@
 /// Gets the environment variables used to run pub in a test context.
 Map<String, String> getPubTestEnvironment([String tokenEndpoint]) {
   var environment = {
+    'CI': 'false', // unless explicitly given tests don't run pub in CI mode
     '_PUB_TESTING': 'true',
     'PUB_CACHE': _pathInSandbox(cachePath),
     'PUB_ENVIRONMENT': 'test-environment',