| // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'package:source_span/source_span.dart'; |
| import 'package:test_api/src/utils.dart'; // ignore: implementation_imports |
| |
| class LoadException implements Exception { |
| final String path; |
| |
| final Object innerError; |
| |
| LoadException(this.path, this.innerError); |
| |
| @override |
| String toString({bool color = false}) { |
| var buffer = StringBuffer(); |
| if (color) buffer.write('\u001b[31m'); // red |
| buffer.write('Failed to load "$path":'); |
| if (color) buffer.write('\u001b[0m'); // no color |
| |
| var innerString = getErrorMessage(innerError); |
| if (innerError is SourceSpanException) { |
| innerString = (innerError as SourceSpanException) |
| .toString(color: color) |
| .replaceFirst(' of $path', ''); |
| } |
| |
| buffer.write(innerString.contains('\n') ? '\n' : ' '); |
| buffer.write(innerString); |
| return buffer.toString(); |
| } |
| } |