mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 10:28:02 +00:00
b998b10f3e
Change-Id: I3a31632ce28fb87a410b759d092c7ebc9393574d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/128306 Commit-Queue: Bob Nystrom <rnystrom@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com> Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
36 lines
1 KiB
Dart
36 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");
|
|
}
|