diff --git a/Library/Homebrew/dev-cmd/prof.rb b/Library/Homebrew/dev-cmd/prof.rb index ce703ac9f9..80b8ae2f8d 100644 --- a/Library/Homebrew/dev-cmd/prof.rb +++ b/Library/Homebrew/dev-cmd/prof.rb @@ -14,6 +14,8 @@ module Homebrew end def prof + prof_args.parse + Homebrew.install_gem_setup_path! "ruby-prof" FileUtils.mkdir_p "prof" brew_rb = (HOMEBREW_LIBRARY_PATH/"brew.rb").resolved_path diff --git a/Library/Homebrew/dev-cmd/test.rb b/Library/Homebrew/dev-cmd/test.rb index 0cf2b8f445..8ddc98c494 100644 --- a/Library/Homebrew/dev-cmd/test.rb +++ b/Library/Homebrew/dev-cmd/test.rb @@ -1,5 +1,4 @@ require "extend/ENV" -require "formula_assertions" require "sandbox" require "timeout" require "cli_parser" @@ -31,8 +30,12 @@ module Homebrew end def test + test_args.parse + raise FormulaUnspecifiedError if ARGV.named.empty? + require "formula_assertions" + ARGV.resolved_formulae.each do |f| # Cannot test uninstalled formulae unless f.installed? diff --git a/Library/Homebrew/test/cmd/shared_examples/args_parse.rb b/Library/Homebrew/test/cmd/shared_examples/args_parse.rb new file mode 100644 index 0000000000..b95b5eb9b5 --- /dev/null +++ b/Library/Homebrew/test/cmd/shared_examples/args_parse.rb @@ -0,0 +1,17 @@ +shared_examples "parseable arguments" do + subject(:method_name) do |example| + example.metadata[:example_group][:parent_example_group][:description] + .gsub(/^Homebrew\./, "") + end + + let(:command_name) do + method_name.gsub(/_args$/, "").tr("_", "-") + end + + it "can parse arguments" do + require "dev-cmd/#{command_name}" unless require? "cmd/#{command_name}" + + expect { Homebrew.send(method_name).parse({}) } + .not_to raise_error + end +end diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index daf5cf6d0e..c8fd7b000e 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -1,5 +1,10 @@ require "dev-cmd/audit" require "formulary" +require "cmd/shared_examples/args_parse" + +describe "Homebrew.audit_args" do + it_behaves_like "parseable arguments" +end module Count def self.increment diff --git a/Library/Homebrew/test/dev-cmd/bottle_spec.rb b/Library/Homebrew/test/dev-cmd/bottle_spec.rb index 135eb507d1..4180796ea1 100644 --- a/Library/Homebrew/test/dev-cmd/bottle_spec.rb +++ b/Library/Homebrew/test/dev-cmd/bottle_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.bottle_args" do + it_behaves_like "parseable arguments" +end + describe "brew bottle", :integration_test do it "builds a bottle for the given Formula" do # create stub patchelf @@ -21,9 +27,13 @@ describe "brew bottle", :integration_test do FileUtils.ln_s "not-exist", "symlink" end - expect { brew "bottle", "--no-rebuild", "testball" } - .to output(/testball--0\.1.*\.bottle\.tar\.gz/).to_stdout - .and not_to_output.to_stderr - .and be_a_success + begin + expect { brew "bottle", "--no-rebuild", "testball" } + .to output(/testball--0\.1.*\.bottle\.tar\.gz/).to_stdout + .and not_to_output.to_stderr + .and be_a_success + ensure + FileUtils.rm_f Dir.glob("testball--0.1*.bottle.tar.gz") + end end end diff --git a/Library/Homebrew/test/dev-cmd/create_spec.rb b/Library/Homebrew/test/dev-cmd/create_spec.rb index 7c85a9f7d1..37d119c039 100644 --- a/Library/Homebrew/test/dev-cmd/create_spec.rb +++ b/Library/Homebrew/test/dev-cmd/create_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.create_args" do + it_behaves_like "parseable arguments" +end + describe "brew create", :integration_test do let(:url) { "file://#{TEST_FIXTURE_DIR}/tarballs/testball-0.1.tbz" } let(:formula_file) { CoreTap.new.formula_dir/"testball.rb" } diff --git a/Library/Homebrew/test/dev-cmd/edit_spec.rb b/Library/Homebrew/test/dev-cmd/edit_spec.rb index 3f557fcdf5..da9f7af210 100644 --- a/Library/Homebrew/test/dev-cmd/edit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/edit_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.edit_args" do + it_behaves_like "parseable arguments" +end + describe "brew edit", :integration_test do it "opens a given Formula in an editor" do HOMEBREW_REPOSITORY.cd do diff --git a/Library/Homebrew/test/dev-cmd/extract_spec.rb b/Library/Homebrew/test/dev-cmd/extract_spec.rb index fe19034f0c..abff3d6d20 100644 --- a/Library/Homebrew/test/dev-cmd/extract_spec.rb +++ b/Library/Homebrew/test/dev-cmd/extract_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.extract_args" do + it_behaves_like "parseable arguments" +end + describe "brew extract", :integration_test do it "retrieves the specified version of formula, defaulting to most recent" do path = Tap::TAP_DIRECTORY/"homebrew/homebrew-foo" diff --git a/Library/Homebrew/test/dev-cmd/formula_spec.rb b/Library/Homebrew/test/dev-cmd/formula_spec.rb index cc5b3e9e84..f64817194c 100644 --- a/Library/Homebrew/test/dev-cmd/formula_spec.rb +++ b/Library/Homebrew/test/dev-cmd/formula_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.formula_args" do + it_behaves_like "parseable arguments" +end + describe "brew formula", :integration_test do it "prints a given Formula's path" do formula_file = setup_test_formula "testball" diff --git a/Library/Homebrew/test/dev-cmd/irb_spec.rb b/Library/Homebrew/test/dev-cmd/irb_spec.rb index 99522394bf..291bdc161a 100644 --- a/Library/Homebrew/test/dev-cmd/irb_spec.rb +++ b/Library/Homebrew/test/dev-cmd/irb_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.irb_args" do + it_behaves_like "parseable arguments" +end + describe "brew irb", :integration_test do it "starts an interactive Homebrew shell session" do setup_test_formula "testball" diff --git a/Library/Homebrew/test/dev-cmd/linkage_spec.rb b/Library/Homebrew/test/dev-cmd/linkage_spec.rb index b0e55104ec..7a0ffa5980 100644 --- a/Library/Homebrew/test/dev-cmd/linkage_spec.rb +++ b/Library/Homebrew/test/dev-cmd/linkage_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.linkage_args" do + it_behaves_like "parseable arguments" +end + describe "brew linkage", :integration_test do before do setup_test_formula "testball" diff --git a/Library/Homebrew/test/dev-cmd/pull_spec.rb b/Library/Homebrew/test/dev-cmd/pull_spec.rb index a13ead381d..aaf11e71f6 100644 --- a/Library/Homebrew/test/dev-cmd/pull_spec.rb +++ b/Library/Homebrew/test/dev-cmd/pull_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.pull_args" do + it_behaves_like "parseable arguments" +end + describe "brew pull", :integration_test do it "fetches a patch from a GitHub commit or pull request and applies it", :needs_network do CoreTap.instance.path.cd do diff --git a/Library/Homebrew/test/dev-cmd/ruby_spec.rb b/Library/Homebrew/test/dev-cmd/ruby_spec.rb index a6179eb3b2..0f65d6888a 100644 --- a/Library/Homebrew/test/dev-cmd/ruby_spec.rb +++ b/Library/Homebrew/test/dev-cmd/ruby_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.ruby_args" do + it_behaves_like "parseable arguments" +end + describe "brew ruby", :integration_test do it "executes ruby code with Homebrew's libraries loaded" do expect { brew "ruby", "-e", "exit 0" } diff --git a/Library/Homebrew/test/dev-cmd/tap-new_spec.rb b/Library/Homebrew/test/dev-cmd/tap-new_spec.rb index 4da0fb025e..868650c7a4 100644 --- a/Library/Homebrew/test/dev-cmd/tap-new_spec.rb +++ b/Library/Homebrew/test/dev-cmd/tap-new_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.tap_new_args" do + it_behaves_like "parseable arguments" +end + describe "brew tap-new", :integration_test do it "initializes a new Tap with a ReadMe file" do expect { brew "tap-new", "homebrew/foo", "--verbose" } diff --git a/Library/Homebrew/test/dev-cmd/tap_spec.rb b/Library/Homebrew/test/dev-cmd/tap_spec.rb index 509d63bbc9..86fd6e0398 100644 --- a/Library/Homebrew/test/dev-cmd/tap_spec.rb +++ b/Library/Homebrew/test/dev-cmd/tap_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.tap_args" do + it_behaves_like "parseable arguments" +end + describe "brew tap", :integration_test do it "taps a given Tap" do path = Tap::TAP_DIRECTORY/"homebrew/homebrew-foo" diff --git a/Library/Homebrew/test/dev-cmd/test_spec.rb b/Library/Homebrew/test/dev-cmd/test_spec.rb index 46d51b0be9..8d6bb479ce 100644 --- a/Library/Homebrew/test/dev-cmd/test_spec.rb +++ b/Library/Homebrew/test/dev-cmd/test_spec.rb @@ -1,3 +1,9 @@ +require "cmd/shared_examples/args_parse" + +describe "Homebrew.test_args" do + it_behaves_like "parseable arguments" +end + describe "brew test", :integration_test do it "tests a given Formula" do install_test_formula "testball", <<~'RUBY' diff --git a/Library/Homebrew/test/spec_helper.rb b/Library/Homebrew/test/spec_helper.rb index e9b8fa6adb..70b2b3d711 100644 --- a/Library/Homebrew/test/spec_helper.rb +++ b/Library/Homebrew/test/spec_helper.rb @@ -191,7 +191,6 @@ RSpec.configure do |config| CoreTap.instance.alias_dir, CoreTap.instance.path/"formula_renames.json", *Pathname.glob("#{HOMEBREW_CELLAR}/*/"), - *Pathname.glob("testball*.bottle.tar.gz"), ] files_after_test = find_files