Skip to content

Commit c697332

Browse files
authored
Merge pull request #1077 from launchableinc/AIENG-180
Handle error when java -version returns error
2 parents 27b4392 + 8e79d16 commit c697332

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

launchable/commands/verify.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import re
44
import subprocess
55
import sys
6+
from subprocess import CalledProcessError
67
from typing import List
78

89
import click
@@ -49,9 +50,16 @@ def compare_java_version(output: str) -> int:
4950

5051

5152
def check_java_version(javacmd: str) -> int:
52-
"""Check if the Java version meets what we need. returns >=0 if we meet the requirement"""
53-
v = subprocess.run([javacmd, "-version"], check=True, stderr=subprocess.PIPE, universal_newlines=True)
54-
return compare_java_version(v.stderr)
53+
"""
54+
Check if the Java version meets what we need.
55+
Returns >=0 if we meet the requirement
56+
Returns -1 if 'java -version' command returns non-zero exit status
57+
"""
58+
try:
59+
v = subprocess.run([javacmd, "-version"], check=True, stderr=subprocess.PIPE, universal_newlines=True)
60+
return compare_java_version(v.stderr)
61+
except CalledProcessError:
62+
return -1
5563

5664

5765
@click.command(name="verify")

tests/commands/test_verify.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
from subprocess import CalledProcessError
12
from unittest import TestCase
3+
from unittest.mock import patch
24

3-
from launchable.commands.verify import compare_java_version, compare_version
5+
from launchable.commands.verify import check_java_version, compare_java_version, compare_version
46

57

68
class VersionTest(TestCase):
@@ -37,3 +39,9 @@ def test_java_version(self):
3739
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_22-b03, mixed mode)
3840
"""
3941
) < 0)
42+
43+
@patch('launchable.commands.verify.subprocess.run')
44+
def test_check_java_version(self, mock_run):
45+
mock_run.side_effect = CalledProcessError(1, 'java -version')
46+
result = check_java_version('java')
47+
self.assertEqual(result, -1)

0 commit comments

Comments
 (0)