Chromium Code Reviews| 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..652c8b25afa8d455099c22007659773f8ba1eeb9 |
| --- /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; |
| + // Primitiive way to get stack trace,. |
|
Ivan Posva
2015/11/24 00:53:58
-i
Lasse Reichstein Nielsen
2015/11/24 06:52:56
Good catch. Fixed.
|
| + 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"); |
| +} |