diff --git a/lib/src/validator/dependency_override.dart b/lib/src/validator/dependency_override.dart
index ff2fb43498ed677d46cea0b797ac4ce316fa3ca0..36985ba847059323e421285dd4a24fa2efefa886 100644
--- a/lib/src/validator/dependency_override.dart
+++ b/lib/src/validator/dependency_override.dart
@@ -14,9 +14,12 @@ class DependencyOverrideValidator extends Validator {
     : super(entrypoint);
 
   Future validate() {
-    if (entrypoint.root.dependencyOverrides.isNotEmpty) {
+    var overridden =
+        entrypoint.root.dependencyOverrides.map((dep) => dep.name).toSet();
+    var dev = entrypoint.root.devDependencies.map((dep) => dep.name).toSet();
+    if (overridden.difference(dev).isNotEmpty) {
       errors.add(
-          'Your pubspec.yaml must not have a "dependency_overrides" field.\n'
+          'Your pubspec.yaml must not override non-dev dependencies.\n'
           'This ensures you test your package against the same versions of '
               'its dependencies\n'
           'that users will have when they use it.');
diff --git a/test/validator/dependency_override_test.dart b/test/validator/dependency_override_test.dart
index 3373bc73f39596dadc35c931e823c13a84f0e081..7d0f0aa9ba73ee0517059bfdad49620e0f33ed8e 100644
--- a/test/validator/dependency_override_test.dart
+++ b/test/validator/dependency_override_test.dart
@@ -5,6 +5,7 @@
 import 'package:pub/src/entrypoint.dart';
 import 'package:pub/src/validator.dart';
 import 'package:pub/src/validator/dependency_override.dart';
+import 'package:scheduled_test/scheduled_test.dart';
 
 import '../descriptor.dart' as d;
 import '../test_pub.dart';
@@ -14,16 +15,52 @@ Validator dependencyOverride(Entrypoint entrypoint) =>
     new DependencyOverrideValidator(entrypoint);
 
 main() {
-  integration('invalidates a package if it has dependency overrides', () {
+  integration('should consider a package valid if it has dev dependency '
+      'overrides', () {
     d.dir(appPath, [
       d.pubspec({
         "name": "myapp",
+        "dev_dependencies": {
+          "foo": "1.0.0"
+        },
         "dependency_overrides": {
           "foo": "<3.0.0"
         }
       })
     ]).create();
 
-    expectValidationError(dependencyOverride);
+    expectNoValidationError(dependencyOverride);
+  });
+
+  group('should consider a package invalid if', () {
+    integration('it has only non-dev dependency overrides', () {
+      d.dir(appPath, [
+        d.pubspec({
+          "name": "myapp",
+          "dependency_overrides": {
+            "foo": "<3.0.0"
+          }
+        })
+      ]).create();
+
+      expectValidationError(dependencyOverride);
+    });
+
+    integration('it has any non-dev dependency overrides', () {
+      d.dir(appPath, [
+        d.pubspec({
+          "name": "myapp",
+          "dev_dependencies": {
+            "foo": "1.0.0"
+          },
+          "dependency_overrides": {
+            "foo": "<3.0.0",
+            "bar": ">3.0.0",
+          }
+        })
+      ]).create();
+
+      expectValidationError(dependencyOverride);
+    });
   });
 }