|
5 | 5 | import pytest |
6 | 6 |
|
7 | 7 |
|
8 | | -def test_java_home_is_set(): |
| 8 | +def test_java_home_is_set() -> None: |
9 | 9 | java_home = os.environ.get("JAVA_HOME") |
10 | | - assert java_home is not None, "Environment variable 'JAVA_HOME' is not set but is required by pySpark to work." |
| 10 | + assert java_home is not None, \ |
| 11 | + "Environment variable 'JAVA_HOME' is not set but is required by pySpark to work." |
11 | 12 |
|
12 | 13 |
|
13 | | -def test_java_version_minimum_requirement(expected_major_version=11): |
| 14 | +def test_java_version_minimum_requirement(expected_major_version: int = 11) -> None: |
14 | 15 | version_line = __extract_version_line(__java_version_output()) |
15 | 16 | major_version = __parse_major_version(version_line) |
16 | | - assert major_version >= expected_major_version, (f"Major version {major_version} is not recent enough, " |
17 | | - f"we need at least version {expected_major_version}.") |
| 17 | + assert major_version >= expected_major_version, ( |
| 18 | + f"Major version {major_version} is not recent enough, " |
| 19 | + f"we need at least version {expected_major_version}.") |
18 | 20 |
|
19 | 21 |
|
20 | | -def __java_version_output(): |
21 | | - java_version = subprocess.check_output(['java', '-version'], stderr=subprocess.STDOUT).decode("utf-8") |
| 22 | +def __java_version_output() -> str: |
| 23 | + java_version = subprocess.check_output(['java', '-version'], stderr=subprocess.STDOUT).decode( |
| 24 | + "utf-8") |
22 | 25 | print(f"\n`java -version` returned\n{java_version}") |
23 | 26 | return java_version |
24 | 27 |
|
25 | 28 |
|
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) |
| 29 | +def __extract_version_line(java_version_output: str) -> str: |
| 30 | + version_line = next((line for line in java_version_output.splitlines() if "version" in line), |
| 31 | + None) |
28 | 32 | if not version_line: |
29 | 33 | pytest.fail("Couldn't find version information in `java -version` output.") |
30 | 34 | return version_line |
31 | 35 |
|
32 | 36 |
|
33 | | -def __parse_major_version(version_line): |
34 | | - version_regex = re.compile(r'version "(?P<major>\d+)\.(?P<minor>\d+)\.\d+"') |
| 37 | +# pylint: disable=R1710 |
| 38 | +def __parse_major_version(version_line: str) -> int: |
| 39 | + version_regex = re.compile(r'version "(?P<major>\d+)\.(?P<minor>\d+)\.\w+"') |
35 | 40 | match = version_regex.search(version_line) |
36 | | - if not match: |
37 | | - return None |
38 | | - major_version = int(match.group("major")) |
39 | | - if major_version == 1: |
40 | | - major_version = int(match.group("minor")) |
41 | | - if major_version is None: |
42 | | - pytest.fail(f"Couldn't parse Java version from {version_line}.") |
43 | | - return major_version |
| 41 | + if match is not None: |
| 42 | + major_version = int(match.group("major")) |
| 43 | + if major_version == 1: |
| 44 | + # we need to jump this hoop due to Java version naming conventions - it's fun: |
| 45 | + # https://softwareengineering.stackexchange.com/questions/175075/why-is-java-version-1-x-referred-to-as-java-x |
| 46 | + major_version = int(match.group("minor")) |
| 47 | + return major_version |
| 48 | + pytest.fail(f"Couldn't parse Java version from {version_line}.") |
0 commit comments