dart-sdk/tests/corelib/stacktrace_current_test.dart
Robert Nystrom b998b10f3e Migrate remaining corelib_2/ tests to NNBD.
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>
2019-12-17 23:06:24 +00:00

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");
}