@@ -103,15 +103,11 @@ def setup_mock_ruby(path)
103103 ruby_path = File . join ( tmpdir , 'opt/rubies/3.2.0/bin/ruby' )
104104 setup_mock_ruby ( ruby_path )
105105
106- File . stub :executable? , -> ( path ) {
107- if path == "/opt/rubies/3.2.0/bin/ruby"
108- File . exist? ( ruby_path ) && File . stat ( ruby_path ) . executable?
109- end
110- } do
111- parser = ArgumentParser . new
106+ parser = ArgumentParser . new
107+ parser . stub :chruby_search_paths , -> ( version , rubies_dir ) { [ ruby_path ] } do
112108 args = parser . parse ( [ '--chruby=ruby-3.2.0::3.2.0' ] )
113109
114- assert_equal '/opt/rubies/3.2.0/bin/ruby' , args . executables [ 'ruby-3.2.0' ] . first
110+ assert_equal ruby_path , args . executables [ 'ruby-3.2.0' ] . first
115111 end
116112 end
117113 end
@@ -126,9 +122,11 @@ def setup_mock_ruby(path)
126122 ENV [ 'HOME' ] = tmpdir
127123
128124 parser = ArgumentParser . new
129- args = parser . parse ( [ '--chruby=my-ruby::3.3.0' ] )
125+ parser . stub :chruby_search_paths , -> ( version , rd ) { [ "#{ rd } /#{ version } /bin/ruby" ] } do
126+ args = parser . parse ( [ '--chruby=my-ruby::3.3.0' ] )
130127
131- assert_equal ruby_path , args . executables [ 'my-ruby' ] . first
128+ assert_equal ruby_path , args . executables [ 'my-ruby' ] . first
129+ end
132130 end
133131 end
134132
@@ -143,20 +141,11 @@ def setup_mock_ruby(path)
143141
144142 ENV [ 'HOME' ] = tmpdir
145143
146- File . stub :executable? , -> ( path ) {
147- case path
148- when "/opt/rubies/3.2.0/bin/ruby"
149- File . exist? ( opt_ruby ) && File . stat ( opt_ruby ) . executable?
150- when "#{ tmpdir } /.rubies/3.2.0/bin/ruby"
151- File . exist? ( home_ruby ) && File . stat ( home_ruby ) . executable?
152- else
153- File . method ( :executable? ) . super_method . call ( path )
154- end
155- } do
156- parser = ArgumentParser . new
144+ parser = ArgumentParser . new
145+ parser . stub :chruby_search_paths , -> ( version , rd ) { [ opt_ruby , home_ruby ] } do
157146 args = parser . parse ( [ '--chruby=test::3.2.0' ] )
158147
159- assert_equal '/opt/rubies/3.2.0/bin/ruby' , args . executables [ 'test' ] . first
148+ assert_equal opt_ruby , args . executables [ 'test' ] . first
160149 end
161150 end
162151 end
@@ -171,9 +160,11 @@ def setup_mock_ruby(path)
171160 ENV [ 'RUBIES_DIR' ] = custom_rubies
172161
173162 parser = ArgumentParser . new
174- args = parser . parse ( [ '--chruby=custom::3.4.0' ] )
163+ parser . stub :chruby_search_paths , -> ( version , rd ) { [ "#{ rd } /#{ version } /bin/ruby" ] } do
164+ args = parser . parse ( [ '--chruby=custom::3.4.0' ] )
175165
176- assert_equal ruby_path , args . executables [ 'custom' ] . first
166+ assert_equal ruby_path , args . executables [ 'custom' ] . first
167+ end
177168 end
178169 end
179170
@@ -183,10 +174,11 @@ def setup_mock_ruby(path)
183174 ENV [ 'HOME' ] = tmpdir
184175
185176 parser = ArgumentParser . new
186-
187- assert_raises ( SystemExit ) do
188- capture_io do
189- parser . parse ( [ '--chruby=nonexistent::nonexistent-version-999' ] )
177+ parser . stub :chruby_search_paths , -> ( version , rd ) { [ "#{ rd } /#{ version } /bin/ruby" ] } do
178+ assert_raises ( SystemExit ) do
179+ capture_io do
180+ parser . parse ( [ '--chruby=nonexistent::nonexistent-version-999' ] )
181+ end
190182 end
191183 end
192184 end
@@ -202,10 +194,12 @@ def setup_mock_ruby(path)
202194 ENV [ 'HOME' ] = tmpdir
203195
204196 parser = ArgumentParser . new
205- args = parser . parse ( [ '--chruby=yjit::3.2.0 --yjit' ] )
197+ parser . stub :chruby_search_paths , -> ( version , rd ) { [ "#{ rd } /#{ version } /bin/ruby" ] } do
198+ args = parser . parse ( [ '--chruby=yjit::3.2.0 --yjit' ] )
206199
207- assert_equal ruby_path , args . executables [ 'yjit' ] . first
208- assert_equal '--yjit' , args . executables [ 'yjit' ] . last
200+ assert_equal ruby_path , args . executables [ 'yjit' ] . first
201+ assert_equal '--yjit' , args . executables [ 'yjit' ] . last
202+ end
209203 end
210204 end
211205
@@ -219,10 +213,12 @@ def setup_mock_ruby(path)
219213 ENV [ 'HOME' ] = tmpdir
220214
221215 parser = ArgumentParser . new
222- args = parser . parse ( [ '--chruby=3.2.0 --yjit' ] )
216+ parser . stub :chruby_search_paths , -> ( version , rd ) { [ "#{ rd } /#{ version } /bin/ruby" ] } do
217+ args = parser . parse ( [ '--chruby=3.2.0 --yjit' ] )
223218
224- assert args . executables . key? ( '3.2.0' )
225- assert_equal ruby_path , args . executables [ '3.2.0' ] . first
219+ assert args . executables . key? ( '3.2.0' )
220+ assert_equal ruby_path , args . executables [ '3.2.0' ] . first
221+ end
226222 end
227223 end
228224
@@ -238,12 +234,14 @@ def setup_mock_ruby(path)
238234 ENV [ 'HOME' ] = tmpdir
239235
240236 parser = ArgumentParser . new
241- args = parser . parse ( [ '--chruby=ruby32::3.2.0;ruby33::3.3.0 --yjit' ] )
237+ parser . stub :chruby_search_paths , -> ( version , rd ) { [ "#{ rd } /#{ version } /bin/ruby" ] } do
238+ args = parser . parse ( [ '--chruby=ruby32::3.2.0;ruby33::3.3.0 --yjit' ] )
242239
243- assert_equal 2 , args . executables . size
244- assert_equal ruby_path_32 , args . executables [ 'ruby32' ] . first
245- assert_equal ruby_path_33 , args . executables [ 'ruby33' ] . first
246- assert_equal '--yjit' , args . executables [ 'ruby33' ] . last
240+ assert_equal 2 , args . executables . size
241+ assert_equal ruby_path_32 , args . executables [ 'ruby32' ] . first
242+ assert_equal ruby_path_33 , args . executables [ 'ruby33' ] . first
243+ assert_equal '--yjit' , args . executables [ 'ruby33' ] . last
244+ end
247245 end
248246 end
249247 end
@@ -589,10 +587,12 @@ def setup_mock_ruby(path)
589587 parser = ArgumentParser . new ( ruby_executable : mock_ruby )
590588
591589 parser . stub :have_yjit? , true do
592- args = parser . parse ( [ '--chruby=test::3.2.0' ] )
590+ parser . stub :chruby_search_paths , -> ( version , rd ) { [ "#{ rd } /#{ version } /bin/ruby" ] } do
591+ args = parser . parse ( [ '--chruby=test::3.2.0' ] )
593592
594- assert_equal 1 , args . executables . size
595- assert_equal ruby_path , args . executables [ 'test' ] . first
593+ assert_equal 1 , args . executables . size
594+ assert_equal ruby_path , args . executables [ 'test' ] . first
595+ end
596596 end
597597 end
598598 end
0 commit comments