mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:03:19 +00:00
51cc9689b3
This includes a migration of linked_hash_map_from_iterable_test and stacktrace_current_test, which were migrated without changes. BUG= R=rnystrom@google.com, whesse@google.com Review-Url: https://codereview.chromium.org/3004073002 .
37 lines
1 KiB
Dart
37 lines
1 KiB
Dart
// 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 "dart:convert" show LineSplitter;
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
void main() {
|
|
var st0;
|
|
var st1;
|
|
// Primitive way to get stack trace,.
|
|
try {
|
|
throw 0;
|
|
} catch (_, s) {
|
|
st0 = s;
|
|
}
|
|
st1 = StackTrace.current;
|
|
|
|
var st0s = findMain(st0);
|
|
var st1s = findMain(st1);
|
|
// Stack traces are not equal (contains at least a different line number,
|
|
// and possible different frame numbers).
|
|
// They are *similar*, so check that they agree on everything but numbers.
|
|
var digits = new RegExp(r"\d+");
|
|
Expect.equals(st0s.replaceAll(digits, "0"), st1s.replaceAll(digits, "0"));
|
|
}
|
|
|
|
String findMain(StackTrace stack) {
|
|
var string = "$stack";
|
|
var lines = LineSplitter.split(string).toList();
|
|
while (lines.isNotEmpty && !lines.first.contains("main")) {
|
|
lines.removeAt(0);
|
|
}
|
|
return lines.join("\n");
|
|
}
|