VulpesOS/gaia/tests/jsmarionette/client/marionette-client/test/helper.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

103 lines
2.1 KiB
JavaScript
Executable file

'use strict';
var assert = require('chai').assert;
var helper = global.helper = {};
global.assert = assert;
var deepEqual = assert.deepEqual.bind(assert);
assert.deepEqual = function(one, other, msg) {
// Hack so that we pass when comparing
// { '0': foo } with [foo]
deepEqual(argsToArrays(one), argsToArrays(other), msg);
};
function argsToArrays(obj) {
if (typeof obj !== 'object') {
return obj;
}
var proto;
try {
proto = Object.getPrototypeOf(obj);
if (proto && Object.keys(proto).length) {
// This is something fancy...
return obj;
}
} catch (err) {
// uh wtf
return obj;
}
if (!Array.isArray(obj) && isArrayLike(obj)) {
obj = Array.prototype.slice.call(obj);
}
for (var key in obj) {
obj[key] = argsToArrays(obj[key]);
}
return obj;
}
function isArrayLike(obj) {
return Object.keys(obj).every(function(value) {
var representation = parseInt(value);
return typeof representation === 'number' && !isNaN(representation);
});
}
helper.requireLib = function(path) {
return require('../lib/' + path);
};
helper.nsFind = function(obj, string) {
var result = obj;
var parts = string.split('.');
var part;
while ((part = parts.shift())) {
if (!result[part]) {
throw new Error('Cannot find ' + string + ' in object ');
}
result = result[part];
}
return result;
};
helper.require = function(path, component, cb) {
if (typeof(component) === 'function') {
//new module pattern
cb = component;
component = path;
if (/^support/.test(path)) {
path = '/test/' + path;
} else {
path = '/lib/marionette/' + path;
}
} else {
//old system
path = '/lib/' + path;
}
cb(require('..' + path));
};
helper.require('responder', function(obj) {});
helper.require('example-commands', function(obj) {
global.exampleCmds = obj;
});
helper.require('support/device-interaction', function(obj) {
global.DeviceInteraction = obj;
});
helper.require('support/socket', function(obj) {
global.FakeSocket = obj;
});
helper.require('support/mock-driver', function(obj) {
global.MockDriver = obj;
});