-
Notifications
You must be signed in to change notification settings - Fork 0
Update PR data Daily collection (2025-08-12 01:39 UTC) #154
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughUpdates the JUnit5 candidate datasets: replaces two entries in data/junit5/junit5_candidates.json with Jenkins plugin PRs and updated timestamps, and reorganizes junit5_candidate_prs.txt with a new header date, reordered entries, additions, deletions, and status updates. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Possibly related PRs
Poem
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @gounthar, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request is an automated daily update of the JUnit5 migration pull request statistics. It refreshes the list of open and recently merged/closed PRs related to JUnit5 migrations across various Jenkins plugins, ensuring the data reflects the latest status of these ongoing efforts.
Highlights
- Automated Data Refresh: The pull request automatically updates the
junit5_candidates.jsonandjunit5_candidate_prs.txtfiles, ensuring the tracking data is current. - New PRs Tracked: Several new JUnit5 migration pull requests have been identified and added to the tracking list, expanding the scope of monitored migrations.
- Status Updates and Reordering: Existing entries within the data files have been reordered or removed to reflect their current status (e.g., merged, closed) and maintain data consistency.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.
| Feature | Command | Description |
|---|---|---|
| Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
| Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
| Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
| Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request updates the PR data for JUnit 5 migrations. The data in both data/junit5/junit5_candidates.json and junit5_candidate_prs.txt appears to be incorrectly sorted. The pull requests are not consistently ordered by their creation date, which might be the intended sorting logic. I've added specific comments highlighting this issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (7)
data/junit5/junit5_candidates.json (3)
14-21: Normalize labels to empty array for consistencyMatch the convention proposed above to avoid null handling in downstream code.
- "labels": null, + "labels": [],
144-151: Upstream typos present in body — decide whether to store raw or cleaned textBody contains upstream typos (“particualar”, “its”). If this dataset is user-facing, consider adding a separate normalized “summary” field while keeping “body” raw.
I can add a post-processing step in your workflow to derive a cleaned summary; want me to draft it?
3807-3817: Dependabot bump PR likely out-of-scope — consider excluding or taggingThis is a dependency bump in jenkinsci/bom; it mentions “Migrate tests to JUnit5” only in release notes, not as the PR’s primary intent. If the dataset is for migration candidates, consider excluding it or tagging it as “indirect”.
If you decide to exclude it now, apply this removal (ensure surrounding commas remain valid):
- { - "title": "chore(deps): bump org.jenkins-ci.plugins:basic-branch-build-strategies from 228.v68c089762a_db_ to 275.vde2351b_4a_58b_ in /bom-weekly", - "url": "https://github.com/jenkinsci/bom/pull/5503", - "repository": "jenkinsci/bom", - "state": "MERGED", - "author": "dependabot", - "labels": [ - "developer" - ], - "body": "Bumps org.jvnet.hudson.plugins:instant-messaging from 2.850.ve88c5a_f8b_b_f0 to 2.858.v84187da_c9fa_7.\n\nRelease notes\nSourced from org.jvnet.hudson.plugins:instant-messaging's releases.\n\n275.vde2351b_4a_58b_\n\n🚀 New features and improvements\n\nRemove usages of Commons Lang 2 (#204) @jonesbusy\n\n👻 Maintenance\n\nRequire Jenkins 2.492.3 or newer (#199) @MarkEWaite\n\n🚦 Tests\n\nMigrate tests to JUnit5 (#160) @strangelookingnerd\n\n📦 Dependency updates\n\n... (truncated)", - "createdAt": "2025-08-11T14:07:42Z" - },Alternatively, adjust the pipeline to exclude repos like jenkinsci/bom or require title matches.
junit5_candidate_prs.txt (4)
1-1: Make timestamp unambiguous (include timezone/ISO 8601).The header timestamp lacks an explicit timezone. Use ISO 8601 with Z (UTC) for consistency with the PR title.
-# JUnit 5 migration PR candidates found on 2025-08-12 01:39:59 +# JUnit 5 migration PR candidates found on 2025-08-12T01:39:59Z (UTC)
82-84: Normalize wording: use “Migrate tests to JUnit 5” for consistency.Other entries use “Migrate tests to JUnit 5”. Align this one for uniform querying/grepping.
-# jenkinsci/scm-api-plugin - Upgrade tests to JUnit5 (OPEN) +# jenkinsci/scm-api-plugin - Migrate tests to JUnit 5 (OPEN)
157-159: Consistency: avoid backticks and prefer “JUnit 5”.Other lines don’t quote identifiers and mostly use “JUnit 5” (with a space). Keep style uniform.
-# jenkinsci/docker-fixtures - Add `DockerExtension` to support `DockerContainer` for JUnit5 (OPEN) +# jenkinsci/docker-fixtures - Add DockerExtension to support DockerContainer for JUnit 5 (OPEN)
1021-1023: Optional: keep non-migration infra updates separate for clarity.This BOM dependency bump is useful signal, but mixing infra churn with “migration candidates” makes the file harder to scan. Consider adding a secondary heading (e.g., “Related infra/dependency updates”) and grouping such entries below it in future runs.
I can update the generator to emit a second section and/or add a simple classifier to keep “Migrate tests to JUnit 5” entries at the top. Want me to propose that change?
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
data/junit5/junit5_candidates.json(13 hunks)junit5_candidate_prs.txt(9 hunks)
🔇 Additional comments (15)
data/junit5/junit5_candidates.json (13)
83-102: LGTM on new candidate entriesBoth new entries adhere to the schema and content patterns used elsewhere.
174-182: LGTMEntry is consistent with the dataset format and values.
195-201: LGTMSchema and values look correct; keeping note of RealJenkinsRule exceptions in the body is useful context.
514-522: Infra PR (JUnit5 DockerExtension) — confirm that infra items belong in candidatesThis is an infrastructure change supporting JUnit5 rather than migrating tests. If candidates should be migration PRs only, consider moving infra to a separate collection.
I can refactor the generator to tag entries (migration vs infra) based on heuristics.
597-614: LGTMEntries are consistent; timestamps and fields look fine.
1609-1617: LGTM — status updated to MERGED with labels presentGood to see state transitions tracked.
1621-1629: LGTM — merged entry with maintenance labelConsistent with the rest of the dataset.
2131-2139: LGTMMerged mailer-plugin entry looks correct.
2143-2151: LGTMMerged jobcacher-oras-storage-plugin entry is consistent.
2293-2301: LGTMEntry fields and labels look good.
2316-2326: LGTMMerged docker-java-api-plugin entry is consistent with schema and labeling.
33-41: No duplicate URLs found in junit5_candidates.json
Confirmed thathttps://github.com/jenkinsci/workflow-api-plugin/pull/420only appears once. You can safely reintroduce this entry.
264-272: Inclusion filter is correctly capturing all “JUnit5” titles
Thecontains("junit5")check already matches any title with “JUnit5” (e.g. “Upgrade tests to JUnit5”), so no broadening is needed. Your example PR is not listed by the exclusion script, confirming it’s included as intended.junit5_candidate_prs.txt (2)
13-15: No duplicate or conflicting PR URLs detectedI ran the duplicate-and-status-conflict check against junit5_candidate_prs.txt and found no repeated URLs or mismatched statuses. Everything looks consistent.
4-9: Both top entries are verified as OPEN and URLs resolve successfully
- jenkinsci/bitbucket-branch-source-plugin #1094: state OPEN, HTTP 200
- jenkinsci/ec2-fleet-plugin #485: state OPEN, HTTP 200
No status or URL updates are required.
| "url": "https://github.com/jenkinsci/bitbucket-branch-source-plugin/pull/1094", | ||
| "repository": "jenkinsci/bitbucket-branch-source-plugin", | ||
| "state": "OPEN", | ||
| "author": "strangelookingnerd", | ||
| "labels": null, | ||
| "body": "This PR aims to migrate all tests to JUnit5. Changes include:\n\nMigrate annotations and imports\nMigrate assertions\nRemove public visibility for test classes and methods\nMinor clean up\n\nI am well aware that this is a quite large changeset however I hope that there is still interest in this PR and it will be reviewed.\nIf there are any questions, please do not hesitate to ping me.\nSubmitter checklist\n\n Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!\n Ensure that the pull request title represents the desired changelog entry\n Please describe what you did\n Link to relevant issues in GitHub or Jira\n Link to relevant pull requests, esp. upstream and downstream changes\n Ensure you have provided tests that demonstrate the feature works or the issue is fixed", | ||
| "createdAt": "2025-07-28T10:42:45Z" | ||
| "createdAt": "2025-08-11T08:32:18Z" | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Normalize labels to empty array and run quick data quality checks
Use an empty array instead of null for labels to simplify consumers. Also, please run a quick validation to catch duplicates and schema issues.
Apply this diff:
- "labels": null,
+ "labels": [],Run this script to validate JSON, check duplicates, allowed states, and ISO timestamps:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file="data/junit5/junit5_candidates.json"
# Validate JSON
jq empty "$file"
# Ensure required keys exist for every PR
missing_keys=$(jq -r '
.prs[]
| {title, url, repository, state, author, labels, body, createdAt}
| to_entries
| map(select(.value == null)) as $m
| if ($m|length) > 0 then
("Missing keys: " + (($m|map(.key))|join(",")) + " for url=" + (.url//"unknown"))
else empty end
' "$file")
if [ -n "$missing_keys" ]; then
echo "ERROR: Missing required keys:"
echo "$missing_keys"
exit 1
fi
# Check for duplicate PR URLs
dups=$(jq -r '.prs[].url' "$file" | sort | uniq -d)
if [ -n "$dups" ]; then
echo "ERROR: Duplicate PR URLs detected:"
echo "$dups"
exit 1
fi
# Enforce allowed states
bad_states=$(jq -r '
.prs[] | select(.state != "OPEN" and .state != "MERGED" and .state != "CLOSED") | .url + " -> " + .state
' "$file")
if [ -n "$bad_states" ]; then
echo "ERROR: Unexpected state values:"
echo "$bad_states"
exit 1
fi
# Validate createdAt is ISO 8601
python - <<'PY'
import json, sys
from datetime import datetime
with open("data/junit5/junit5_candidates.json") as f:
data = json.load(f)
bad=[]
for pr in data.get("prs", []):
ts = pr.get("createdAt","")
try:
datetime.fromisoformat(ts.replace("Z","+00:00"))
except Exception:
bad.append((pr.get("url","unknown"), ts))
if bad:
print("ERROR: Non-ISO createdAt timestamps:")
for url, ts in bad:
print(f"{url} -> {ts}")
sys.exit(1)
PY
echo "OK: JSON validated."Length of output: 530
I’m seeing the validation script fail because it assumes the JSON is wrapped in a top-level “prs” object, but the file seems to be an array. Let’s inspect its structure to adjust our checks:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file="data/junit5/junit5_candidates.json"
echo "Top-level JSON type:"
jq 'type' "$file"
echo "Keys of the first element:"
jq '.[0] | keys' "$file"
echo "Total number of elements:"
jq 'length' "$file"Length of output: 371
Let’s first discover how PR entries are nested. This will tell us which key holds the array we need to validate:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file="data/junit5/junit5_candidates.json"
echo "Top‐level entries (key: type):"
jq -r 'to_entries | .[] | "\(.key): \(.value | type)"' "$file"Length of output: 235
Let’s inspect a sample PR object to see which keys it actually contains:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file="data/junit5/junit5_candidates.json"
echo "Sample PR object type:"
jq -r '.prs[0] | type' "$file"
echo "Keys on the first PR:"
jq -r '.prs[0] | keys[]' "$file"
echo "Total number of PRs:"
jq -r '.prs | length' "$file"Length of output: 468
Let’s confirm how many PR entries have labels: null before applying the change:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file="data/junit5/junit5_candidates.json"
echo "Number of PRs with null labels:"
jq '[.prs[] | select(.labels == null)] | length' "$file"
echo "Sample URLs of PRs with null labels:"
jq -r '.prs[] | select(.labels == null) | .url' "$file" | head -n 10Length of output: 1000
Normalize labels to empty arrays and re-validate JSON
- 163 PR entries in
data/junit5/junit5_candidates.jsoncurrently have
"labels": null; replace them with empty arrays to simplify downstream consumers. - Apply this change across all entries:
- "labels": null,
+ "labels": [],- Once updated, rerun the provided validation script to ensure no duplicates, illegal states, or timestamp issues remain.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "url": "https://github.com/jenkinsci/bitbucket-branch-source-plugin/pull/1094", | |
| "repository": "jenkinsci/bitbucket-branch-source-plugin", | |
| "state": "OPEN", | |
| "author": "strangelookingnerd", | |
| "labels": null, | |
| "body": "This PR aims to migrate all tests to JUnit5. Changes include:\n\nMigrate annotations and imports\nMigrate assertions\nRemove public visibility for test classes and methods\nMinor clean up\n\nI am well aware that this is a quite large changeset however I hope that there is still interest in this PR and it will be reviewed.\nIf there are any questions, please do not hesitate to ping me.\nSubmitter checklist\n\n Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!\n Ensure that the pull request title represents the desired changelog entry\n Please describe what you did\n Link to relevant issues in GitHub or Jira\n Link to relevant pull requests, esp. upstream and downstream changes\n Ensure you have provided tests that demonstrate the feature works or the issue is fixed", | |
| "createdAt": "2025-07-28T10:42:45Z" | |
| "createdAt": "2025-08-11T08:32:18Z" | |
| }, | |
| "url": "https://github.com/jenkinsci/bitbucket-branch-source-plugin/pull/1094", | |
| "repository": "jenkinsci/bitbucket-branch-source-plugin", | |
| "state": "OPEN", | |
| "author": "strangelookingnerd", | |
| "labels": [], | |
| "body": "This PR aims to migrate all tests to JUnit5. Changes include:\n\nMigrate annotations and imports\nMigrate assertions\nRemove public visibility for test classes and methods\nMinor clean up\n\nI am well aware that this is a quite large changeset however I hope that there is still interest in this PR and it will be reviewed.\nIf there are any questions, please do not hesitate to ping me.\nSubmitter checklist\n\n Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!\n Ensure that the pull request title represents the desired changelog entry\n Please describe what you did\n Link to relevant issues in GitHub or Jira\n Link to relevant pull requests, esp. upstream and downstream changes\n Ensure you have provided tests that demonstrate the feature works or the issue is fixed", | |
| "createdAt": "2025-08-11T08:32:18Z" | |
| }, |
🤖 Prompt for AI Agents
In data/junit5/junit5_candidates.json around lines 5 to 12, several PR entries
use "labels": null; update every occurrence so that "labels" is an empty array
(i.e., "labels": []), apply this change across all 163 affected entries in the
file, save the file, then run the repository's JSON validation script to
re-validate for duplicates, illegal states, and timestamp issues and fix any
errors the validator reports.
This PR contains automatically updated PR statistics data. Generated by GitHub Actions.
Summary by CodeRabbit
Chores
Documentation