From ab186266b7bc249696bb081e55746f26f1451682 Mon Sep 17 00:00:00 2001 From: bronzdoc Date: Sun, 18 Aug 2019 14:57:41 -0600 Subject: [PATCH] Build the first gemspec we found if no gemspec is specified --- lib/rubygems/commands/build_command.rb | 10 ++++- .../test_gem_commands_build_command.rb | 39 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/lib/rubygems/commands/build_command.rb b/lib/rubygems/commands/build_command.rb index bc37ab9a949f..69203d3ebca2 100644 --- a/lib/rubygems/commands/build_command.rb +++ b/lib/rubygems/commands/build_command.rb @@ -57,11 +57,19 @@ def usage # :nodoc: end def execute - build_gem + build_gem(gem_name) end private + def gem_name + get_one_optional_argument || find_gemspecs.first + end + + def find_gemspecs + Dir.glob("*.gemspec").sort + end + def build_gem(gem_name = get_one_optional_argument) gemspec = File.exist?(gem_name) ? gem_name : "#{gem_name}.gemspec" diff --git a/test/rubygems/test_gem_commands_build_command.rb b/test/rubygems/test_gem_commands_build_command.rb index 6d44d48c13f4..3edd7d4e4bc3 100644 --- a/test/rubygems/test_gem_commands_build_command.rb +++ b/test/rubygems/test_gem_commands_build_command.rb @@ -242,6 +242,45 @@ def test_can_find_gemspecs_without_dot_gemspec util_test_build_gem @gem end + def test_execute_without_gem_name + some_gem = util_spec "some_gem" do |s| + s.license = "AGPL-3.0" + s.files = ["README.md"] + end + + gemspec_dir = File.join(@tempdir, "build_command_gem") + gemspec_file = File.join(gemspec_dir, some_gem.spec_name) + readme_file = File.join(gemspec_dir, 'README.md') + + FileUtils.mkdir_p(gemspec_dir) + + File.open(readme_file, "w") do |f| + f.write("My awesome gem") + end + + File.open(gemspec_file, "w") do |gs| + gs.write(some_gem.to_ruby) + end + + @cmd.options[:args] = [] + + use_ui @ui do + Dir.chdir(gemspec_dir) do + @cmd.execute + end + end + + output = @ui.output.split("\n") + assert_equal " Successfully built RubyGem", output.shift + assert_equal " Name: some_gem", output.shift + assert_equal " Version: 2", output.shift + assert_equal " File: some_gem-2.gem", output.shift + assert_equal [], output + + some_gem = File.join(gemspec_dir, File.basename(some_gem.cache_file)) + assert File.exist?(some_gem) + end + def util_test_build_gem(gem) use_ui @ui do Dir.chdir @tempdir do