mirror of
https://github.com/apache/cordova-android.git
synced 2026-05-30 00:00:04 +08:00
Feature: JVM Args flag (#948)
* feat: JVM args flag * test: JVM args flag * feat: Do not display recommended memory warning unless if memory is less than cordova default
This commit is contained in:
@@ -180,4 +180,64 @@ describe('Gradle Builder', () => {
|
||||
expect(emitSpy.calls.argsFor(0)[1]).toContain('Updating and Saving File');
|
||||
});
|
||||
});
|
||||
|
||||
describe('JVM Settings detection', () => {
|
||||
const parser = new GradlePropertiesParser('/root');
|
||||
|
||||
describe('_getBaseJVMSize', () => {
|
||||
it('1024k = 1048576', () => {
|
||||
expect(parser._getBaseJVMSize(1024, 'k')).toBe(1048576);
|
||||
expect(parser._getBaseJVMSize(1024, 'K')).toBe(1048576);
|
||||
});
|
||||
|
||||
it('1024m = 1073741824', () => {
|
||||
expect(parser._getBaseJVMSize(1024, 'm')).toBe(1073741824);
|
||||
expect(parser._getBaseJVMSize(1024, 'M')).toBe(1073741824);
|
||||
});
|
||||
|
||||
it('2g = 2097152', () => {
|
||||
expect(parser._getBaseJVMSize(2, 'g')).toBe(2147483648);
|
||||
expect(parser._getBaseJVMSize(2, 'G')).toBe(2147483648);
|
||||
});
|
||||
|
||||
it('unknown units should warn', () => {
|
||||
const emitSpy = jasmine.createSpy('emit');
|
||||
GradlePropertiesParser.__set__('events', {
|
||||
emit: emitSpy
|
||||
});
|
||||
|
||||
parser._getBaseJVMSize(1024, 'bad unit');
|
||||
expect(emitSpy.calls.argsFor(0)[1]).toContain('Unknown memory size unit');
|
||||
});
|
||||
});
|
||||
|
||||
describe('JVM recommended tests', () => {
|
||||
const recommended = '-Xmx2048m';
|
||||
|
||||
const tests = {
|
||||
// kb
|
||||
'1024k': true,
|
||||
'2097152k': false,
|
||||
'2097151k': true,
|
||||
'2097153k': false,
|
||||
|
||||
// mb
|
||||
'1024m': true,
|
||||
'2048m': false,
|
||||
'2047m': true,
|
||||
'2049m': false,
|
||||
|
||||
// gb
|
||||
'1g': true,
|
||||
'3g': false,
|
||||
'2g': false
|
||||
};
|
||||
|
||||
for (const i in tests) {
|
||||
it(i + ' should return ' + tests[i], () => {
|
||||
expect(parser._isJVMMemoryLessThanRecommended('-Xmx' + i, recommended)).toBe(tests[i]);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
var rewire = require('rewire');
|
||||
var path = require('path');
|
||||
var CordovaError = require('cordova-common').CordovaError;
|
||||
const GradlePropertiesParser = require('../../bin/templates/cordova/lib/config/GradlePropertiesParser');
|
||||
|
||||
const PATH_RESOURCE = path.join('platforms', 'android', 'app', 'src', 'main', 'res');
|
||||
|
||||
@@ -751,3 +752,83 @@ describe('cleanIcons method', function () {
|
||||
expect(actualResourceMap).toEqual(expectedResourceMap);
|
||||
});
|
||||
});
|
||||
|
||||
describe('prepare arguments', () => {
|
||||
// Rewire
|
||||
let Api;
|
||||
let api;
|
||||
let prepare;
|
||||
|
||||
// Spies
|
||||
let gradlePropertiesParserSpy;
|
||||
|
||||
// Mock Data
|
||||
let cordovaProject;
|
||||
let options;
|
||||
|
||||
beforeEach(function () {
|
||||
Api = rewire('../../bin/templates/cordova/Api');
|
||||
prepare = rewire('../../bin/templates/cordova/lib/prepare');
|
||||
|
||||
cordovaProject = {
|
||||
root: '/mock',
|
||||
projectConfig: {
|
||||
path: '/mock/config.xml',
|
||||
cdvNamespacePrefix: 'cdv'
|
||||
},
|
||||
locations: {
|
||||
plugins: '/mock/plugins',
|
||||
www: '/mock/www'
|
||||
}
|
||||
};
|
||||
|
||||
options = {
|
||||
options: {}
|
||||
};
|
||||
|
||||
Api.__set__('ConfigParser',
|
||||
jasmine.createSpy('ConfigParser')
|
||||
.and.returnValue(cordovaProject.projectConfig)
|
||||
);
|
||||
|
||||
Api.__set__('prepare', prepare.prepare);
|
||||
|
||||
prepare.__set__('events', {
|
||||
emit: jasmine.createSpy('emit')
|
||||
});
|
||||
prepare.__set__('updateWww', jasmine.createSpy());
|
||||
prepare.__set__('updateProjectAccordingTo', jasmine.createSpy('updateProjectAccordingTo')
|
||||
.and.returnValue(Promise.resolve()));
|
||||
prepare.__set__('updateIcons', jasmine.createSpy('updateIcons').and.returnValue(Promise.resolve()));
|
||||
prepare.__set__('updateSplashes', jasmine.createSpy('updateSplashes').and.returnValue(Promise.resolve()));
|
||||
prepare.__set__('updateFileResources', jasmine.createSpy('updateFileResources').and.returnValue(Promise.resolve()));
|
||||
prepare.__set__('updateConfigFilesFrom',
|
||||
jasmine.createSpy('updateConfigFilesFrom')
|
||||
.and.returnValue({
|
||||
getPreference: jasmine.createSpy('getPreference')
|
||||
}));
|
||||
|
||||
gradlePropertiesParserSpy = spyOn(GradlePropertiesParser.prototype, 'configure');
|
||||
|
||||
api = new Api();
|
||||
});
|
||||
|
||||
it('runs without arguments', () => {
|
||||
expectAsync(
|
||||
api.prepare(cordovaProject, options).then(() => {
|
||||
expect(gradlePropertiesParserSpy).toHaveBeenCalledWith({});
|
||||
})
|
||||
).toBeResolved();
|
||||
});
|
||||
|
||||
it('runs with jvmargs', () => {
|
||||
options.options.argv = ['--jvmargs=-Xmx=4096m'];
|
||||
expectAsync(
|
||||
api.prepare(cordovaProject, options).then(() => {
|
||||
expect(gradlePropertiesParserSpy).toHaveBeenCalledWith({
|
||||
'org.gradle.jvmargs': '-Xmx=4096m'
|
||||
});
|
||||
})
|
||||
).toBeResolved();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user