| Index: tests/corelib/stacktrace_current_test.dart
|
| diff --git a/tests/corelib/stacktrace_current_test.dart b/tests/corelib/stacktrace_current_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f68ba322959f1e40b9db2b3ba3cb785d1bcb69ab
|
| --- /dev/null
|
| +++ b/tests/corelib/stacktrace_current_test.dart
|
| @@ -0,0 +1,32 @@
|
| +// 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");
|
| +}
|
|
|