OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 unittest.util.io; | 5 library unittest.util.io; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:io'; | 8 import 'dart:io'; |
9 | 9 |
10 import 'package:path/path.dart' as p; | 10 import 'package:path/path.dart' as p; |
(...skipping 15 matching lines...) Expand all Loading... |
26 // TODO(nweiz): Make this check [stdioType] once that works within "pub run". | 26 // TODO(nweiz): Make this check [stdioType] once that works within "pub run". |
27 /// Whether "special" strings such as Unicode characters or color escapes are | 27 /// Whether "special" strings such as Unicode characters or color escapes are |
28 /// safe to use. | 28 /// safe to use. |
29 /// | 29 /// |
30 /// On Windows or when not printing to a terminal, only printable ASCII | 30 /// On Windows or when not printing to a terminal, only printable ASCII |
31 /// characters should be used. | 31 /// characters should be used. |
32 bool get canUseSpecialChars => | 32 bool get canUseSpecialChars => |
33 Platform.operatingSystem != 'windows' && | 33 Platform.operatingSystem != 'windows' && |
34 Platform.environment["_UNITTEST_USE_COLOR"] != "false"; | 34 Platform.environment["_UNITTEST_USE_COLOR"] != "false"; |
35 | 35 |
36 /// Gets a "special" string (ANSI escape or Unicode). | |
37 /// | |
38 /// On Windows or when not printing to a terminal, returns something else since | |
39 /// those aren't supported. | |
40 String getSpecial(String special, [String onWindows = '']) => | |
41 canUseSpecialChars ? special : onWindows; | |
42 | |
43 /// Creates a temporary directory and passes its path to [fn]. | 36 /// Creates a temporary directory and passes its path to [fn]. |
44 /// | 37 /// |
45 /// Once the [Future] returned by [fn] completes, the temporary directory and | 38 /// Once the [Future] returned by [fn] completes, the temporary directory and |
46 /// all its contents are deleted. [fn] can also return `null`, in which case | 39 /// all its contents are deleted. [fn] can also return `null`, in which case |
47 /// the temporary directory is deleted immediately afterwards. | 40 /// the temporary directory is deleted immediately afterwards. |
48 /// | 41 /// |
49 /// Returns a future that completes to the value that the future returned from | 42 /// Returns a future that completes to the value that the future returned from |
50 /// [fn] completes to. | 43 /// [fn] completes to. |
51 Future withTempDir(Future fn(String path)) { | 44 Future withTempDir(Future fn(String path)) { |
52 return new Future.sync(() { | 45 return new Future.sync(() { |
(...skipping 14 matching lines...) Expand all Loading... |
67 } | 60 } |
68 | 61 |
69 // IPv6 addresses in URLs need to be enclosed in square brackets to avoid | 62 // IPv6 addresses in URLs need to be enclosed in square brackets to avoid |
70 // URL ambiguity with the ":" in the address. | 63 // URL ambiguity with the ":" in the address. |
71 if (address.type == InternetAddressType.IP_V6) { | 64 if (address.type == InternetAddressType.IP_V6) { |
72 return new Uri(scheme: "http", host: "[${address.address}]", port: port); | 65 return new Uri(scheme: "http", host: "[${address.address}]", port: port); |
73 } | 66 } |
74 | 67 |
75 return new Uri(scheme: "http", host: address.address, port: port); | 68 return new Uri(scheme: "http", host: address.address, port: port); |
76 } | 69 } |
OLD | NEW |