Changing some code to fix some bugs for versioning

This commit is contained in:
J-Doiron
2025-12-23 17:14:44 -08:00
parent daffe4e42c
commit 2544dbf775
2 changed files with 57 additions and 25 deletions

View File

@@ -8,7 +8,7 @@ from argparse import ArgumentParser
import time
from subprocess import Popen, PIPE
import threading
from utils import find_latest_log, find_score_in_log, get_photoshop_version, get_premierepro_version, get_lightroom_version, get_aftereffects_version, get_davinci_version, get_pugetbench_version, get_latest_benchmark_by_version
from utils import find_latest_log, trim_to_major_minor, find_score_in_log, get_photoshop_version, get_premierepro_version, get_lightroom_version, get_aftereffects_version, get_davinci_version, get_pugetbench_version, get_latest_benchmark_by_version
sys.path.insert(1, os.path.join(sys.path[0], ".."))
from harness_utils.process import terminate_processes
@@ -33,7 +33,6 @@ logging.getLogger('').addHandler(console)
EXECUTABLE_NAME = "PugetBench for Creators.exe"
def read_output(stream, log_func, error_func, error_in_output):
"""Read and log output in real-time from a stream (stdout or stderr)."""
while True:
@@ -64,6 +63,9 @@ def run_benchmark(application: str, app_version: str, benchmark_version: str):
start_time = time.time()
executable_path = Path(
f"C:\\Program Files\\PugetBench for Creators\\{EXECUTABLE_NAME}")
if not executable_path.exists():
logging.error(f"PugetBench executable not found at {executable_path}")
sys.exit(1)
command_args = ["--run_count", "1", "--rerun_count", "1",
"--benchmark_version", f"{benchmark_version}", "--preset",
"Standard", "--app_version", f"{app_version}"]
@@ -137,32 +139,47 @@ def main():
version = args.app_version
score = 0
full_version = None
trimmed_version = None
full_version = version
trimmed_version = trim_to_major_minor(version)
test = ""
if args.app == "premierepro":
test = "Adobe Premiere Pro"
if version is None:
full_version, trimmed_version = get_premierepro_version()
if full_version is None or trimmed_version is None:
logging.error("Could not determine Premiere Pro version. Is it installed?")
sys.exit(1)
elif args.app == "photoshop":
test = "Adobe Photoshop"
if version is None:
full_version, trimmed_version = get_photoshop_version()
if full_version is None or trimmed_version is None:
logging.error("Could not determine Photoshop version. Is it installed?")
sys.exit(1)
elif args.app == "aftereffects":
test = "Adobe After Effects"
if version is None:
full_version, trimmed_version = get_aftereffects_version()
if full_version is None or trimmed_version is None:
logging.error("Could not determine After Effects version. Is it installed?")
sys.exit(1)
elif args.app == "lightroom":
test = "Adobe Lightroom Classic"
if version is None:
full_version, trimmed_version = get_lightroom_version()
if full_version is None or trimmed_version is None:
logging.error("Could not determine Lightroom version. Is it installed?")
sys.exit(1)
elif args.app == "resolve":
test = "Davinci Resolve Studio"
if version is None:
full_version, trimmed_version = get_davinci_version()
if full_version and trimmed_version:
full_version += "-studio"
trimmed_version += "-studio"
if full_version is None or trimmed_version is None:
logging.error("Could not determine Resolve Studio version. Is it installed?")
sys.exit(1)
full_version += "-studio"
trimmed_version += "-studio"
try:
start_time, end_time = run_benchmark(

View File

@@ -5,6 +5,21 @@ from pathlib import Path
import win32api
import csv
def trim_to_major_minor(version: str | None) -> str | None:
if version is None:
return None
# Match major.minor at the start
match = re.match(r"(\d+)\.(\d+)", version)
if not match:
return version # fallback if unrecognized
major_minor = f"{match.group(1)}.{match.group(2)}"
# Preserve -beta suffix if present
if "-beta" in version:
major_minor += "-beta"
return major_minor
def get_latest_benchmark_by_version(benchmark_name: str):
"""Get the latest benchmark version, prioritizing beta if it's newer."""
@@ -42,8 +57,14 @@ def get_latest_benchmark_by_version(benchmark_name: str):
if not versions:
raise ValueError("No valid benchmark versions found after parsing.")
# Sort versions (beta will automatically come last if sorted lexicographically)
versions.sort(reverse=True)
# Sort numerically, with releases before beta
def version_key(v: str):
main, *suffix = v.split("-")
nums = tuple(int(x) for x in main.split("."))
beta_flag = 1 if "-beta" in v else 0
return nums, -beta_flag # release first
versions.sort(key=version_key, reverse=True)
# Return the latest version
return versions[0]
@@ -56,8 +77,7 @@ def find_latest_log():
files = [os.path.join(puget_lunch_dir, file) for file in os.listdir(
puget_lunch_dir) if os.path.isfile(os.path.join(puget_lunch_dir, file))]
latest_file = max(files, key=os.path.getmtime)
script_dir = os.path.dirname(os.path.realpath(__file__))
return Path(script_dir) / latest_file
return Path(latest_file)
def find_score_in_log(log_path):
@@ -105,7 +125,7 @@ def get_photoshop_version() -> tuple[str, str]:
# Check if Adobe folder exists
if not os.path.exists(base_path):
print("Adobe directory not found.")
return None
return None, None
# Look for Adobe Photoshop folders
possible_versions = sorted(
@@ -124,8 +144,7 @@ def get_photoshop_version() -> tuple[str, str]:
full_version = win32api.GetFileVersionInfo(exe_path, str_info_path)
# Trim to major.minor
parts = full_version.split(".")
major_minor = ".".join(parts[:2]) if len(parts) >= 2 else full_version
major_minor = trim_to_major_minor(full_version)
return full_version, major_minor
except Exception as e:
@@ -140,7 +159,7 @@ def get_aftereffects_version() -> tuple[str, str]:
# Check if Adobe folder exists
if not os.path.exists(base_path):
print("Adobe directory not found.")
return None
return None, None
# Look for After Effects folders (including Beta)
possible_versions = sorted(
@@ -165,8 +184,7 @@ def get_aftereffects_version() -> tuple[str, str]:
full_version = str(win32api.GetFileVersionInfo(exe_path, str_info_path))
# Trim to major.minor
parts = full_version.split(".")
major_minor = ".".join(parts[:2]) if len(parts) >= 2 else full_version
major_minor = trim_to_major_minor(full_version)
return full_version, major_minor
except Exception as e:
@@ -182,7 +200,7 @@ def get_premierepro_version() -> tuple[str, str]:
# Check if Adobe folder exists
if not os.path.exists(base_path):
print("Adobe directory not found.")
return None
return None, None
# Look for Adobe Premiere Pro folders
possible_versions = sorted(
@@ -201,8 +219,7 @@ def get_premierepro_version() -> tuple[str, str]:
full_version = win32api.GetFileVersionInfo(exe_path, str_info_path)
# Trim to major.minor
parts = full_version.split(".")
major_minor = ".".join(parts[:2]) if len(parts) >= 2 else full_version
major_minor = trim_to_major_minor(full_version)
return full_version, major_minor
except Exception as e:
@@ -217,7 +234,7 @@ def get_lightroom_version() -> tuple[str, str]:
# Check if Adobe folder exists
if not os.path.exists(base_path):
print("Adobe directory not found.")
return None
return None, None
# Look for Adobe Lightroom Classic folders
possible_versions = sorted(
@@ -236,8 +253,7 @@ def get_lightroom_version() -> tuple[str, str]:
full_version = win32api.GetFileVersionInfo(exe_path, str_info_path)
# Trim to major.minor
parts = full_version.split(".")
major_minor = ".".join(parts[:2]) if len(parts) >= 2 else full_version
major_minor = trim_to_major_minor(full_version)
return full_version, major_minor
except Exception as e:
@@ -261,8 +277,7 @@ def get_davinci_version() -> tuple[str, str]:
full_version = win32api.GetFileVersionInfo(path, str_info_path)
# Trim to major.minor
parts = full_version.split(".")
major_minor = ".".join(parts[:2]) if len(parts) >= 2 else full_version
major_minor = trim_to_major_minor(full_version)
return full_version, major_minor