OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'package:scheduled_test/scheduled_stream.dart'; | 5 import 'package:pub/src/exit_codes.dart' as exit_codes; |
6 import 'package:scheduled_test/scheduled_test.dart'; | 6 import 'package:scheduled_test/scheduled_test.dart'; |
7 | 7 |
8 import '../../descriptor.dart' as d; | 8 import '../../descriptor.dart' as d; |
9 import '../../test_pub.dart'; | 9 import '../../test_pub.dart'; |
10 | 10 |
11 main() { | 11 main() { |
12 integration('recompiles a script if the SDK version is out-of-date', () { | 12 integration("fails if the current SDK doesn't match the constraint", () { |
13 servePackages((builder) { | 13 servePackages((builder) { |
14 builder.serve("foo", "1.0.0", contents: [ | 14 builder.serve("foo", "1.0.0", contents: [ |
15 d.dir("bin", [ | 15 d.dir("bin", [ |
16 d.file("script.dart", "main(args) => print('ok');") | 16 d.file("script.dart", "main(args) => print('ok');") |
17 ]) | 17 ]) |
18 ]); | 18 ]); |
19 }); | 19 }); |
20 | 20 |
21 schedulePub(args: ["global", "activate", "foo"]); | 21 schedulePub(args: ["global", "activate", "foo"]); |
22 | 22 |
| 23 d.hostedCache([ |
| 24 d.dir("foo-1.0.0", [ |
| 25 d.libPubspec("foo", "1.0.0", sdk: "0.5.6") |
| 26 ]) |
| 27 ]).create(); |
| 28 |
| 29 // Make the snapshot out-of-date, too, so that we load the pubspec with the |
| 30 // SDK constraint in the first place. In practice, the VM snapshot |
| 31 // invalidation logic is based on the version anyway, so this is a safe |
| 32 // assumption. |
23 d.dir(cachePath, [ | 33 d.dir(cachePath, [ |
24 d.dir('global_packages', [ | 34 d.dir('global_packages', [ |
25 d.dir('foo', [ | 35 d.dir('foo', [ |
26 d.dir('bin', [d.outOfDateSnapshot('script.dart.snapshot')]) | 36 d.dir('bin', [d.outOfDateSnapshot('script.dart.snapshot')]) |
27 ]) | 37 ]) |
28 ]) | 38 ]) |
29 ]).create(); | 39 ]).create(); |
30 | 40 |
31 var pub = pubRun(global: true, args: ["foo:script"]); | 41 schedulePub(args: ["global", "run", "foo:script"], |
32 // In the real world this would just print "hello!", but since we collect | 42 error: contains("foo 1.0.0 doesn't support Dart 0.1.2+3."), |
33 // all output we see the precompilation messages as well. | 43 exitCode: exit_codes.DATA); |
34 pub.stdout.expect("Precompiling executables..."); | |
35 pub.stdout.expect(consumeThrough("ok")); | |
36 pub.shouldExit(); | |
37 | |
38 d.dir(cachePath, [ | |
39 d.dir('global_packages', [ | |
40 d.dir('foo', [ | |
41 d.dir('bin', [ | |
42 d.matcherFile('script.dart.snapshot', contains('ok')) | |
43 ]) | |
44 ]) | |
45 ]) | |
46 ]).validate(); | |
47 }); | 44 }); |
48 } | 45 } |
OLD | NEW |