| Index: test/must_pub_get_test.dart | 
| diff --git a/test/must_pub_get_test.dart b/test/must_pub_get_test.dart | 
| index e1f71eb71351151126fe91a78ac435e41c4279b9..7703e5a6caa28496e6c27511e9990d3293fc6a4a 100644 | 
| --- a/test/must_pub_get_test.dart | 
| +++ b/test/must_pub_get_test.dart | 
| @@ -286,6 +286,40 @@ foo:http://example.com/ | 
| "SDK constraints. Please run \"pub get\" again."); | 
| }); | 
|  | 
| +    integration("the lock file's Flutter SDK constraint doesn't match the " | 
| +        "current Flutter SDK", () { | 
| +      // Avoid using a path dependency because it triggers the full validation | 
| +      // logic. We want to be sure SDK-validation works without that logic. | 
| +      globalPackageServer.add((builder) { | 
| +        builder.serve("foo", "3.0.0", pubspec: { | 
| +          "environment": {"flutter": ">=1.0.0 <2.0.0"} | 
| +        }); | 
| +      }); | 
| + | 
| +      d.dir('flutter', [ | 
| +        d.file('version', '1.2.3') | 
| +      ]).create(); | 
| + | 
| +      d.dir(appPath, [ | 
| +        d.appPubspec({"foo": "3.0.0"}) | 
| +      ]).create(); | 
| + | 
| +      pubGet(environment: {"FLUTTER_ROOT": p.join(sandboxDir, 'flutter')}); | 
| + | 
| +      d.dir('flutter', [ | 
| +        d.file('version', '2.4.6') | 
| +      ]).create(); | 
| + | 
| +      // Run pub manually here because otherwise we don't have access to | 
| +      // sandboxDir. | 
| +      schedulePub( | 
| +          args: ["run", "script"], | 
| +          environment: {"FLUTTER_ROOT": p.join(sandboxDir, 'flutter')}, | 
| +          error: "Flutter 2.4.6 is incompatible with your dependencies' SDK " | 
| +                   "constraints. Please run \"pub get\" again.", | 
| +          exitCode: exit_codes.DATA); | 
| +    }); | 
| + | 
| group("a path dependency's dependency doesn't match the lockfile", () { | 
| setUp(() { | 
| d.dir("bar", [ | 
| @@ -394,11 +428,43 @@ foo:http://example.com/ | 
|  | 
| _runsSuccessfully(); | 
| }); | 
| + | 
| +    integration("the lock file has a Flutter SDK but Flutter is unavailable", | 
| +        () { | 
| +      // Avoid using a path dependency because it triggers the full validation | 
| +      // logic. We want to be sure SDK-validation works without that logic. | 
| +      globalPackageServer.add((builder) { | 
| +        builder.serve("foo", "3.0.0", pubspec: { | 
| +          "environment": {"flutter": ">=1.0.0 <2.0.0"} | 
| +        }); | 
| +      }); | 
| + | 
| +      d.dir('flutter', [ | 
| +        d.file('version', '1.2.3') | 
| +      ]).create(); | 
| + | 
| +      d.dir(appPath, [ | 
| +        d.appPubspec({"foo": "3.0.0"}) | 
| +      ]).create(); | 
| + | 
| +      pubGet(environment: {"FLUTTER_ROOT": p.join(sandboxDir, 'flutter')}); | 
| + | 
| +      d.dir('flutter', [ | 
| +        d.file('version', '2.4.6') | 
| +      ]).create(); | 
| + | 
| +      // Run pub manually here because otherwise we don't have access to | 
| +      // sandboxDir. | 
| +      schedulePub(args: ["run", "bin/script.dart"]); | 
| +    }); | 
| }); | 
| } | 
|  | 
| /// Runs every command that care about the world being up-to-date, and asserts | 
| /// that it prints [message] as part of its error. | 
| +/// | 
| +/// If [environment] is passed, it's called to produce a map that's merged into | 
| +/// the OS environment for the pub commands. | 
| void _requiresPubGet(String message) { | 
| for (var command in ["build", "serve", "run", "deps"]) { | 
| integration("for pub $command", () { | 
|  |