Check job matrix.

This commit is contained in:
Patrick Lehmann
2025-10-18 23:41:43 +02:00
parent 6432741888
commit 77ed5bb343
6 changed files with 37 additions and 25 deletions

View File

@@ -45,23 +45,23 @@ runs:
from json import loads as json_loads
from sys import exit
expectedPythonVersion = """${{ inputs.expected-default-version }}"""
expectedPythons = json_loads("""${{ inputs.expected-python-versions }}""".replace("'", '"'))
expectedSystems = json_loads("""${{ inputs.expected-systems }}""".replace("'", '"'))
excludedJobs = json_loads("""${{ inputs.expected-exclude-jobs }}""".replace("'", '"'))
includeJobs = json_loads("""${{ inputs.expected-include-jobs }}""".replace("'", '"'))
expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons if f"{system}:{python}" not in excludedJobs] + includeJobs
actualPythonVersion = """${{ inputs.generated-default-version }}"""
actualPythonJobs = json_loads("""${{ inputs.generated-jobmatrix }}""".replace("'", '"'))
errors = 0
expectedPythonVersion = """${{ inputs.expected-default-version }}"""
expectedPythons = json_loads("""${{ inputs.expected-python-versions }}""".replace("'", '"'))
expectedSystems = json_loads("""${{ inputs.expected-systems }}""".replace("'", '"'))
excludedJobs = json_loads("""${{ inputs.expected-exclude-jobs }}""".replace("'", '"'))
includeJobs = json_loads("""${{ inputs.expected-include-jobs }}""".replace("'", '"'))
expectedJobs = sorted([f"{system}:{python}" for system in expectedSystems for python in expectedPythons if f"{system}:{python}" not in excludedJobs] + includeJobs)
errors = 0
if actualPythonVersion != expectedPythonVersion:
print(f"'python_version' does not match: '{actualPythonVersion}' != '{expectedPythonVersion}'.")
errors += 1
if len(actualPythonJobs) != len(expectedJobs):
print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.")
print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.")
print("Actual jobs:")
for job in actualPythonJobs:
if job['system'] == "msys2":
@@ -74,9 +74,19 @@ runs:
print(f" {job}")
errors += 1
else:
print("❌ Checking job matrix is not implemented")
print("✅ Number of 'python_jobs' as expected.")
print("Checking job combinations ...")
actualJobs = sorted([f"{job['system'] if job['system'] != 'msys2' else job['runtime'].lower()}:{job['python']}" for job in actualPythonJobs])
for actual, expected in zip(actualJobs, expectedJobs):
if actual != expected:
print(f" ❌ Job does not match: {actual} != {expected}.")
errors += 1
else:
print(f" ☑ Job as expected: {actual}.")
if errors == 0:
print(f"All checks PASSED.")
exit(errors)
print("All checks PASSED.")
else:
print(f"❌ Counted {errors} errors.")
exit(errors)