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