From 54682d09bbb552419f67875c0624117070073040 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Mon, 1 Sep 2025 16:02:20 +0200 Subject: [PATCH 01/12] feat(build): Add auto-detection of PR number from GitHub Actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the --pr-number argument is not provided to the build upload command, the PR number is now automatically detected from GitHub Actions environment variables (GITHUB_EVENT_NAME and GITHUB_REF). This enhancement works by: - Checking if GITHUB_EVENT_NAME is "pull_request" - Parsing GITHUB_REF format "refs/pull/{pr_number}/merge" - Extracting the PR number and using it as the default value Includes comprehensive tests to verify the detection logic works correctly for various GitHub Actions scenarios. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/commands/build/upload.rs | 55 ++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/src/commands/build/upload.rs b/src/commands/build/upload.rs index 7be5a2d0a8..4699e62665 100644 --- a/src/commands/build/upload.rs +++ b/src/commands/build/upload.rs @@ -28,6 +28,31 @@ use crate::utils::vcs::{ git_repo_remote_url, }; +fn get_default_pr_number() -> Option { + std::env::var("GITHUB_REF") + .ok() + .and_then(|github_ref| { + if let Ok(event_name) = std::env::var("GITHUB_EVENT_NAME") { + if event_name == "pull_request" && github_ref.starts_with("refs/pull/") { + let pr_number_str = github_ref + .strip_prefix("refs/pull/")? + .split('/') + .next()?; + if let Ok(pr_number) = pr_number_str.parse::() { + debug!("Auto-detected PR number from GitHub Actions: {}", pr_number); + Some(pr_number) + } else { + None + } + } else { + None + } + } else { + None + } + }) +} + pub fn make_command(command: Command) -> Command { #[cfg(all(target_os = "macos", target_arch = "aarch64"))] const HELP_TEXT: &str = @@ -86,7 +111,7 @@ pub fn make_command(command: Command) -> Command { Arg::new("pr_number") .long("pr-number") .value_parser(clap::value_parser!(u32)) - .help("The pull request number to use for the upload. If not provided, the current pull request number will be used.") + .help("The pull request number to use for the upload. If not provided, the PR number will be automatically detected from GitHub Actions environment variables.") ) .arg( Arg::new("build_configuration") @@ -194,7 +219,10 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { let base_repo_name = matches.get_one("base_repo_name").map(String::as_str); let base_sha = matches.get_one("base_sha").map(String::as_str); - let pr_number = matches.get_one::("pr_number"); + let pr_number = matches + .get_one::("pr_number") + .copied() + .or_else(|| get_default_pr_number()); let build_configuration = matches.get_one("build_configuration").map(String::as_str); let release_notes = matches.get_one("release_notes").map(String::as_str); @@ -259,7 +287,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { base_repo_name, head_ref: head_ref.as_deref(), base_ref: base_ref.as_deref(), - pr_number, + pr_number: pr_number.as_ref(), }; match upload_file( &authenticated_api, @@ -618,4 +646,25 @@ mod tests { ); Ok(()) } + + #[test] + fn test_get_default_pr_number() { + std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); + std::env::set_var("GITHUB_REF", "refs/pull/123/merge"); + + let pr_number = get_default_pr_number(); + assert_eq!(pr_number, Some(123)); + + std::env::set_var("GITHUB_EVENT_NAME", "push"); + let pr_number = get_default_pr_number(); + assert_eq!(pr_number, None); + + std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); + std::env::set_var("GITHUB_REF", "refs/heads/main"); + let pr_number = get_default_pr_number(); + assert_eq!(pr_number, None); + + std::env::remove_var("GITHUB_EVENT_NAME"); + std::env::remove_var("GITHUB_REF"); + } } From c56e32ede6f267872261237692af8a7578e6d5d3 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Tue, 2 Sep 2025 13:57:26 +0200 Subject: [PATCH 02/12] fix: Format code and update test snapshots for PR auto-detection - Run cargo fmt to fix code formatting issues - Update help text in test snapshots to match new PR number auto-detection behavior - All build-related tests now pass except one unrelated flaky test --- src/commands/build/upload.rs | 35 ++++++++----------- .../build/build-upload-help-macos.trycmd | 4 +-- .../build/build-upload-help-not-macos.trycmd | 4 +-- 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/src/commands/build/upload.rs b/src/commands/build/upload.rs index 4699e62665..4d08c9ece3 100644 --- a/src/commands/build/upload.rs +++ b/src/commands/build/upload.rs @@ -29,28 +29,23 @@ use crate::utils::vcs::{ }; fn get_default_pr_number() -> Option { - std::env::var("GITHUB_REF") - .ok() - .and_then(|github_ref| { - if let Ok(event_name) = std::env::var("GITHUB_EVENT_NAME") { - if event_name == "pull_request" && github_ref.starts_with("refs/pull/") { - let pr_number_str = github_ref - .strip_prefix("refs/pull/")? - .split('/') - .next()?; - if let Ok(pr_number) = pr_number_str.parse::() { - debug!("Auto-detected PR number from GitHub Actions: {}", pr_number); - Some(pr_number) - } else { - None - } + std::env::var("GITHUB_REF").ok().and_then(|github_ref| { + if let Ok(event_name) = std::env::var("GITHUB_EVENT_NAME") { + if event_name == "pull_request" && github_ref.starts_with("refs/pull/") { + let pr_number_str = github_ref.strip_prefix("refs/pull/")?.split('/').next()?; + if let Ok(pr_number) = pr_number_str.parse::() { + debug!("Auto-detected PR number from GitHub Actions: {}", pr_number); + Some(pr_number) } else { None } } else { None } - }) + } else { + None + } + }) } pub fn make_command(command: Command) -> Command { @@ -651,19 +646,19 @@ mod tests { fn test_get_default_pr_number() { std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); std::env::set_var("GITHUB_REF", "refs/pull/123/merge"); - + let pr_number = get_default_pr_number(); assert_eq!(pr_number, Some(123)); - + std::env::set_var("GITHUB_EVENT_NAME", "push"); let pr_number = get_default_pr_number(); assert_eq!(pr_number, None); - + std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); std::env::set_var("GITHUB_REF", "refs/heads/main"); let pr_number = get_default_pr_number(); assert_eq!(pr_number, None); - + std::env::remove_var("GITHUB_EVENT_NAME"); std::env::remove_var("GITHUB_REF"); } diff --git a/tests/integration/_cases/build/build-upload-help-macos.trycmd b/tests/integration/_cases/build/build-upload-help-macos.trycmd index 42bd371b76..62df3d4365 100644 --- a/tests/integration/_cases/build/build-upload-help-macos.trycmd +++ b/tests/integration/_cases/build/build-upload-help-macos.trycmd @@ -45,8 +45,8 @@ Options: The base reference (branch) to use for the upload. If not provided, the merge-base with the remote tracking branch will be used. --pr-number - The pull request number to use for the upload. If not provided, the current pull request - number will be used. + The pull request number to use for the upload. If not provided, the PR number will be + automatically detected from GitHub Actions environment variables. --build-configuration The build configuration to use for the upload. If not provided, the current version will be used. diff --git a/tests/integration/_cases/build/build-upload-help-not-macos.trycmd b/tests/integration/_cases/build/build-upload-help-not-macos.trycmd index 25518253d5..98fc527519 100644 --- a/tests/integration/_cases/build/build-upload-help-not-macos.trycmd +++ b/tests/integration/_cases/build/build-upload-help-not-macos.trycmd @@ -44,8 +44,8 @@ Options: The base reference (branch) to use for the upload. If not provided, the merge-base with the remote tracking branch will be used. --pr-number - The pull request number to use for the upload. If not provided, the current pull request - number will be used. + The pull request number to use for the upload. If not provided, the PR number will be + automatically detected from GitHub Actions environment variables. --build-configuration The build configuration to use for the upload. If not provided, the current version will be used. From 4046833d4a3598e2aa8b6023db068c62b95e27b1 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Tue, 2 Sep 2025 14:30:15 +0200 Subject: [PATCH 03/12] fix: Remove redundant closure in PR number detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes clippy warning by removing unnecessary closure wrapper around get_default_pr_number function call. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/commands/build/upload.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/build/upload.rs b/src/commands/build/upload.rs index 4d08c9ece3..5dc5215492 100644 --- a/src/commands/build/upload.rs +++ b/src/commands/build/upload.rs @@ -217,7 +217,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { let pr_number = matches .get_one::("pr_number") .copied() - .or_else(|| get_default_pr_number()); + .or_else(get_default_pr_number); let build_configuration = matches.get_one("build_configuration").map(String::as_str); let release_notes = matches.get_one("release_notes").map(String::as_str); From b9fd2989b1236ec2db02fa36de607bd6046d609b Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 3 Sep 2025 14:31:31 +0200 Subject: [PATCH 04/12] Address PR feedback: improve get_github_pr_number function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename function from get_default_pr_number to get_github_pr_number for clarity - Simplify nested conditional logic for better readability - Add qualifier to help text about GitHub Actions environment requirement - Move function from upload.rs to vcs.rs for better organization 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/commands/build/upload.rs | 34 +++++++--------------------------- src/utils/vcs.rs | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/commands/build/upload.rs b/src/commands/build/upload.rs index 5dc5215492..56fe7a5484 100644 --- a/src/commands/build/upload.rs +++ b/src/commands/build/upload.rs @@ -24,30 +24,10 @@ use crate::utils::fs::TempDir; use crate::utils::fs::TempFile; use crate::utils::progress::ProgressBar; use crate::utils::vcs::{ - self, get_provider_from_remote, get_repo_from_remote, git_repo_base_ref, git_repo_head_ref, + self, get_github_pr_number, get_provider_from_remote, get_repo_from_remote, git_repo_base_ref, git_repo_head_ref, git_repo_remote_url, }; -fn get_default_pr_number() -> Option { - std::env::var("GITHUB_REF").ok().and_then(|github_ref| { - if let Ok(event_name) = std::env::var("GITHUB_EVENT_NAME") { - if event_name == "pull_request" && github_ref.starts_with("refs/pull/") { - let pr_number_str = github_ref.strip_prefix("refs/pull/")?.split('/').next()?; - if let Ok(pr_number) = pr_number_str.parse::() { - debug!("Auto-detected PR number from GitHub Actions: {}", pr_number); - Some(pr_number) - } else { - None - } - } else { - None - } - } else { - None - } - }) -} - pub fn make_command(command: Command) -> Command { #[cfg(all(target_os = "macos", target_arch = "aarch64"))] const HELP_TEXT: &str = @@ -106,7 +86,7 @@ pub fn make_command(command: Command) -> Command { Arg::new("pr_number") .long("pr-number") .value_parser(clap::value_parser!(u32)) - .help("The pull request number to use for the upload. If not provided, the PR number will be automatically detected from GitHub Actions environment variables.") + .help("The pull request number to use for the upload. If not provided and running in a GitHub Actions environment, the PR number will be automatically detected from GitHub Actions environment variables.") ) .arg( Arg::new("build_configuration") @@ -217,7 +197,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { let pr_number = matches .get_one::("pr_number") .copied() - .or_else(get_default_pr_number); + .or_else(get_github_pr_number); let build_configuration = matches.get_one("build_configuration").map(String::as_str); let release_notes = matches.get_one("release_notes").map(String::as_str); @@ -643,20 +623,20 @@ mod tests { } #[test] - fn test_get_default_pr_number() { + fn test_get_github_pr_number() { std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); std::env::set_var("GITHUB_REF", "refs/pull/123/merge"); - let pr_number = get_default_pr_number(); + let pr_number = get_github_pr_number(); assert_eq!(pr_number, Some(123)); std::env::set_var("GITHUB_EVENT_NAME", "push"); - let pr_number = get_default_pr_number(); + let pr_number = get_github_pr_number(); assert_eq!(pr_number, None); std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); std::env::set_var("GITHUB_REF", "refs/heads/main"); - let pr_number = get_default_pr_number(); + let pr_number = get_github_pr_number(); assert_eq!(pr_number, None); std::env::remove_var("GITHUB_EVENT_NAME"); diff --git a/src/utils/vcs.rs b/src/utils/vcs.rs index 5e84a10a36..6d84c167ea 100644 --- a/src/utils/vcs.rs +++ b/src/utils/vcs.rs @@ -283,6 +283,23 @@ fn find_merge_base_ref( Ok(merge_base_sha) } +/// Attempts to get the PR number from GitHub Actions environment variables. +/// Returns the PR number if running in a GitHub Actions pull request environment. +pub fn get_github_pr_number() -> Option { + let github_ref = std::env::var("GITHUB_REF").ok()?; + let event_name = std::env::var("GITHUB_EVENT_NAME").ok()?; + + if event_name != "pull_request" || !github_ref.starts_with("refs/pull/") { + return None; + } + + let pr_number_str = github_ref.strip_prefix("refs/pull/")?.split('/').next()?; + + let pr_number = pr_number_str.parse::().ok()?; + debug!("Auto-detected PR number from GitHub Actions: {}", pr_number); + Some(pr_number) +} + fn find_reference_url(repo: &str, repos: &[Repo]) -> Result> { let mut non_git = false; for configured_repo in repos { From 5509fd98db9e7925626686f3e1da141a05294c78 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 3 Sep 2025 14:53:18 +0200 Subject: [PATCH 05/12] Update integration tests for help text changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update test expectations to match the improved help text that clarifies GitHub Actions environment requirement for PR auto-detection. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../integration/_cases/build/build-upload-help-macos.trycmd | 5 +++-- .../_cases/build/build-upload-help-not-macos.trycmd | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/integration/_cases/build/build-upload-help-macos.trycmd b/tests/integration/_cases/build/build-upload-help-macos.trycmd index 62df3d4365..45bbb2134d 100644 --- a/tests/integration/_cases/build/build-upload-help-macos.trycmd +++ b/tests/integration/_cases/build/build-upload-help-macos.trycmd @@ -45,8 +45,9 @@ Options: The base reference (branch) to use for the upload. If not provided, the merge-base with the remote tracking branch will be used. --pr-number - The pull request number to use for the upload. If not provided, the PR number will be - automatically detected from GitHub Actions environment variables. + The pull request number to use for the upload. If not provided and running in a GitHub + Actions environment, the PR number will be automatically detected from GitHub Actions + environment variables. --build-configuration The build configuration to use for the upload. If not provided, the current version will be used. diff --git a/tests/integration/_cases/build/build-upload-help-not-macos.trycmd b/tests/integration/_cases/build/build-upload-help-not-macos.trycmd index 98fc527519..3efc76a69c 100644 --- a/tests/integration/_cases/build/build-upload-help-not-macos.trycmd +++ b/tests/integration/_cases/build/build-upload-help-not-macos.trycmd @@ -44,8 +44,9 @@ Options: The base reference (branch) to use for the upload. If not provided, the merge-base with the remote tracking branch will be used. --pr-number - The pull request number to use for the upload. If not provided, the PR number will be - automatically detected from GitHub Actions environment variables. + The pull request number to use for the upload. If not provided and running in a GitHub + Actions environment, the PR number will be automatically detected from GitHub Actions + environment variables. --build-configuration The build configuration to use for the upload. If not provided, the current version will be used. From 1a4e17147e079d7b0f2accdac09373d5b2aa8c14 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Mon, 8 Sep 2025 09:28:57 +0200 Subject: [PATCH 06/12] Address review feedback: add debug logging and simplify PR parsing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add debug logging for failure points in get_github_pr_number - Remove explicit type annotation from parse() call - Remove redundant starts_with check since strip_prefix handles it 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/utils/vcs.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/utils/vcs.rs b/src/utils/vcs.rs index 6d84c167ea..d2579ce22c 100644 --- a/src/utils/vcs.rs +++ b/src/utils/vcs.rs @@ -289,13 +289,18 @@ pub fn get_github_pr_number() -> Option { let github_ref = std::env::var("GITHUB_REF").ok()?; let event_name = std::env::var("GITHUB_EVENT_NAME").ok()?; - if event_name != "pull_request" || !github_ref.starts_with("refs/pull/") { + if event_name != "pull_request" { + debug!("Not running in pull_request event, got: {}", event_name); return None; } - let pr_number_str = github_ref.strip_prefix("refs/pull/")?.split('/').next()?; + let pr_number_str = github_ref.strip_prefix("refs/pull/")?; + debug!("Extracted PR reference: {}", pr_number_str); + + let pr_number_str = pr_number_str.split('/').next()?; + debug!("Parsing PR number from: {}", pr_number_str); - let pr_number = pr_number_str.parse::().ok()?; + let pr_number = pr_number_str.parse().ok()?; debug!("Auto-detected PR number from GitHub Actions: {}", pr_number); Some(pr_number) } From c4f4bfd57c32a6a9287d9948fdd77af3e8192b7b Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Mon, 8 Sep 2025 09:44:40 +0200 Subject: [PATCH 07/12] Update integration tests for help text changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Split long help string across multiple lines using backslashes - Clarify that PR number detection only works in pull_request-triggered workflows 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/commands/build/upload.rs | 25 +++---------------------- src/utils/vcs.rs | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/commands/build/upload.rs b/src/commands/build/upload.rs index 56fe7a5484..fa0498e529 100644 --- a/src/commands/build/upload.rs +++ b/src/commands/build/upload.rs @@ -86,7 +86,9 @@ pub fn make_command(command: Command) -> Command { Arg::new("pr_number") .long("pr-number") .value_parser(clap::value_parser!(u32)) - .help("The pull request number to use for the upload. If not provided and running in a GitHub Actions environment, the PR number will be automatically detected from GitHub Actions environment variables.") + .help("The pull request number to use for the upload. If not provided and running \ + in a pull_request-triggered GitHub Actions workflow, the PR number will be automatically \ + detected from GitHub Actions environment variables.") ) .arg( Arg::new("build_configuration") @@ -621,25 +623,4 @@ mod tests { ); Ok(()) } - - #[test] - fn test_get_github_pr_number() { - std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); - std::env::set_var("GITHUB_REF", "refs/pull/123/merge"); - - let pr_number = get_github_pr_number(); - assert_eq!(pr_number, Some(123)); - - std::env::set_var("GITHUB_EVENT_NAME", "push"); - let pr_number = get_github_pr_number(); - assert_eq!(pr_number, None); - - std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); - std::env::set_var("GITHUB_REF", "refs/heads/main"); - let pr_number = get_github_pr_number(); - assert_eq!(pr_number, None); - - std::env::remove_var("GITHUB_EVENT_NAME"); - std::env::remove_var("GITHUB_REF"); - } } diff --git a/src/utils/vcs.rs b/src/utils/vcs.rs index d2579ce22c..001d29626a 100644 --- a/src/utils/vcs.rs +++ b/src/utils/vcs.rs @@ -1300,3 +1300,20 @@ fn test_git_repo_head_ref() { "HEAD is detached - no branch reference available" ); } + +#[test] +fn test_get_github_pr_number() { + std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); + std::env::set_var("GITHUB_REF", "refs/pull/123/merge"); + let pr_number = get_github_pr_number(); + assert_eq!(pr_number, Some(123)); + std::env::set_var("GITHUB_EVENT_NAME", "push"); + let pr_number = get_github_pr_number(); + assert_eq!(pr_number, None); + std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); + std::env::set_var("GITHUB_REF", "refs/heads/main"); + let pr_number = get_github_pr_number(); + assert_eq!(pr_number, None); + std::env::remove_var("GITHUB_EVENT_NAME"); + std::env::remove_var("GITHUB_REF"); +} From 9dabcbbb4e7b749fd2d4c12afa1e701d62b50e1d Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Mon, 8 Sep 2025 09:46:58 +0200 Subject: [PATCH 08/12] Format code and update test snapshots for PR auto-detection --- src/utils/vcs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/vcs.rs b/src/utils/vcs.rs index 001d29626a..2bed7b4ab2 100644 --- a/src/utils/vcs.rs +++ b/src/utils/vcs.rs @@ -296,7 +296,7 @@ pub fn get_github_pr_number() -> Option { let pr_number_str = github_ref.strip_prefix("refs/pull/")?; debug!("Extracted PR reference: {}", pr_number_str); - + let pr_number_str = pr_number_str.split('/').next()?; debug!("Parsing PR number from: {}", pr_number_str); From 3a423641d40670f0313b7213c544d1edb76d76aa Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Mon, 8 Sep 2025 09:58:20 +0200 Subject: [PATCH 09/12] fix: Update integration tests for help text changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The help text for --pr-number option was updated to be more specific about pull_request-triggered workflows, so the integration test snapshot needed to be updated to match. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../integration/_cases/build/build-upload-help-macos.trycmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/integration/_cases/build/build-upload-help-macos.trycmd b/tests/integration/_cases/build/build-upload-help-macos.trycmd index 45bbb2134d..77f4086934 100644 --- a/tests/integration/_cases/build/build-upload-help-macos.trycmd +++ b/tests/integration/_cases/build/build-upload-help-macos.trycmd @@ -45,9 +45,9 @@ Options: The base reference (branch) to use for the upload. If not provided, the merge-base with the remote tracking branch will be used. --pr-number - The pull request number to use for the upload. If not provided and running in a GitHub - Actions environment, the PR number will be automatically detected from GitHub Actions - environment variables. + The pull request number to use for the upload. If not provided and running in a + pull_request-triggered GitHub Actions workflow, the PR number will be automatically + detected from GitHub Actions environment variables. --build-configuration The build configuration to use for the upload. If not provided, the current version will be used. From b2f7057ace88e6d9239e84531a3ff8cc9518f224 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Mon, 8 Sep 2025 10:04:57 +0200 Subject: [PATCH 10/12] fix: Update not-macos integration test for help text changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update the build-upload-help-not-macos.trycmd test snapshot to match the updated help text that specifies pull_request-triggered workflows. This should fix the failing tests on Linux, Windows, and macOS x86_64. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../_cases/build/build-upload-help-not-macos.trycmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/integration/_cases/build/build-upload-help-not-macos.trycmd b/tests/integration/_cases/build/build-upload-help-not-macos.trycmd index 3efc76a69c..177c314edf 100644 --- a/tests/integration/_cases/build/build-upload-help-not-macos.trycmd +++ b/tests/integration/_cases/build/build-upload-help-not-macos.trycmd @@ -44,9 +44,9 @@ Options: The base reference (branch) to use for the upload. If not provided, the merge-base with the remote tracking branch will be used. --pr-number - The pull request number to use for the upload. If not provided and running in a GitHub - Actions environment, the PR number will be automatically detected from GitHub Actions - environment variables. + The pull request number to use for the upload. If not provided and running in a + pull_request-triggered GitHub Actions workflow, the PR number will be automatically + detected from GitHub Actions environment variables. --build-configuration The build configuration to use for the upload. If not provided, the current version will be used. From 54f47bda177b94637fbccb1aa164a68210941f73 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Mon, 8 Sep 2025 12:51:52 +0200 Subject: [PATCH 11/12] Address remaining review feedback from szokeasaurusrex MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove explicit type annotation from get_one() call - Move test into proper mod tests block with #[cfg(test)] Addresses the final review comments on the PR. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/commands/build/upload.rs | 2 +- src/utils/vcs.rs | 35 ++++++++++++++++++++--------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/commands/build/upload.rs b/src/commands/build/upload.rs index fa0498e529..afbe95a4b1 100644 --- a/src/commands/build/upload.rs +++ b/src/commands/build/upload.rs @@ -197,7 +197,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { let base_repo_name = matches.get_one("base_repo_name").map(String::as_str); let base_sha = matches.get_one("base_sha").map(String::as_str); let pr_number = matches - .get_one::("pr_number") + .get_one("pr_number") .copied() .or_else(get_github_pr_number); diff --git a/src/utils/vcs.rs b/src/utils/vcs.rs index 2bed7b4ab2..9fb1d1da89 100644 --- a/src/utils/vcs.rs +++ b/src/utils/vcs.rs @@ -1301,19 +1301,24 @@ fn test_git_repo_head_ref() { ); } -#[test] -fn test_get_github_pr_number() { - std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); - std::env::set_var("GITHUB_REF", "refs/pull/123/merge"); - let pr_number = get_github_pr_number(); - assert_eq!(pr_number, Some(123)); - std::env::set_var("GITHUB_EVENT_NAME", "push"); - let pr_number = get_github_pr_number(); - assert_eq!(pr_number, None); - std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); - std::env::set_var("GITHUB_REF", "refs/heads/main"); - let pr_number = get_github_pr_number(); - assert_eq!(pr_number, None); - std::env::remove_var("GITHUB_EVENT_NAME"); - std::env::remove_var("GITHUB_REF"); +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_get_github_pr_number() { + std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); + std::env::set_var("GITHUB_REF", "refs/pull/123/merge"); + let pr_number = get_github_pr_number(); + assert_eq!(pr_number, Some(123)); + std::env::set_var("GITHUB_EVENT_NAME", "push"); + let pr_number = get_github_pr_number(); + assert_eq!(pr_number, None); + std::env::set_var("GITHUB_EVENT_NAME", "pull_request"); + std::env::set_var("GITHUB_REF", "refs/heads/main"); + let pr_number = get_github_pr_number(); + assert_eq!(pr_number, None); + std::env::remove_var("GITHUB_EVENT_NAME"); + std::env::remove_var("GITHUB_REF"); + } } From 69fafe21ad4eedaf1701a3ad8438db8918e82ee7 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Tue, 9 Sep 2025 14:24:19 +0200 Subject: [PATCH 12/12] Format code --- src/commands/build/upload.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/build/upload.rs b/src/commands/build/upload.rs index afbe95a4b1..1406b672b2 100644 --- a/src/commands/build/upload.rs +++ b/src/commands/build/upload.rs @@ -24,8 +24,8 @@ use crate::utils::fs::TempDir; use crate::utils::fs::TempFile; use crate::utils::progress::ProgressBar; use crate::utils::vcs::{ - self, get_github_pr_number, get_provider_from_remote, get_repo_from_remote, git_repo_base_ref, git_repo_head_ref, - git_repo_remote_url, + self, get_github_pr_number, get_provider_from_remote, get_repo_from_remote, git_repo_base_ref, + git_repo_head_ref, git_repo_remote_url, }; pub fn make_command(command: Command) -> Command {