diff options
Diffstat (limited to 'test/rubygems/test_gem_commands_build_command.rb')
-rw-r--r-- | test/rubygems/test_gem_commands_build_command.rb | 146 |
1 files changed, 80 insertions, 66 deletions
diff --git a/test/rubygems/test_gem_commands_build_command.rb b/test/rubygems/test_gem_commands_build_command.rb index 1304beb580..d44126d204 100644 --- a/test/rubygems/test_gem_commands_build_command.rb +++ b/test/rubygems/test_gem_commands_build_command.rb @@ -1,32 +1,34 @@ # frozen_string_literal: true -require_relative 'helper' -require 'rubygems/commands/build_command' -require 'rubygems/package' + +require_relative "helper" +require "rubygems/commands/build_command" +require "rubygems/package" class TestGemCommandsBuildCommand < Gem::TestCase - CERT_FILE = cert_path 'public3072' - SIGNING_KEY = key_path 'private3072' + CERT_FILE = cert_path "public3072" + SIGNING_KEY = key_path "private3072" - EXPIRED_CERT_FILE = cert_path 'expired' - PRIVATE_KEY_FILE = key_path 'private' + EXPIRED_CERT_FILE = cert_path "expired" + PRIVATE_KEY_FILE = key_path "private" def setup super - readme_file = File.join(@tempdir, 'README.md') + readme_file = File.join(@tempdir, "README.md") begin umask_orig = File.umask(2) - File.open readme_file, 'w' do |f| - f.write 'My awesome gem' + File.open readme_file, "w" do |f| + f.write "My awesome gem" end ensure File.umask(umask_orig) end - @gem = util_spec 'some_gem' do |s| - s.license = 'AGPL-3.0' - s.files = ['README.md'] + @gem = util_spec "some_gem" do |s| + s.license = "AGPL-3.0-only" + s.files = ["README.md"] + s.required_ruby_version = "2.3.0" end @cmd = Gem::Commands::BuildCommand.new @@ -41,10 +43,20 @@ class TestGemCommandsBuildCommand < Gem::TestCase assert_includes Gem.platforms, Gem::Platform.local end + def test_handle_deprecated_options + use_ui @ui do + @cmd.handle_options %w[-C ./test/dir] + end + + assert_equal "WARNING: The \"-C\" option has been deprecated and will be removed in Rubygems 4.0. " \ + "-C is a global flag now. Use `gem -C PATH build GEMSPEC_FILE [options]` instead\n", + @ui.error + end + def test_options_filename gemspec_file = File.join(@tempdir, @gem.spec_name) - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby end @@ -79,7 +91,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase def test_execute gemspec_file = File.join(@tempdir, @gem.spec_name) - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby end @@ -91,7 +103,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase def test_execute_platform gemspec_file = File.join(@tempdir, @gem.spec_name) - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby end @@ -110,15 +122,15 @@ class TestGemCommandsBuildCommand < Gem::TestCase def test_execute_bad_name [".", "-", "_"].each do |special_char| - gem = util_spec 'some_gem_with_bad_name' do |s| + gem = util_spec "some_gem_with_bad_name" do |s| s.name = "#{special_char}bad_gem_name" - s.license = 'AGPL-3.0' - s.files = ['README.md'] + s.license = "AGPL-3.0" + s.files = ["README.md"] end gemspec_file = File.join(@tempdir, gem.spec_name) - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write gem.to_ruby end @@ -137,7 +149,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase def test_execute_strict_without_warnings gemspec_file = File.join(@tempdir, @gem.spec_name) - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby end @@ -165,13 +177,14 @@ class TestGemCommandsBuildCommand < Gem::TestCase end def test_execute_strict_with_warnings - bad_gem = util_spec 'some_bad_gem' do |s| - s.files = ['README.md'] + bad_gem = util_spec "some_bad_gem" do |s| + s.files = ["README.md"] + s.required_ruby_version = ">= 1.9.3" end gemspec_file = File.join(@tempdir, bad_gem.spec_name) - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write bad_gem.to_ruby end @@ -187,8 +200,9 @@ class TestGemCommandsBuildCommand < Gem::TestCase end error = @ui.error.split "\n" - assert_equal "WARNING: licenses is empty, but is recommended. Use a license identifier from", error.shift - assert_equal "http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.", error.shift + assert_equal "WARNING: licenses is empty, but is recommended. Use an license identifier from", error.shift + assert_equal "https://spdx.org/licenses or 'Nonstandard' for a nonstandard license,", error.shift + assert_equal "or set it to nil if you don't want to specify a license.", error.shift assert_equal "WARNING: See https://guides.rubygems.org/specification-reference/ for help", error.shift assert_equal [], error @@ -201,7 +215,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase gemspec_file = File.join(@tempdir, @gem.spec_name) - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby.sub(/11-08/, "11-8") end @@ -218,7 +232,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase assert_equal "", out assert_match(/invalid date format in specification/, err) - assert_equal '', @ui.output + assert_equal "", @ui.output assert_equal "ERROR: Error loading gemspec. Aborting.\n", @ui.error end @@ -230,22 +244,22 @@ class TestGemCommandsBuildCommand < Gem::TestCase end end - assert_equal '', @ui.output + assert_equal "", @ui.output assert_equal "ERROR: Couldn't find a gemspec file matching 'some_gem' in #{@tempdir}\n", @ui.error end def test_execute_outside_dir - gemspec_dir = File.join @tempdir, 'build_command_gem' + gemspec_dir = File.join @tempdir, "build_command_gem" gemspec_file = File.join gemspec_dir, @gem.spec_name - readme_file = File.join gemspec_dir, 'README.md' + readme_file = File.join gemspec_dir, "README.md" FileUtils.mkdir_p gemspec_dir - File.open readme_file, 'w' do |f| + File.open readme_file, "w" do |f| f.write "My awesome gem" end - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby end @@ -273,17 +287,17 @@ class TestGemCommandsBuildCommand < Gem::TestCase end def test_execute_outside_dir_with_glob_argument - gemspec_dir = File.join @tempdir, 'build_command_gem' + gemspec_dir = File.join @tempdir, "build_command_gem" gemspec_file = File.join gemspec_dir, @gem.spec_name - readme_file = File.join gemspec_dir, 'README.md' + readme_file = File.join gemspec_dir, "README.md" FileUtils.mkdir_p gemspec_dir - File.open readme_file, 'w' do |f| + File.open readme_file, "w" do |f| f.write "My awesome gem" end - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby end @@ -311,17 +325,17 @@ class TestGemCommandsBuildCommand < Gem::TestCase end def test_execute_outside_dir_no_gemspec_present - gemspec_dir = File.join @tempdir, 'build_command_gem' + gemspec_dir = File.join @tempdir, "build_command_gem" gemspec_file = File.join @tempdir, @gem.spec_name - readme_file = File.join gemspec_dir, 'README.md' + readme_file = File.join gemspec_dir, "README.md" FileUtils.mkdir_p gemspec_dir - File.open readme_file, 'w' do |f| + File.open readme_file, "w" do |f| f.write "My awesome gem" end - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby end @@ -342,14 +356,14 @@ class TestGemCommandsBuildCommand < Gem::TestCase end def test_execute_outside_dir_without_gem_name - gemspec_dir = File.join(@tempdir, 'build_command_gem') + gemspec_dir = File.join(@tempdir, "build_command_gem") gemspec_file = File.join(gemspec_dir, @gem.spec_name) - readme_file = File.join gemspec_dir, 'README.md' + readme_file = File.join gemspec_dir, "README.md" FileUtils.mkdir_p(gemspec_dir) - File.open readme_file, 'w' do |f| + File.open readme_file, "w" do |f| f.write "My awesome gem" end @@ -383,20 +397,20 @@ class TestGemCommandsBuildCommand < Gem::TestCase end def test_execute_outside_dir_with_external_gemspec - gemspec_dir = File.join @tempdir, 'gemspec_dir' + gemspec_dir = File.join @tempdir, "gemspec_dir" gemspec_file = File.join gemspec_dir, @gem.spec_name - gemcode_dir = File.join @tempdir, 'build_command_gem' - readme_file = File.join gemcode_dir, 'README.md' + gemcode_dir = File.join @tempdir, "build_command_gem" + readme_file = File.join gemcode_dir, "README.md" FileUtils.mkdir_p gemspec_dir FileUtils.mkdir_p gemcode_dir - File.open readme_file, 'w' do |f| + File.open readme_file, "w" do |f| f.write "My awesome gem in nested directory" end - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby end @@ -424,20 +438,20 @@ class TestGemCommandsBuildCommand < Gem::TestCase end def test_execute_outside_dir_with_external_relative_gemspec - gemspec_dir = File.join @tempdir, 'gemspec_dir' + gemspec_dir = File.join @tempdir, "gemspec_dir" gemspec_file = File.join gemspec_dir, @gem.spec_name - gemcode_dir = File.join @tempdir, 'build_command_gem' - readme_file = File.join gemcode_dir, 'README.md' + gemcode_dir = File.join @tempdir, "build_command_gem" + readme_file = File.join gemcode_dir, "README.md" FileUtils.mkdir_p gemspec_dir FileUtils.mkdir_p gemcode_dir - File.open readme_file, 'w' do |f| + File.open readme_file, "w" do |f| f.write "My awesome gem in nested directory" end - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby end @@ -467,7 +481,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase def test_can_find_gemspecs_without_dot_gemspec gemspec_file = File.join(@tempdir, @gem.name) - File.open gemspec_file + ".gemspec", 'w' do |gs| + File.open gemspec_file + ".gemspec", "w" do |gs| gs.write @gem.to_ruby end @@ -571,7 +585,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase @gem.send :remove_instance_variable, :@rubygems_version - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write @gem.to_ruby end @@ -582,18 +596,18 @@ class TestGemCommandsBuildCommand < Gem::TestCase end def test_build_signed_gem - pend 'openssl is missing' unless Gem::HAVE_OPENSSL && !java_platform? + pend "openssl is missing" unless Gem::HAVE_OPENSSL && !Gem.java_platform? trust_dir = Gem::Security.trust_dir - spec = util_spec 'some_gem' do |s| + spec = util_spec "some_gem" do |s| s.signing_key = SIGNING_KEY s.cert_chain = [CERT_FILE] end gemspec_file = File.join(@tempdir, spec.spec_name) - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write spec.to_ruby end @@ -609,7 +623,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase end def test_build_signed_gem_with_cert_expiration_length_days - pend 'openssl is missing' unless Gem::HAVE_OPENSSL && !java_platform? + pend "openssl is missing" unless Gem::HAVE_OPENSSL && !Gem.java_platform? gem_path = File.join Gem.user_home, ".gem" Dir.mkdir gem_path @@ -622,14 +636,14 @@ class TestGemCommandsBuildCommand < Gem::TestCase tmp_private_key_file = File.join gem_path, "gem-private_key.pem" File.write(tmp_private_key_file, File.read(PRIVATE_KEY_FILE)) - spec = util_spec 'some_gem' do |s| + spec = util_spec "some_gem" do |s| s.signing_key = tmp_private_key_file s.cert_chain = [tmp_expired_cert_file] end gemspec_file = File.join(@tempdir, spec.spec_name) - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write spec.to_ruby end @@ -653,7 +667,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase end def test_build_auto_resign_cert - pend 'openssl is missing' unless Gem::HAVE_OPENSSL && !java_platform? + pend "openssl is missing" unless Gem::HAVE_OPENSSL && !Gem.java_platform? gem_path = File.join Gem.user_home, ".gem" Dir.mkdir gem_path @@ -666,14 +680,14 @@ class TestGemCommandsBuildCommand < Gem::TestCase tmp_private_key_file = File.join gem_path, "gem-private_key.pem" File.write(tmp_private_key_file, File.read(PRIVATE_KEY_FILE)) - spec = util_spec 'some_gem' do |s| + spec = util_spec "some_gem" do |s| s.signing_key = tmp_private_key_file s.cert_chain = [tmp_expired_cert_file] end gemspec_file = File.join(@tempdir, spec.spec_name) - File.open gemspec_file, 'w' do |gs| + File.open gemspec_file, "w" do |gs| gs.write spec.to_ruby end @@ -689,7 +703,7 @@ class TestGemCommandsBuildCommand < Gem::TestCase output = @ui.output.split "\n" assert_equal "INFO: Your certificate has expired, trying to re-sign it...", output.shift - assert_equal "INFO: Your cert: #{tmp_expired_cert_file } has been auto re-signed with the key: #{tmp_private_key_file}", output.shift + assert_equal "INFO: Your cert: #{tmp_expired_cert_file} has been auto re-signed with the key: #{tmp_private_key_file}", output.shift assert_match(/INFO: Your expired cert will be located at: .+\Wgem-public_cert\.pem\.expired\.[0-9]+/, output.shift) end |