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 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:io'; | 6 import 'dart:io'; |
7 | 7 |
8 import 'package:path/path.dart' as p; | 8 import 'package:path/path.dart' as p; |
9 | 9 |
10 import '../../test_pub.dart'; | 10 import '../../test_pub.dart'; |
11 | 11 |
12 /// The buildbots do not have the Dart SDK (containing "dart" and "pub") on | 12 /// The buildbots do not have the Dart SDK (containing "dart" and "pub") on |
13 /// their PATH, so we need to spawn the binstub process with a PATH that | 13 /// their PATH, so we need to spawn the binstub process with a PATH that |
14 /// explicitly includes it. | 14 /// explicitly includes it. |
15 Future<Map> getEnvironment() { | 15 Future<Map> getEnvironment() { |
16 final completer0 = new Completer(); | 16 final completer0 = new Completer(); |
17 scheduleMicrotask(() { | 17 scheduleMicrotask(() { |
18 try { | 18 try { |
19 var binDir = p.dirname(Platform.executable); | 19 var binDir = p.dirname(Platform.executable); |
20 join0(x0) { | 20 join0(x0) { |
21 var separator = x0; | 21 var separator = x0; |
22 var path = "${Platform.environment["PATH"]}${separator}${binDir}"; | 22 var path = "${Platform.environment["PATH"]}${separator}${binDir}"; |
23 getPubTestEnvironment().then((x1) { | 23 new Future.value(getPubTestEnvironment()).then((x1) { |
24 try { | 24 try { |
25 var environment = x1; | 25 var environment = x1; |
26 environment["PATH"] = path; | 26 environment["PATH"] = path; |
27 completer0.complete(environment); | 27 completer0.complete(environment); |
28 } catch (e0, s0) { | 28 } catch (e0, s0) { |
29 completer0.completeError(e0, s0); | 29 completer0.completeError(e0, s0); |
30 } | 30 } |
31 }, onError: completer0.completeError); | 31 }, onError: completer0.completeError); |
32 } | 32 } |
33 if (Platform.operatingSystem == "windows") { | 33 if (Platform.operatingSystem == "windows") { |
34 join0(";"); | 34 join0(";"); |
35 } else { | 35 } else { |
36 join0(":"); | 36 join0(":"); |
37 } | 37 } |
38 } catch (e, s) { | 38 } catch (e, s) { |
39 completer0.completeError(e, s); | 39 completer0.completeError(e, s); |
40 } | 40 } |
41 }); | 41 }); |
42 return completer0.future; | 42 return completer0.future; |
43 } | 43 } |
OLD | NEW |