@@ -10,18 +10,54 @@ use pretty_assertions::assert_eq;
1010
1111static SETUP : OnceLock < ( PathBuf , PathBuf ) > = OnceLock :: new ( ) ;
1212
13+ fn golden_binary_name ( ) -> & ' static str {
14+ if cfg ! ( windows) {
15+ "bender.exe"
16+ } else {
17+ "bender"
18+ }
19+ }
20+
21+ fn non_empty_env_var ( key : & str ) -> Option < String > {
22+ std:: env:: var ( key) . ok ( ) . filter ( |value| !value. is_empty ( ) )
23+ }
24+
1325fn get_test_env ( ) -> & ' static ( PathBuf , PathBuf ) {
1426 SETUP . get_or_init ( || {
1527 let root = Path :: new ( "target/tmp_regression" ) ;
1628 let install_root = root. join ( "golden_install" ) ;
1729 let repo_dir = Path :: new ( "tests/cli_regression" ) . to_path_buf ( ) ;
1830
31+ if let Some ( prebuilt_bin) = non_empty_env_var ( "BENDER_TEST_GOLDEN_BIN" ) {
32+ let bender_exe = std:: env:: current_dir ( ) . unwrap ( ) . join ( prebuilt_bin) ;
33+ if bender_exe. exists ( ) {
34+ println ! ( "Using prebuilt golden bender binary: {:?}" , bender_exe) ;
35+
36+ let status = SysCommand :: new ( & bender_exe)
37+ . arg ( "checkout" )
38+ . current_dir ( & repo_dir)
39+ . status ( )
40+ . expect ( "Failed to run bender checkout" ) ;
41+ assert ! (
42+ status. success( ) ,
43+ "Failed to initialize common_cells with golden bender"
44+ ) ;
45+
46+ return ( bender_exe, repo_dir) ;
47+ }
48+
49+ println ! (
50+ "Prebuilt golden bender binary not found at {:?}, falling back to cargo install" ,
51+ bender_exe
52+ ) ;
53+ }
54+
1955 // Install Golden Bender
20- let bender_exe = install_root. join ( "bin" ) . join ( "bender" ) ;
56+ let bender_exe = install_root. join ( "bin" ) . join ( golden_binary_name ( ) ) ;
2157
22- let golden_branch = std :: env :: var ( "BENDER_TEST_GOLDEN_BRANCH" )
23- . or_else ( |_| std :: env :: var ( "GITHUB_BASE_REF" ) ) // For GitHub Actions
24- . unwrap_or_else ( |_ | "master" . to_string ( ) ) ;
58+ let golden_branch = non_empty_env_var ( "BENDER_TEST_GOLDEN_BRANCH" )
59+ . or_else ( || non_empty_env_var ( "GITHUB_BASE_REF" ) ) // For GitHub Actions
60+ . unwrap_or_else ( || "master" . to_string ( ) ) ;
2561
2662 println ! ( "Using golden bender branch: {}" , golden_branch) ;
2763
@@ -59,7 +95,7 @@ fn get_test_env() -> &'static (PathBuf, PathBuf) {
5995 "Failed to initialize common_cells with bender"
6096 ) ;
6197
62- ( bender_exe , repo_dir)
98+ ( bender_exe_abs , repo_dir)
6399 } )
64100}
65101
0 commit comments