From 820754acc4886d10bb2a73b24e0e028eb3a096f0 Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Fri, 9 May 2025 21:17:56 -0400 Subject: [PATCH] Include commit hash under test in the report Sometimes it's hard to say which commit a particular report belongs to, especially when new commits were pushed while nixpkgs-review was running. This change will make it explicit. Signed-off-by: Ihar Hrachyshka --- nixpkgs_review/cli/pr.py | 16 +++++++++++++--- nixpkgs_review/report.py | 4 ++++ nixpkgs_review/review.py | 5 +++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/nixpkgs_review/cli/pr.py b/nixpkgs_review/cli/pr.py index 15d9eaa3..e544d848 100644 --- a/nixpkgs_review/cli/pr.py +++ b/nixpkgs_review/cli/pr.py @@ -77,6 +77,8 @@ def pr_command(args: argparse.Namespace) -> str: Path, # Attrs to build for each system dict[System, list[Attr]], + # PR revision + str | None, ] ] = [] @@ -113,16 +115,24 @@ def pr_command(args: argparse.Namespace) -> str: num_parallel_evals=args.num_parallel_evals, show_header=not args.no_headers, ) - contexts.append((pr, builddir.path, review.build_pr(pr))) + contexts.append( + (pr, builddir.path, review.build_pr(pr), review.head_commit) + ) except NixpkgsReviewError as e: warn(f"https://github.com/NixOS/nixpkgs/pull/{pr} failed to build: {e}") assert review is not None all_succeeded = all( review.start_review( - attrs, path, pr, args.post_result, args.print_result, args.approve_pr + commit, + attrs, + path, + pr, + args.post_result, + args.print_result, + args.approve_pr, ) - for pr, path, attrs in contexts + for pr, path, attrs, commit in contexts ) if args.no_shell: diff --git a/nixpkgs_review/report.py b/nixpkgs_review/report.py index a1160e8b..9399f15f 100644 --- a/nixpkgs_review/report.py +++ b/nixpkgs_review/report.py @@ -235,6 +235,7 @@ def to_file_uri(path: Path) -> str: class Report: def __init__( self, + commit: str | None, attrs_per_system: dict[str, list[Attr]], extra_nixpkgs_config: str, only_packages: set[str], @@ -246,6 +247,7 @@ def __init__( *, checkout: Literal["merge", "commit"] = "merge", ) -> None: + self.commit = commit self.show_header = show_header self.max_workers = max_workers self.attrs = attrs_per_system @@ -325,6 +327,8 @@ def markdown(self, pr: int | None) -> str: option_value ) msg += f"Command: `{cmd}`\n" + if self.commit: + msg += f"Commit: `{self.commit}`\n" for system, report in self.system_reports.items(): msg += "\n---\n" diff --git a/nixpkgs_review/review.py b/nixpkgs_review/review.py index e7fddf1d..fd2b14fe 100644 --- a/nixpkgs_review/review.py +++ b/nixpkgs_review/review.py @@ -149,6 +149,7 @@ def __init__( self.extra_nixpkgs_config = extra_nixpkgs_config self.num_parallel_evals = num_parallel_evals self.show_header = show_header + self.head_commit: str | None = None def _process_aliases_for_systems(self, system: str) -> set[str]: match system: @@ -314,6 +315,7 @@ def build( def build_pr(self, pr_number: int) -> dict[System, list[Attr]]: pr = self.github_client.pull_request(pr_number) + self.head_commit = pr["head"]["sha"] packages_per_system: dict[System, set[str]] | None = None if self.use_github_eval: @@ -388,6 +390,7 @@ def build_pr(self, pr_number: int) -> dict[System, list[Attr]]: def start_review( self, + commit: str | None, attrs_per_system: dict[System, list[Attr]], path: Path, pr: int | None = None, @@ -400,6 +403,7 @@ def start_review( if pr: os.environ["PR"] = str(pr) report = Report( + commit, attrs_per_system, self.extra_nixpkgs_config, checkout=self.checkout.name.lower(), # type: ignore[arg-type] @@ -455,6 +459,7 @@ def review_commit( ) -> None: branch_rev = fetch_refs(self.remote, branch)[0] self.start_review( + reviewed_commit, self.build_commit(branch_rev, reviewed_commit, staged), path, print_result=print_result,