@@ -10,40 +10,34 @@ def test_java_home_is_set():
1010 assert java_home is not None , "Environment variable 'JAVA_HOME' is not set but is required by pySpark to work."
1111
1212
13- def test_java_version_is_greater_or_equal_11 ():
14- java_version_output = get_java_version_output ()
15- print (f"\n `java -version` returned\n { java_version_output } " )
16-
17- version_line = extract_version_line (java_version_output )
18- if not version_line :
19- pytest .fail ("Couldn't find version information in `java -version` output." )
20-
21- major_version = parse_major_version (version_line )
22- if major_version is None :
23- pytest .fail (f"Couldn't parse Java version from { version_line } ." )
24-
25- expected_major_version = 11
13+ def test_java_version_minimum_requirement (expected_major_version = 11 ):
14+ version_line = __extract_version_line (__java_version_output ())
15+ major_version = __parse_major_version (version_line )
2616 assert major_version >= expected_major_version , (f"Major version { major_version } is not recent enough, "
2717 f"we need at least version { expected_major_version } ." )
2818
2919
30- def get_java_version_output ():
31- return subprocess .check_output (['java' , '-version' ], stderr = subprocess .STDOUT ).decode ("utf-8" )
20+ def __java_version_output ():
21+ java_version = subprocess .check_output (['java' , '-version' ], stderr = subprocess .STDOUT ).decode ("utf-8" )
22+ print (f"\n `java -version` returned\n { java_version } " )
23+ return java_version
3224
3325
34- def extract_version_line (java_version_output ):
35- for line in java_version_output .splitlines ():
36- if "version" in line :
37- return line
38- return None
26+ def __extract_version_line (java_version_output ):
27+ version_line = next (( line for line in java_version_output .splitlines () if "version" in line ), None )
28+ if not version_line :
29+ pytest . fail ( "Couldn't find version information in `java -version` output." )
30+ return version_line
3931
4032
41- def parse_major_version (version_line ):
33+ def __parse_major_version (version_line ):
4234 version_regex = re .compile (r'version "(?P<major>\d+)\.(?P<minor>\d+)\.\d+"' )
4335 match = version_regex .search (version_line )
4436 if not match :
4537 return None
4638 major_version = int (match .group ("major" ))
4739 if major_version == 1 :
4840 major_version = int (match .group ("minor" ))
41+ if major_version is None :
42+ pytest .fail (f"Couldn't parse Java version from { version_line } ." )
4943 return major_version
0 commit comments