Source code

Revision control

Copy as Markdown

Other Tools

/* -*- 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 do_throw(message, stack) {
info("error: " + message);
info("stack: " + (stack ? stack : new Error().stack));
throw message;
}
var Assert = {
notEqual(left, right, stack) {
if (left == right) {
var text = "Assert.notEqual failed";
try {
text += ": " + left + " == " + right;
} catch (e) {}
do_throw(text, stack);
}
},
equal(left, right, stack) {
if (left != right) {
var text = "Assert.equal failed";
try {
text += ": " + left + " != " + right;
} catch (e) {}
do_throw(text, stack);
}
},
strictEqual(left, right, stack) {
if (left !== right) {
var text = "Assert.strictEqual failed";
try {
text += ": " + left + " !== " + right;
} catch (e) {}
do_throw(text, stack);
}
},
ok(condition, stack) {
this.equal(condition, true, stack);
},
};
function info(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(leaf) {
this._path = this._path + "/" + leaf;
},
};
function do_get_file(path) {
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_;
}