11import os
22import re
33import subprocess
4- from typing import Optional
54
65import pytest
76
@@ -11,7 +10,7 @@ def test_java_home_is_set() -> None:
1110 assert java_home is not None , "Environment variable 'JAVA_HOME' is not set but is required by pySpark to work."
1211
1312
14- def test_java_version_minimum_requirement (expected_major_version :int = 11 ) -> None :
13+ def test_java_version_minimum_requirement (expected_major_version : int = 11 ) -> None :
1514 version_line = __extract_version_line (__java_version_output ())
1615 major_version = __parse_major_version (version_line )
1716 assert major_version >= expected_major_version , (f"Major version { major_version } is not recent enough, "
@@ -24,19 +23,21 @@ def __java_version_output() -> str:
2423 return java_version
2524
2625
27- def __extract_version_line (java_version_output :str ) -> str :
26+ def __extract_version_line (java_version_output : str ) -> str :
2827 version_line = next ((line for line in java_version_output .splitlines () if "version" in line ), None )
2928 if not version_line :
3029 pytest .fail ("Couldn't find version information in `java -version` output." )
3130 return version_line
3231
3332
34- def __parse_major_version (version_line :str ) -> int :
35- version_regex = re .compile (r'version "(?P<major>\d+)\.(?P<minor>\d+)\.\d +"' )
33+ def __parse_major_version (version_line : str ) -> int :
34+ version_regex = re .compile (r'version "(?P<major>\d+)\.(?P<minor>\d+)\.\w +"' )
3635 match = version_regex .search (version_line )
37- if match :
36+ if match is not None :
3837 major_version = int (match .group ("major" ))
39- if major_version == 1 : # Java 8 reports version as 1.actual_major.actual_minor
38+ if major_version == 1 :
39+ # we need to jump this hoop due to Java version naming conventions - it's fun:
40+ # https://softwareengineering.stackexchange.com/questions/175075/why-is-java-version-1-x-referred-to-as-java-x
4041 major_version = int (match .group ("minor" ))
4142 return major_version
4243 pytest .fail (f"Couldn't parse Java version from { version_line } ." )
0 commit comments