edee53f93d
What is dead may never die. Change-Id: I80ef766b8ce2b6e1416df8e1f9b91fb74169dc79 Reviewed-on: https://dart-review.googlesource.com/7483 Reviewed-by: William Hesse <whesse@google.com>
37 lines
1.0 KiB
Dart
37 lines
1.0 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");
|
|
}
|