blob: dcc5f1759c8e6706888df444562ed132ed449089 [file] [log] [blame]
// 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();
}
}