OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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.utils; | 5 library unittest.utils; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:path/path.dart' as p; | 9 import 'package:path/path.dart' as p; |
10 import 'package:stack_trace/stack_trace.dart'; | 10 import 'package:stack_trace/stack_trace.dart'; |
11 | 11 |
12 import 'backend/operating_system.dart'; | 12 import 'backend/operating_system.dart'; |
13 | 13 |
14 /// A typedef for a possibly-asynchronous function. | 14 /// A typedef for a possibly-asynchronous function. |
15 /// | 15 /// |
16 /// The return type should only ever by [Future] or void. | 16 /// The return type should only ever by [Future] or void. |
17 typedef AsyncFunction(); | 17 typedef AsyncFunction(); |
18 | 18 |
19 /// A regular expression to match the exception prefix that some exceptions' | 19 /// A regular expression to match the exception prefix that some exceptions' |
20 /// [Object.toString] values contain. | 20 /// [Object.toString] values contain. |
21 final _exceptionPrefix = new RegExp(r'^([A-Z][a-zA-Z]*)?(Exception|Error): '); | 21 final _exceptionPrefix = new RegExp(r'^([A-Z][a-zA-Z]*)?(Exception|Error): '); |
22 | 22 |
23 /// Directories that are specific to OS X. | 23 /// Directories that are specific to OS X. |
24 /// | 24 /// |
25 /// This is used to try to distinguish OS X and Linux in [currentOsGuess]. | 25 /// This is used to try to distinguish OS X and Linux in [currentOSGuess]. |
26 final _macOsDirectories = new Set<String>.from([ | 26 final _macOSDirectories = new Set<String>.from([ |
27 "/Applications", | 27 "/Applications", |
28 "/Library", | 28 "/Library", |
29 "/Network", | 29 "/Network", |
30 "/System", | 30 "/System", |
31 "/Users" | 31 "/Users" |
32 ]); | 32 ]); |
33 | 33 |
34 /// Returns the best guess for the current operating system without using | 34 /// Returns the best guess for the current operating system without using |
35 /// `dart:io`. | 35 /// `dart:io`. |
36 /// | 36 /// |
37 /// This is useful for running test files directly and skipping tests as | 37 /// This is useful for running test files directly and skipping tests as |
38 /// appropriate. The only OS-specific information we have is the current path, | 38 /// appropriate. The only OS-specific information we have is the current path, |
39 /// which we try to use to figure out the OS. | 39 /// which we try to use to figure out the OS. |
40 final OperatingSystem currentOsGuess = (() { | 40 final OperatingSystem currentOSGuess = (() { |
41 if (p.style == p.Style.url) return OperatingSystem.none; | 41 if (p.style == p.Style.url) return OperatingSystem.none; |
42 if (p.style == p.Style.windows) return OperatingSystem.windows; | 42 if (p.style == p.Style.windows) return OperatingSystem.windows; |
43 if (_macOsDirectories.any(p.current.startsWith)) return OperatingSystem.macOs; | 43 if (_macOSDirectories.any(p.current.startsWith)) return OperatingSystem.macOS; |
44 return OperatingSystem.linux; | 44 return OperatingSystem.linux; |
45 })(); | 45 })(); |
46 | 46 |
47 /// Get a string description of an exception. | 47 /// Get a string description of an exception. |
48 /// | 48 /// |
49 /// Many exceptions include the exception class name at the beginning of their | 49 /// Many exceptions include the exception class name at the beginning of their |
50 /// [toString], so we remove that if it exists. | 50 /// [toString], so we remove that if it exists. |
51 String getErrorMessage(error) => | 51 String getErrorMessage(error) => |
52 error.toString().replaceFirst(_exceptionPrefix, ''); | 52 error.toString().replaceFirst(_exceptionPrefix, ''); |
53 | 53 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 | 134 |
135 // Otherwise truncate to return the trailing text, but attempt to start at | 135 // Otherwise truncate to return the trailing text, but attempt to start at |
136 // the beginning of a word. | 136 // the beginning of a word. |
137 var result = text.substring(text.length - maxLength + 4); | 137 var result = text.substring(text.length - maxLength + 4); |
138 var firstSpace = result.indexOf(' '); | 138 var firstSpace = result.indexOf(' '); |
139 if (firstSpace > 0) { | 139 if (firstSpace > 0) { |
140 result = result.substring(firstSpace); | 140 result = result.substring(firstSpace); |
141 } | 141 } |
142 return '...$result'; | 142 return '...$result'; |
143 } | 143 } |
OLD | NEW |