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 library pub_tests; | 5 library pub_tests; |
6 | 6 |
7 import 'package:scheduled_test/scheduled_test.dart'; | 7 import 'package:scheduled_test/scheduled_test.dart'; |
8 | 8 |
9 import '../../descriptor.dart' as d; | 9 import '../../descriptor.dart' as d; |
10 import '../../test_pub.dart'; | 10 import '../../test_pub.dart'; |
11 | 11 |
12 const _OUTDATED_BINSTUB = """ | 12 const _OUTDATED_BINSTUB = """ |
13 #!/usr/bin/env sh | 13 #!/usr/bin/env sh |
14 # This file was created by pub v0.1.2-3. | 14 # This file was created by pub v0.1.2-3. |
15 # Package: foo | 15 # Package: foo |
16 # Version: 1.0.0 | 16 # Version: 1.0.0 |
17 # Executable: foo-script | 17 # Executable: foo-script |
18 # Script: script | 18 # Script: script |
19 dart "/path/to/.pub-cache/global_packages/foo/bin/script.dart.snapshot" "\$@" | 19 dart "/path/to/.pub-cache/global_packages/foo/bin/script.dart.snapshot" "\$@" |
20 """; | 20 """; |
21 | 21 |
22 main() { | 22 main() { |
23 initConfig(); | 23 initConfig(); |
24 integration('updates an outdated binstub script', () { | 24 integration('updates an outdated binstub script', () { |
25 servePackages((builder) { | 25 servePackages((builder) { |
26 builder.serve("foo", "1.0.0", pubspec: { | 26 builder.serve("foo", "1.0.0", pubspec: { |
27 "executables": { | 27 "executables": { |
28 "foo-script": "script" | 28 "foo-script": "script" |
29 } | 29 } |
30 }, contents: [ | 30 }, |
31 d.dir("bin", [ | 31 contents: [ |
32 d.file("script.dart", "main(args) => print('ok \$args');") | 32 d.dir("bin", [d.file("script.dart", "main(args) => print('ok \$arg
s');")])]); |
33 ]) | |
34 ]); | |
35 }); | 33 }); |
36 | 34 |
37 schedulePub(args: ["global", "activate", "foo"]); | 35 schedulePub(args: ["global", "activate", "foo"]); |
38 | 36 |
39 d.dir(cachePath, [ | 37 d.dir( |
40 d.dir('bin', [ | 38 cachePath, |
41 d.file(binStubName('foo-script'), _OUTDATED_BINSTUB) | 39 [ |
42 ]) | 40 d.dir('bin', [d.file(binStubName('foo-script'), _OUTDATED_BINSTUB)])
]).create(); |
43 ]).create(); | |
44 | 41 |
45 // Repair them. | 42 // Repair them. |
46 schedulePub(args: ["cache", "repair"], | 43 schedulePub(args: ["cache", "repair"], output: ''' |
47 output: ''' | |
48 Downloading foo 1.0.0... | 44 Downloading foo 1.0.0... |
49 Reinstalled 1 package. | 45 Reinstalled 1 package. |
50 Reactivating foo 1.0.0... | 46 Reactivating foo 1.0.0... |
51 Precompiling executables... | 47 Precompiling executables... |
52 Loading source assets... | 48 Loading source assets... |
53 Precompiled foo:script. | 49 Precompiled foo:script. |
54 Installed executable foo-script. | 50 Installed executable foo-script. |
55 Reactivated 1 package.'''); | 51 Reactivated 1 package.'''); |
56 | 52 |
57 // The broken versions should have been replaced. | 53 // The broken versions should have been replaced. |
58 d.dir(cachePath, [ | 54 d.dir( |
59 d.dir('bin', [ | 55 cachePath, |
60 // 255 is the VM's exit code upon seeing an out-of-date snapshot. | 56 [d.dir('bin', [// 255 is the VM's exit code upon seeing an out-of-date s
napshot. |
61 d.matcherFile(binStubName('foo-script'), contains('255')) | 57 d.matcherFile( |
62 ]) | 58 binStubName('foo-script'), |
63 ]).validate(); | 59 contains('255'))])]).validate(); |
64 }); | 60 }); |
65 } | 61 } |
OLD | NEW |