Sort recent builds by build number This CL makes Pinpoint CL displaying recent builds in the same order as the web UI. Bug: b/465065368 Change-Id: I3753beb536471165ba4ef4c65fccfa51a27f366c Reviewed-on: https://chromium-review.googlesource.com/c/crossbench/+/7228505 Commit-Queue: Maxim Sheshukov <maximsheshukov@google.com> Reviewed-by: Patrick Thier <pthier@chromium.org>
diff --git a/crossbench/pinpoint/list_builds.py b/crossbench/pinpoint/list_builds.py index 1c136b6..34cf2e5 100644 --- a/crossbench/pinpoint/list_builds.py +++ b/crossbench/pinpoint/list_builds.py
@@ -27,6 +27,7 @@ "%Y-%m-%d %H:%M:%S". """ commit: str + number: int date: str @@ -51,6 +52,7 @@ if build.get("status") != "SUCCESS": continue + number = build.get("number", 0) commit = build.get("input", {}).get("gitilesCommit", {}).get("id") if not commit: continue @@ -64,13 +66,14 @@ logging.warning("Invalid date format: %s", end_time) continue - builds.append(Build(commit, date)) + builds.append(Build(commit=commit, number=number, date=date)) - builds.sort(key=lambda build: build.date, reverse=True) + builds.sort(key=lambda build: build.number, reverse=True) return builds def _display_builds(builds: list[Build]) -> None: - headers = ["Commit", "Date"] - table_data = [[build.commit, format_time(build.date)] for build in builds] - print(tabulate(table_data, headers=headers)) + headers = ["Commit", "Number", "Date"] + table_data = [[build.commit, build.number, + format_time(build.date)] for build in builds] + print(tabulate(table_data, headers=headers, numalign="left"))
diff --git a/tests/crossbench/pinpoint/test_config.py b/tests/crossbench/pinpoint/test_config.py index e8d709b..efb5c20 100644 --- a/tests/crossbench/pinpoint/test_config.py +++ b/tests/crossbench/pinpoint/test_config.py
@@ -29,7 +29,7 @@ self.mock_fetch_builds = self.enterContext( mock.patch("crossbench.pinpoint.config.fetch_builds")) self.mock_fetch_builds.return_value = [ - Build(commit=_TEST_RECENT_COMMIT, date="2025-11-01 00:00:00"), + Build(commit=_TEST_RECENT_COMMIT, number=1, date="2025-11-01 00:00:00"), ] def test_parse_variant(self): @@ -153,7 +153,7 @@ self.mock_fetch_builds = self.enterContext( mock.patch("crossbench.pinpoint.config.fetch_builds")) self.mock_fetch_builds.return_value = [ - Build(commit=_TEST_RECENT_COMMIT, date="2025-11-02 00:00:00"), + Build(commit=_TEST_RECENT_COMMIT, number=1, date="2025-11-02 00:00:00"), ] self.mock_show_warnings = self.enterContext( mock.patch("crossbench.pinpoint.config.show_warnings"))
diff --git a/tests/crossbench/pinpoint/test_list_builds.py b/tests/crossbench/pinpoint/test_list_builds.py index 362ccaa..f3319cb 100644 --- a/tests/crossbench/pinpoint/test_list_builds.py +++ b/tests/crossbench/pinpoint/test_list_builds.py
@@ -35,6 +35,7 @@ } }, "endTime": F"2025-11-1{i}T00:00:00Z", + "number": i, "status": "SUCCESS" } for i in range(3)] } @@ -49,9 +50,9 @@ def test_fetch_builds_contain_correct_builds(self): builds = fetch_builds("test-bot") self.assertEqual(builds, [ - Build(commit="commit2", date="2025-11-12 00:00:00"), - Build(commit="commit1", date="2025-11-11 00:00:00"), - Build(commit="commit0", date="2025-11-10 00:00:00"), + Build(commit="commit2", number=2, date="2025-11-12 00:00:00"), + Build(commit="commit1", number=1, date="2025-11-11 00:00:00"), + Build(commit="commit0", number=0, date="2025-11-10 00:00:00"), ]) def test_list_builds_prints_correct_commit_hashes(self):