diff options
Diffstat (limited to 'toolkit/components/ctypes/tests/chrome/xpcshellTestHarnessAdaptor.js')
-rw-r--r-- | toolkit/components/ctypes/tests/chrome/xpcshellTestHarnessAdaptor.js | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/toolkit/components/ctypes/tests/chrome/xpcshellTestHarnessAdaptor.js b/toolkit/components/ctypes/tests/chrome/xpcshellTestHarnessAdaptor.js new file mode 100644 index 000000000..eec85025b --- /dev/null +++ b/toolkit/components/ctypes/tests/chrome/xpcshellTestHarnessAdaptor.js @@ -0,0 +1,100 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +var _WORKINGDIR_ = null; +var _OS_ = null; + +var Components = { + classes: { }, + interfaces: { }, + stack: { + caller: null + }, + utils: { + import: function() { } + } +}; + +function do_throw(message, stack) { + do_print("error: " + message); + do_print("stack: " + (stack ? stack : new Error().stack)); + throw message; +} + +function do_check_neq(left, right, stack) { + if (left == right) { + var text = "do_check_neq failed"; + try { + text += ": " + left + " == " + right; + } catch (e) { + } + do_throw(text, stack); + } +} + +function do_check_eq(left, right, stack) { + if (left != right) { + var text = "do_check_eq failed"; + try { + text += ": " + left + " != " + right; + } catch (e) { + } + do_throw(text, stack); + } +} + +function do_check_true(condition, stack) { + do_check_eq(condition, true, stack); +} + +function do_check_false(condition, stack) { + do_check_eq(condition, false, stack); +} + +function do_print(text) { + dump("INFO: " + text + "\n"); +} + +function FileFaker(path) { + this._path = path; +} +FileFaker.prototype = { + get path() { + return this._path; + }, + get parent() { + let lastSlash = this._path.lastIndexOf("/"); + if (lastSlash == -1) { + return ""; + } + this._path = this._path.substring(0, lastSlash); + return this; + }, + append: function(leaf) { + this._path = this._path + "/" + leaf; + } +}; + +function do_get_file(path, allowNonexistent) { + if (!_WORKINGDIR_) { + do_throw("No way to fake files if working directory is unknown!"); + } + + let lf = new FileFaker(_WORKINGDIR_); + let bits = path.split("/"); + for (let i = 0; i < bits.length; i++) { + if (bits[i]) { + if (bits[i] == "..") + lf = lf.parent; + else + lf.append(bits[i]); + } + } + return lf; +} + +function get_os() { + return _OS_; +} |