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.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
269
gaia/build/test/unit/push_to_device_test.js
Executable file
269
gaia/build/test/unit/push_to_device_test.js
Executable file
|
|
@ -0,0 +1,269 @@
|
|||
'use strict';
|
||||
|
||||
var assert = require('chai').assert;
|
||||
var proxyquire = require('proxyquire');
|
||||
var mockUtils = require('./mock_utils.js');
|
||||
|
||||
suite('push-to-device.js', function() {
|
||||
var app;
|
||||
setup(function() {
|
||||
app = proxyquire.noCallThru().load(
|
||||
'../../push-to-device', {
|
||||
'./utils': mockUtils
|
||||
});
|
||||
mockUtils.getFileContent = function(file) {
|
||||
return file;
|
||||
};
|
||||
});
|
||||
|
||||
suite('pushToDevice, getPid and installSvoperapps', function() {
|
||||
var profileFolder = 'testProfileFolder';
|
||||
var remotePath = 'testRemotePath';
|
||||
|
||||
test('pushToDevice without indexedDbFile', function(done) {
|
||||
mockUtils.getFile = function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var path = args.join('/');
|
||||
var indexDbFileExists = (path === profileFolder + '/indexedDB');
|
||||
return {
|
||||
exists: function() {
|
||||
return !indexDbFileExists;
|
||||
},
|
||||
isDirectory: function() {
|
||||
return !indexDbFileExists;
|
||||
},
|
||||
path: profileFolder + '/indexedDB'
|
||||
};
|
||||
};
|
||||
var queue = app.pushToDevice(profileFolder, remotePath, 'adb');
|
||||
queue.done(function() {
|
||||
assert.deepEqual(
|
||||
mockUtils.hasRunCommands,
|
||||
{ sh: [
|
||||
'-c adb shell rm -r /' + remotePath + '/webapps',
|
||||
'-c adb shell rm //data/local/user.js',
|
||||
'-c adb push "' + profileFolder + '/webapps" /' + remotePath +
|
||||
'/webapps',
|
||||
'-c adb push "' + profileFolder +
|
||||
'/user.js" //data/local/user.js']
|
||||
}
|
||||
);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('pushToDevice with indexedDbFile', function(done) {
|
||||
mockUtils.getFile = function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var path = args.join('/');
|
||||
var indexDbFileExists = (path === profileFolder + '/indexedDB');
|
||||
return {
|
||||
exists: function() {
|
||||
return indexDbFileExists;
|
||||
},
|
||||
isDirectory: function() {
|
||||
return indexDbFileExists;
|
||||
},
|
||||
path: profileFolder + '/indexedDB'
|
||||
};
|
||||
};
|
||||
var queue = app.pushToDevice(profileFolder, remotePath, 'adb');
|
||||
queue.done(function() {
|
||||
assert.deepEqual(
|
||||
mockUtils.hasRunCommands,
|
||||
{ sh: [
|
||||
'-c adb shell rm -r /' + remotePath + '/webapps',
|
||||
'-c adb shell rm //data/local/user.js',
|
||||
'-c adb push "' + profileFolder + '/webapps" /' + remotePath +
|
||||
'/webapps',
|
||||
'-c adb push "' + profileFolder +
|
||||
'/user.js" //data/local/user.js',
|
||||
'-c adb push "' + profileFolder +
|
||||
'/indexedDB" //data/local/indexedDB']
|
||||
}
|
||||
);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('installSvoperapps', function(done) {
|
||||
var queue = app.installSvoperapps(profileFolder, 'adb');
|
||||
queue.done(function() {
|
||||
assert.deepEqual(mockUtils.hasRunCommands, {
|
||||
sh: [
|
||||
'-c adb shell rm -r //data/local/svoperapps',
|
||||
'-c adb push "' + profileFolder +
|
||||
'/svoperapps" //data/local/svoperapps'
|
||||
]
|
||||
});
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
suite('execute', function() {
|
||||
var options;
|
||||
var appID;
|
||||
setup(function() {
|
||||
options = {
|
||||
ADB: 'adb',
|
||||
GAIA_DIR: 'testGaia',
|
||||
PROFILE_DIR: 'testProfileFolder',
|
||||
GAIA_INSTALL_PARENT: '/system/b2g',
|
||||
GAIA_DOMAIN: 'testDomain',
|
||||
DEFAULT_KEYBOAD_SYMBOLS_FONT:
|
||||
'shared/style/keyboard_symbols/Keyboard-Symbols.ttf',
|
||||
DEFAULT_GAIA_ICONS_FONT:
|
||||
'shared/elements/gaia-icons/fonts/gaia-icons.ttf'
|
||||
};
|
||||
appID = '999';
|
||||
mockUtils.getFile = function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var path = args.join('/');
|
||||
var profileExists = (path === options.PROFILE_DIR);
|
||||
return {
|
||||
exists: function() {
|
||||
return profileExists;
|
||||
},
|
||||
isDirectory: function() {
|
||||
return profileExists;
|
||||
},
|
||||
path: options.PROFILE_DIR
|
||||
};
|
||||
};
|
||||
mockUtils.readZipManifest = function() {
|
||||
return {
|
||||
name: options.BUILD_APP_NAME
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
test('execute, test it without assigning app name', function(done) {
|
||||
options.BUILD_APP_NAME = '*';
|
||||
var queue = app.execute(options);
|
||||
queue.done(function() {
|
||||
assert.deepEqual(mockUtils.hasRunCommands, {
|
||||
sh: [
|
||||
'-c adb start-server',
|
||||
'-c adb wait-for-device',
|
||||
'-c adb shell stop b2g',
|
||||
'-c adb shell rm -r //cache/*',
|
||||
'-c adb remount',
|
||||
'-c adb shell rm -r /' + options.GAIA_INSTALL_PARENT +
|
||||
'/webapps',
|
||||
'-c adb shell rm //data/local/user.js',
|
||||
'-c adb push "' + options.PROFILE_DIR + '/webapps"' +
|
||||
' //system/b2g/webapps',
|
||||
'-c adb push "' + options.PROFILE_DIR + '/user.js"' +
|
||||
' //data/local/user.js',
|
||||
'-c adb push "shared/elements/gaia-icons/fonts/gaia-icons.ttf"' +
|
||||
' //system/fonts/hidden/gaia-icons.ttf',
|
||||
'-c adb push "shared/style/keyboard_symbols/Keyboard-Symbols.ttf"' +
|
||||
' //system/fonts/hidden/Keyboard-Symbols.ttf',
|
||||
'-c adb shell start b2g']});
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('execute, test it with testApp as an app name', function(done) {
|
||||
options.BUILD_APP_NAME = 'testApp';
|
||||
mockUtils.psParser = function() {
|
||||
var pidMap = {};
|
||||
pidMap[options.BUILD_APP_NAME] = {
|
||||
PID: appID
|
||||
};
|
||||
return pidMap;
|
||||
};
|
||||
var queue = app.execute(options);
|
||||
queue.done(function() {
|
||||
assert.deepEqual(mockUtils.hasRunCommands, {
|
||||
sh: [
|
||||
'-c adb start-server',
|
||||
'-c adb wait-for-device',
|
||||
'-c adb shell rm -r //cache/*',
|
||||
'-c adb remount',
|
||||
'-c adb push "' + options.PROFILE_DIR + '/webapps/' +
|
||||
options.BUILD_APP_NAME + '.' + options.GAIA_DOMAIN +
|
||||
'/manifest.webapp" //data/local/tmp/pushgaia/' +
|
||||
options.BUILD_APP_NAME + '.' + options.GAIA_DOMAIN +
|
||||
'/manifest.webapp',
|
||||
'-c adb push "' + options.PROFILE_DIR + '/webapps/' +
|
||||
options.BUILD_APP_NAME + '.' + options.GAIA_DOMAIN +
|
||||
'/application.zip" //data/local/tmp/pushgaia/' +
|
||||
options.BUILD_APP_NAME + '.' + options.GAIA_DOMAIN +
|
||||
'/application.zip',
|
||||
'-c adb shell "cat /data/local/tmp/pushgaia/' +
|
||||
options.BUILD_APP_NAME + '.' + options.GAIA_DOMAIN +
|
||||
'/manifest.webapp > ' + options.GAIA_INSTALL_PARENT +
|
||||
'/webapps/' + options.BUILD_APP_NAME + '.' +
|
||||
options.GAIA_DOMAIN + '/manifest.webapp"',
|
||||
'-c adb shell "cat /data/local/tmp/pushgaia/' +
|
||||
options.BUILD_APP_NAME + '.' + options.GAIA_DOMAIN +
|
||||
'/application.zip > ' + options.GAIA_INSTALL_PARENT +
|
||||
'/webapps/' + options.BUILD_APP_NAME + '.' +
|
||||
options.GAIA_DOMAIN + '/application.zip"',
|
||||
'-c adb shell rm -rf //data/local/tmp/pushgaia',
|
||||
'-c adb shell kill testApp']});
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
suite('getRemoteInstallPath', function() {
|
||||
test('Return /system/b2g if no profile on device', function() {
|
||||
var realGetJSON = mockUtils.getJSON;
|
||||
mockUtils.getJSON = function(file) {
|
||||
// getJSON should throw in this case because the content of the
|
||||
// tempFile will be an adb error message.
|
||||
return JSON.parse(
|
||||
'remote object \'' + file.path + '\' does not exist');
|
||||
};
|
||||
var path = app.getRemoteInstallPath('adb');
|
||||
assert.equal(path, '/system/b2g');
|
||||
|
||||
mockUtils.getJSON = realGetJSON;
|
||||
});
|
||||
test('Return /data/local if no app was installed on /system/b2g',
|
||||
function() {
|
||||
var realGetJSON = mockUtils.getJSON;
|
||||
mockUtils.getJSON = function(file) {
|
||||
return {
|
||||
'app1.gaiamobile.org': {
|
||||
'basePath': '/data/local/webapps'
|
||||
},
|
||||
'app2.gaiamobile.org': {
|
||||
'basePath': '/data/local/webapps'
|
||||
},
|
||||
'app3.gaiamobile.org': {
|
||||
'basePath': '/data/local/webapps'
|
||||
}
|
||||
};
|
||||
};
|
||||
var path = app.getRemoteInstallPath('adb');
|
||||
assert.equal(path, '/data/local');
|
||||
|
||||
mockUtils.getJSON = realGetJSON;
|
||||
});
|
||||
test('Return /system/b2g if any app was installed there', function() {
|
||||
var realGetJSON = mockUtils.getJSON;
|
||||
mockUtils.getJSON = function(file) {
|
||||
return {
|
||||
'app1.gaiamobile.org': {
|
||||
'basePath': '/data/local/webapps'
|
||||
},
|
||||
'app2.gaiamobile.org': {
|
||||
'basePath': '/system/b2g/webapps'
|
||||
},
|
||||
'app3.gaiamobile.org': {
|
||||
'basePath': '/system/b2g/webapps'
|
||||
}
|
||||
};
|
||||
};
|
||||
var path = app.getRemoteInstallPath('adb');
|
||||
assert.equal(path, '/system/b2g');
|
||||
|
||||
mockUtils.getJSON = realGetJSON;
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
Loading…
Reference in a new issue