forked from github/cordova-android
Bugfix/java checks (#1228)
* fix: Java version parsing if java executable prints out additional information with --version * fix: Ensure JAVA_HOME path comes first in the PATH environment * refactor: Removed redundent code in favour of keeping a change introduced from another PR
This commit is contained in:
parent
ae4dba2bb8
commit
6d803e2f72
9
bin/templates/cordova/lib/env/java.js
vendored
9
bin/templates/cordova/lib/env/java.js
vendored
@ -93,16 +93,15 @@ const java = {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const javacPath = utils.forgivingWhichSync('javac');
|
|
||||||
const javaHome = environment.CORDOVA_JAVA_HOME || environment.JAVA_HOME;
|
const javaHome = environment.CORDOVA_JAVA_HOME || environment.JAVA_HOME;
|
||||||
if (javaHome) {
|
if (javaHome) {
|
||||||
// Ensure that CORDOVA_JAVA_HOME overrides
|
// Ensure that CORDOVA_JAVA_HOME overrides
|
||||||
environment.JAVA_HOME = javaHome;
|
environment.JAVA_HOME = javaHome;
|
||||||
// Windows java installer doesn't add javac to PATH, nor set JAVA_HOME (ugh).
|
// Ensure that the JAVA_HOME bin path is before anything else
|
||||||
if (!javacPath) {
|
// to cover cases where different Java versions is in the PATH
|
||||||
environment.PATH += path.delimiter + path.join(environment.JAVA_HOME, 'bin');
|
environment.PATH = path.join(environment.JAVA_HOME, 'bin') + path.delimiter + environment.PATH;
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
|
const javacPath = utils.forgivingWhichSync('javac');
|
||||||
if (javacPath) {
|
if (javacPath) {
|
||||||
// OS X has a command for finding JAVA_HOME.
|
// OS X has a command for finding JAVA_HOME.
|
||||||
const find_java = '/usr/libexec/java_home';
|
const find_java = '/usr/libexec/java_home';
|
||||||
|
@ -47,9 +47,19 @@ describe('Java', () => {
|
|||||||
all: 'javac 1.8.0_275'
|
all: 'javac 1.8.0_275'
|
||||||
}));
|
}));
|
||||||
|
|
||||||
console.log('BEFORE', process.env.JAVA_HOME);
|
|
||||||
const result = await Java.getVersion();
|
const result = await Java.getVersion();
|
||||||
console.log('AFTER', process.env.JAVA_HOME);
|
expect(result.major).toBe(1);
|
||||||
|
expect(result.minor).toBe(8);
|
||||||
|
expect(result.patch).toBe(0);
|
||||||
|
expect(result.version).toBe('1.8.0');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('detects JDK when additional details are printed', async () => {
|
||||||
|
Java.__set__('execa', () => Promise.resolve({
|
||||||
|
all: 'Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8\njavac 1.8.0_275'
|
||||||
|
}));
|
||||||
|
|
||||||
|
const result = await Java.getVersion();
|
||||||
expect(result.major).toBe(1);
|
expect(result.major).toBe(1);
|
||||||
expect(result.minor).toBe(8);
|
expect(result.minor).toBe(8);
|
||||||
expect(result.patch).toBe(0);
|
expect(result.patch).toBe(0);
|
||||||
|
Loading…
Reference in New Issue
Block a user