From d5df10cb65329b0ce8a02f12f148c50da09e2563 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Fri, 10 Jul 2026 16:14:09 -0700 Subject: [PATCH 1/2] [rebaseline_tests] Improve commit message for --bump-emsdk. NFC Improve the commit message generated by `rebaseline_tests.py` when running with `--bump-emsdk`: - Pass `old_sha` and `new_sha` (`current_sha` and `installed_sha`) directly to `format_emsdk_version_update()`, rather than reading from disk or querying `git show HEAD:test/emsdk_version.txt`. - Format the list of included emsdk revisions as a markdown list inside a block quote so that automated roll PRs are easier to read on GitHub. - Clearly separate the full revision log URL at the bottom of the message. --- tools/maint/rebaseline_tests.py | 75 +++++++++++++++------------------ 1 file changed, 33 insertions(+), 42 deletions(-) diff --git a/tools/maint/rebaseline_tests.py b/tools/maint/rebaseline_tests.py index cf57ba2ff0166..4c7af379d640f 100755 --- a/tools/maint/rebaseline_tests.py +++ b/tools/maint/rebaseline_tests.py @@ -56,7 +56,7 @@ def get_installed_emsdk_sha(): return parts[1] -def get_emsdk_revision_log(old_sha, new_sha, limit=30): +def format_emsdk_version_update(old_sha, new_sha, limit=30): assert old_sha != 'none' assert old_sha != new_sha log_url = f'https://chromium.googlesource.com/emscripten-releases/+log/{old_sha}..{new_sha}' @@ -66,26 +66,22 @@ def get_emsdk_revision_log(old_sha, new_sha, limit=30): data = data[4:] j = json.loads(data) entries = j.get('log', []) - lines = [f'emsdk_version: {old_sha} => {new_sha} ({log_url})'] - if entries: - lines.append('') - for entry in entries[:limit]: - short_sha = entry['commit'][:8] - subject = entry['message'].splitlines()[0] - lines.append(f' {short_sha} {subject}') - if len(entries) > limit: - lines.append(' ... (and more, see full log)') + lines = [f'emsdk version updated: {old_sha} => {new_sha}'] lines.append('') - return '\n'.join(lines) - + lines.append('This includes the following revisions:') + lines.append('') + lines.append("'''") + for entry in entries[:limit]: + short_sha = entry['commit'][:8] + subject = entry['message'].splitlines()[0] + lines.append(f'- {short_sha} {subject}') + if len(entries) > limit: + lines.append(' ... (and more, see full log)') + lines.append("'''") + lines.append("") + lines.append(f"Full log: {log_url}") -def format_emsdk_version_update(): - filename = 'test/emsdk_version.txt' - content = utils.read_file(filename) - old_content = run(['git', 'show', f'HEAD:{filename}']) - old_sha = old_content.strip() if old_content else 'none' - new_sha = content.strip() - return get_emsdk_revision_log(old_sha, new_sha) + return '\n'.join(lines) def process_changed_file(filename): @@ -123,6 +119,8 @@ def main(): if args.clear_cache: run(['./emcc', '--clear-cache']) + current_sha = None + installed_sha = None if not args.skip_tests: if not args.check_only and run(['git', 'status', '-uno', '--porcelain']).strip(): print('tree is not clean') @@ -137,6 +135,7 @@ def main(): if installed_sha == current_sha: print(f'emsdk version is up-to-date ({current_sha})') return 0 + print(f'update emsdk: {current_sha} => {installed_sha}') utils.write_file(emsdk_version_file, installed_sha + '\n') elif installed_sha and installed_sha != current_sha: utils.exit_with_error(f'installed emsdk version ({installed_sha}) does not match test/emsdk_version.txt ({current_sha}). Pass --bump-emsdk to update it.') @@ -145,52 +144,44 @@ def main(): output = run(['git', 'status', '-uno', '--porcelain']) filenames = [] - emsdk_version_updated = False for line in output.splitlines(): filename = line.strip().rsplit(' ', 1)[1] - if filename == 'test/emsdk_version.txt': - emsdk_version_updated = True - elif filename.startswith('test') and os.path.isfile(filename): + if filename.startswith('test') and os.path.isfile(filename) and filename != 'test/emsdk_version.txt': filenames.append(filename) - if not filenames and not emsdk_version_updated: + if not filenames and not args.bump_emsdk: print('test expectations are up-to-date') return 0 if args.check_only: - message = f'''Test expectations are out-of-date - -The following ({len(filenames)}) test expectation files were updated by -running the tests with `--rebaseline`: - -``` -''' - elif emsdk_version_updated: - message = '''Update emsdk version used in tests + message = 'Test expectations are out-of-date\n' + elif args.bump_emsdk: + message = '''Update emsdk version used in testing This is an automatic change generated by tools/maint/rebaseline_tests.py --bump-emsdk. -``` ''' - message += format_emsdk_version_update() + message += format_emsdk_version_update(current_sha, installed_sha) + '\n' else: - message = f'''Automatic rebaseline of codesize expectations. NFC + message = '''Automatic rebaseline of codesize expectations. NFC This is an automatic change generated by tools/maint/rebaseline_tests.py. +''' + if filenames: + message += f''' The following ({len(filenames)}) test expectation files were updated by running the tests with `--rebaseline`: ``` ''' + for file in sorted(filenames): + message += process_changed_file(file) - for file in sorted(filenames): - message += process_changed_file(file) - - if all_deltas: - message += f'\nAverage change: {statistics.mean(all_deltas):+.2f}% ({min(all_deltas):+.2f}% - {max(all_deltas):+.2f}%)\n' + if all_deltas: + message += f'\nAverage change: {statistics.mean(all_deltas):+.2f}% ({min(all_deltas):+.2f}% - {max(all_deltas):+.2f}%)\n' - message += '```\n' + message += '```\n' print(message) if args.check_only: From 8ce46318e1987d9d9ccbb5e13206e67754b534f7 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Fri, 10 Jul 2026 16:54:20 -0700 Subject: [PATCH 2/2] Update emsdk version used in testing This is an automatic change generated by tools/maint/rebaseline_tests.py --bump-emsdk. emsdk version updated: 9a93926b6aca0b3ce87539c7ff208d3242aa0731 => 5b6cadd24c975a9ba541c7722a7205b37b39f246 This includes the following revisions: ''' - 5b6cadd2 Roll binaryen from 69d28ed6b8b1 to 21822346a32c (1 revision) - 759f0d3a Roll llvm-project from 9a1fe8e03c04 to 7c35673039cf (49 revisions) - 3f30c310 Roll emscripten from f3c99c9c2b0e to 35e6e0e02b11 (1 revision) - fe5ca712 Roll llvm-project from 642b85388cca to 9a1fe8e03c04 (34 revisions) - 67938583 Roll llvm-project from d0339aef5f46 to 642b85388cca (36 revisions) - 6c5be1d0 Roll llvm-project from 880f3d0fbe32 to d0339aef5f46 (19 revisions) - 686fe269 Roll emscripten from d7ab361720aa to f3c99c9c2b0e (3 revisions) - a98a0d71 Roll llvm-project from bba373c7a20c to 880f3d0fbe32 (40 revisions) - 3ec21a0d Roll emscripten from 4237a12a7f61 to d7ab361720aa (5 revisions) - e6e60eaa Roll binaryen from 21a717e8e8b3 to 69d28ed6b8b1 (1 revision) - d5ca2c05 Roll v8 from 474e5320ea63 to f77acb421fea (41 revisions) - b36d433a Roll emscripten from 4627e6510ed0 to 4237a12a7f61 (2 revisions) ''' Full log: https://chromium.googlesource.com/emscripten-releases/+log/9a93926b6aca0b3ce87539c7ff208d3242aa0731..5b6cadd24c975a9ba541c7722a7205b37b39f246 --- tools/maint/rebaseline_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/maint/rebaseline_tests.py b/tools/maint/rebaseline_tests.py index 4c7af379d640f..0b7a2c5ab566a 100755 --- a/tools/maint/rebaseline_tests.py +++ b/tools/maint/rebaseline_tests.py @@ -70,14 +70,14 @@ def format_emsdk_version_update(old_sha, new_sha, limit=30): lines.append('') lines.append('This includes the following revisions:') lines.append('') - lines.append("'''") + lines.append('```') for entry in entries[:limit]: short_sha = entry['commit'][:8] subject = entry['message'].splitlines()[0] lines.append(f'- {short_sha} {subject}') if len(entries) > limit: lines.append(' ... (and more, see full log)') - lines.append("'''") + lines.append('```') lines.append("") lines.append(f"Full log: {log_url}")