@@ -141,6 +141,58 @@ def test_custom_name
141141 end
142142 end
143143
144+ def test_linker_args
145+ orig_cc = RbConfig ::MAKEFILE_CONFIG [ "CC" ]
146+ RbConfig ::MAKEFILE_CONFIG [ "CC" ] = "clang"
147+
148+ builder = Gem ::Ext ::CargoBuilder . new
149+ args = builder . send ( :linker_args )
150+
151+ assert args [ 1 ] , "linker=clang"
152+ assert_nil args [ 2 ]
153+ ensure
154+ RbConfig ::MAKEFILE_CONFIG [ "CC" ] = orig_cc
155+ end
156+
157+ def test_linker_args_with_options
158+ orig_cc = RbConfig ::MAKEFILE_CONFIG [ "CC" ]
159+ RbConfig ::MAKEFILE_CONFIG [ "CC" ] = "gcc -Wl,--no-undefined"
160+
161+ builder = Gem ::Ext ::CargoBuilder . new
162+ args = builder . send ( :linker_args )
163+
164+ assert args [ 1 ] , "linker=clang"
165+ assert args [ 3 ] , "link-args=-Wl,--no-undefined"
166+ ensure
167+ RbConfig ::MAKEFILE_CONFIG [ "CC" ] = orig_cc
168+ end
169+
170+ def test_linker_args_with_cachetools
171+ orig_cc = RbConfig ::MAKEFILE_CONFIG [ "CC" ]
172+ RbConfig ::MAKEFILE_CONFIG [ "CC" ] = "sccache clang"
173+
174+ builder = Gem ::Ext ::CargoBuilder . new
175+ args = builder . send ( :linker_args )
176+
177+ assert args [ 1 ] , "linker=clang"
178+ assert_nil args [ 2 ]
179+ ensure
180+ RbConfig ::MAKEFILE_CONFIG [ "CC" ] = orig_cc
181+ end
182+
183+ def test_linker_args_with_cachetools_and_options
184+ orig_cc = RbConfig ::MAKEFILE_CONFIG [ "CC" ]
185+ RbConfig ::MAKEFILE_CONFIG [ "CC" ] = "ccache gcc -Wl,--no-undefined"
186+
187+ builder = Gem ::Ext ::CargoBuilder . new
188+ args = builder . send ( :linker_args )
189+
190+ assert args [ 1 ] , "linker=clang"
191+ assert args [ 3 ] , "link-args=-Wl,--no-undefined"
192+ ensure
193+ RbConfig ::MAKEFILE_CONFIG [ "CC" ] = orig_cc
194+ end
195+
144196 private
145197
146198 def skip_unsupported_platforms!
0 commit comments