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:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,153 @@
'use strict';
var assert = require('chai').assert;
var fs = require('fs');
var path = require('path');
var AdmZip = require('adm-zip');
var helper = require('./helper');
suite('Integration tests', function() {
suiteSetup(helper.cleanupWorkspace);
teardown(helper.cleanupWorkspace);
function verifyIncludedFilesFromHtml(appName) {
var zipPath = path.join(process.cwd(), 'profile', 'webapps',
appName + '.gaiamobile.org', 'application.zip');
var zip = new AdmZip(zipPath);
var zipEntries = zip.getEntries();
if (zipEntries.length === 0) {
return;
}
for (var f = 0; f < zipEntries.length; f++) {
var fileName = zipEntries[f].entryName;
var extention =
fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();
if (extention === 'html') {
extractSharedFile(zip, zipEntries[f], appName);
}
}
function extractSharedFile(zip, file, appName) {
var SHARED_USAGE =
/<(?:script|link).+=['"]\.?\.?\/?(shared\/[^\/]+\/[^''\s]+)["']/g;
var content = zip.readAsText(file);
var matches;
while((matches = SHARED_USAGE.exec(content))!== null) {
var filePathInHtml = matches[1];
var fileInZip = zip.readFile(zip.getEntry(filePathInHtml));
var fileInApps;
if (/\.(png|gif|jpg)$/.test(filePathInHtml)) {
continue;
}
if (filePathInHtml.indexOf('shared/') === 0) {
fileInApps = fs.readFileSync(
path.join(process.cwd(), filePathInHtml));
} else {
fileInApps = fs.readFileSync(path.join(process.cwd(),
'apps', appName, filePathInHtml));
}
assert.deepEqual(fileInZip, fileInApps, filePathInHtml);
}
}
}
function verifyIncludedImagesSize(appName, reso, official) {
var zipPath = path.join(process.cwd(), 'profile', 'webapps',
appName + '.gaiamobile.org', 'application.zip');
var zip = new AdmZip(zipPath);
var zipEntries = zip.getEntries();
if (zipEntries.length === 0) {
return;
}
for (var f = 0; f < zipEntries.length; f++) {
var fileInZip = zipEntries[f];
var fileName = fileInZip.entryName;
if (/\.(png|gif|jpg)$/.test(fileName)) {
// Manually modify the pathname of the browser branding images as
// these are packaged differently than normal images.
if (reso !== 1 &&
fileName.indexOf('shared/resources/branding/browser_') === -1) {
fileName = fileName.replace(
/(.*)(\.(png|gif|jpg))$/, '$1@' + reso + 'x$2');
}
compareWithApps(appName, fileName, fileInZip, reso, official);
}
}
function compareWithApps(appName, filePath, fileEntry, reso, official) {
var fileInApps;
var fileOfZip = zip.readFile(fileEntry);
if (filePath.indexOf('/branding/') !== -1) {
filePath = filePath.replace('/branding/',
official ? '/branding/official/' : '/branding/unofficial/');
}
if (filePath.indexOf('shared/') === 0) {
filePath = path.join(process.cwd(), filePath);
} else {
filePath = path.join(process.cwd(), 'apps', appName, filePath);
}
if (fs.existsSync(filePath)) {
fileInApps = fs.readFileSync(filePath);
} else {
filePath = filePath.replace('@' + reso + 'x', '');
fileInApps = fs.readFileSync(filePath);
}
assert.deepEqual(fileOfZip, fileInApps, filePath + ' no found');
}
}
test('make APP=system, checking all of the files are available',
function(done) {
helper.exec('make APP=system', function(error, stdout, stderr) {
helper.checkError(error, stdout, stderr);
verifyIncludedFilesFromHtml('system');
verifyIncludedImagesSize('system', 1, false);
done();
});
});
test('make with GAIA_DEV_PIXELS_PER_PX=1.5', function(done) {
helper.exec('GAIA_DEV_PIXELS_PER_PX=1.5 APP=system make ',
function(error, stdout, stderr) {
helper.checkError(error, stdout, stderr);
verifyIncludedImagesSize('system', 1.5, false);
done();
}
);
});
test('make app with custom origin', function(done) {
// add custom-origin app to apps list
var appsListPath = path.join('build', 'config', 'phone',
'apps-engineering.list');
fs.renameSync(appsListPath, appsListPath + '.bak');
fs.writeFileSync(appsListPath,
'apps/*\nbuild/test/fixtures/custom-origin\n');
var extConfigPath = path.join('build', 'config',
'additional-extensions.json');
var restoreFunc = helper.emptyJsonFile(extConfigPath);
helper.exec('DEBUG=1 make', function(error, stdout, stderr) {
fs.unlinkSync(appsListPath);
fs.renameSync(appsListPath + '.bak', appsListPath);
helper.checkError(error, stdout, stderr);
var webappsPath = path.join(process.cwd(), 'profile-debug',
'webapps', 'webapps.json');
var webapps = JSON.parse(fs.readFileSync(webappsPath));
assert.isNotNull(webapps['test.mozilla.com']);
assert.equal(
webapps['test.mozilla.com'].origin, 'app://test.mozilla.com');
restoreFunc();
done();
});
});
});