summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_ext_cargo_builder_unit.rb
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2022-06-23 11:22:36 +0200
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2022-06-24 10:52:02 +0900
commit12a5fa408bd318f8fb242e86beb225f2dcae8df9 (patch)
treef132650f5999535da69ee998956f260007afd371 /test/rubygems/test_gem_ext_cargo_builder_unit.rb
parent333754ace8ae9bc5d2dfb4aee160fcfa0f38350d (diff)
Sync RubyGems & Bundler with upstream repo
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/6054
Diffstat (limited to 'test/rubygems/test_gem_ext_cargo_builder_unit.rb')
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder_unit.rb75
1 files changed, 75 insertions, 0 deletions
diff --git a/test/rubygems/test_gem_ext_cargo_builder_unit.rb b/test/rubygems/test_gem_ext_cargo_builder_unit.rb
new file mode 100644
index 0000000000..f6712e44a1
--- /dev/null
+++ b/test/rubygems/test_gem_ext_cargo_builder_unit.rb
@@ -0,0 +1,75 @@
+# frozen_string_literal: true
+
+require_relative 'helper'
+require 'rubygems/ext'
+
+class TestGemExtCargoBuilderUnit < Gem::TestCase
+ def test_cargo_command_passes_args
+ skip_unsupported_platforms!
+ spec = Gem::Specification.new 'rust_ruby_example', '0.1.0'
+ builder = Gem::Ext::CargoBuilder.new(spec)
+ command = builder.cargo_command(Dir.pwd, @tempdir, ['--all-features'])
+
+ assert_includes command, '--all-features'
+ end
+
+ def test_cargo_command_locks_in_release_profile
+ skip_unsupported_platforms!
+ spec = Gem::Specification.new 'rust_ruby_example', '0.1.0'
+ builder = Gem::Ext::CargoBuilder.new(spec)
+ builder.profile = :release
+ command = builder.cargo_command(Dir.pwd, @tempdir)
+
+ assert_includes command, '--locked'
+ end
+
+ def test_cargo_command_does_not_lock_in_dev_profile
+ skip_unsupported_platforms!
+ spec = Gem::Specification.new 'rust_ruby_example', '0.1.0'
+ builder = Gem::Ext::CargoBuilder.new(spec)
+ builder.profile = :dev
+ command = builder.cargo_command(Dir.pwd, @tempdir)
+
+ assert_not_includes command, '--locked'
+ end
+
+ def test_cargo_command_passes_respects_cargo_env_var
+ skip_unsupported_platforms!
+ old_cargo = ENV['CARGO']
+ ENV['CARGO'] = 'mycargo'
+ spec = Gem::Specification.new 'rust_ruby_example', '0.1.0'
+ builder = Gem::Ext::CargoBuilder.new(spec)
+ command = builder.cargo_command(Dir.pwd, @tempdir)
+
+ assert_includes command, 'mycargo'
+ ensure
+ ENV['CARGO'] = old_cargo
+ end
+
+ def test_build_env_includes_rbconfig
+ skip_unsupported_platforms!
+ spec = Gem::Specification.new 'rust_ruby_example', '0.1.0'
+ builder = Gem::Ext::CargoBuilder.new(spec)
+ env = builder.build_env
+
+ assert_equal env.fetch('RBCONFIG_RUBY_SO_NAME'), RbConfig::CONFIG['RUBY_SO_NAME']
+ end
+
+ def test_cargo_command_passes_respects_cargo_build_target
+ skip_unsupported_platforms!
+ old_cargo = ENV['CARGO_BUILD_TARGET']
+ ENV['CARGO_BUILD_TARGET'] = 'x86_64-unknown-linux-gnu'
+ spec = Gem::Specification.new 'rust_ruby_example', '0.1.0'
+ builder = Gem::Ext::CargoBuilder.new(spec)
+ command = builder.cargo_command(Dir.pwd, @tempdir, ['--locked'])
+
+ assert_includes command, '--target'
+ assert_includes command, 'x86_64-unknown-linux-gnu'
+ ensure
+ ENV['CARGO_BUILD_TARGET'] = old_cargo
+ end
+
+ def skip_unsupported_platforms!
+ pend "jruby not supported" if java_platform?
+ end
+end