summaryrefslogtreecommitdiffstats
path: root/devtools/shared/platform/content/test/test_stack.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/platform/content/test/test_stack.js')
-rw-r--r--devtools/shared/platform/content/test/test_stack.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/devtools/shared/platform/content/test/test_stack.js b/devtools/shared/platform/content/test/test_stack.js
new file mode 100644
index 000000000..4dbb66541
--- /dev/null
+++ b/devtools/shared/platform/content/test/test_stack.js
@@ -0,0 +1,48 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// There isn't really very much about the content stack.js that we can
+// test, but we'll do what we can.
+
+"use strict";
+
+var Cu = Components.utils;
+const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
+
+// Make sure to explicitly require the content version of this module.
+// We have to use the ".." trick due to the way the loader remaps
+// devtools/shared/platform.
+const {
+ callFunctionWithAsyncStack,
+ getStack,
+ describeNthCaller
+} = require("devtools/shared/platform/../content/stack");
+
+function f3() {
+ return describeNthCaller(2);
+}
+
+function f2() {
+ return f3();
+}
+
+function f1() {
+ return f2();
+}
+
+function run_test() {
+ let value = 7;
+
+ const changeValue = () => {
+ value = 9;
+ };
+
+ callFunctionWithAsyncStack(changeValue, getStack(), "test_stack");
+ equal(value, 9, "callFunctionWithAsyncStack worked");
+
+ let stack = getStack();
+ equal(JSON.parse(JSON.stringify(stack)), stack, "stack is serializable");
+
+ let desc = f1();
+ ok(desc.includes("f1"), "stack description includes f1");
+}