update cmd/uses and cmd/deps tests
These tests were very simple before and now this should result in more code coverage without affecting test performance. The only tricky thing was testing the `--missing` option without actually installing a package using `install_test_formula` because that is very slow (around 10 seconds on my machine). I ended up just writing the tab to a plausible keg directory for each package I wanted to "install". This allows us to test the behavior while also not increasing CI time by ~20 seconds (though it'd probably be faster on CI than my local machine).
This commit is contained in:
		
							parent
							
								
									72152c09c7
								
							
						
					
					
						commit
						5c41e85ae9
					
				@ -6,16 +6,34 @@ describe "brew deps" do
 | 
			
		||||
  it_behaves_like "parseable arguments"
 | 
			
		||||
 | 
			
		||||
  it "outputs all of a Formula's dependencies and their dependencies on separate lines", :integration_test do
 | 
			
		||||
    setup_test_formula "foo"
 | 
			
		||||
    # Included in output
 | 
			
		||||
    setup_test_formula "bar"
 | 
			
		||||
    setup_test_formula "foo"
 | 
			
		||||
    setup_test_formula "test"
 | 
			
		||||
 | 
			
		||||
    # Excluded from output
 | 
			
		||||
    setup_test_formula "baz", <<~RUBY
 | 
			
		||||
      url "https://brew.sh/baz-1.0"
 | 
			
		||||
      depends_on "bar"
 | 
			
		||||
      depends_on "build" => :build
 | 
			
		||||
      depends_on "test" => :test
 | 
			
		||||
      depends_on "optional" => :optional
 | 
			
		||||
      depends_on "recommended_test" => [:recommended, :test]
 | 
			
		||||
      depends_on "installed"
 | 
			
		||||
    RUBY
 | 
			
		||||
    setup_test_formula "build"
 | 
			
		||||
    setup_test_formula "optional"
 | 
			
		||||
    setup_test_formula "recommended_test"
 | 
			
		||||
    setup_test_formula "installed"
 | 
			
		||||
 | 
			
		||||
    expect { brew "deps", "baz" }
 | 
			
		||||
    # Mock `Formula#any_version_installed?` by creating the tab in a plausible keg directory
 | 
			
		||||
    keg_dir = HOMEBREW_CELLAR/"installed"/"1.0"
 | 
			
		||||
    keg_dir.mkpath
 | 
			
		||||
    touch keg_dir/Tab::FILENAME
 | 
			
		||||
 | 
			
		||||
    expect { brew "deps", "baz", "--include-test", "--missing", "--skip-recommended" }
 | 
			
		||||
      .to be_a_success
 | 
			
		||||
      .and output("bar\nfoo\n").to_stdout
 | 
			
		||||
      .and output("bar\nfoo\ntest\n").to_stdout
 | 
			
		||||
      .and not_to_output.to_stderr
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -6,15 +6,37 @@ describe "brew uses" do
 | 
			
		||||
  it_behaves_like "parseable arguments"
 | 
			
		||||
 | 
			
		||||
  it "prints the Formulae a given Formula is used by", :integration_test do
 | 
			
		||||
    setup_test_formula "foo"
 | 
			
		||||
    # Included in output
 | 
			
		||||
    setup_test_formula "bar"
 | 
			
		||||
    setup_test_formula "baz", <<~RUBY
 | 
			
		||||
      url "https://brew.sh/baz-1.0"
 | 
			
		||||
      depends_on "bar"
 | 
			
		||||
    setup_test_formula "optional", <<~RUBY
 | 
			
		||||
      url "https://brew.sh/optional-1.0"
 | 
			
		||||
      depends_on "bar" => :optional
 | 
			
		||||
    RUBY
 | 
			
		||||
 | 
			
		||||
    expect { brew "uses", "--eval-all", "--recursive", "foo" }
 | 
			
		||||
      .to output(/(bar\nbaz|baz\nbar)/).to_stdout
 | 
			
		||||
    # Excluded from output
 | 
			
		||||
    setup_test_formula "foo"
 | 
			
		||||
    setup_test_formula "test", <<~RUBY
 | 
			
		||||
      url "https://brew.sh/test-1.0"
 | 
			
		||||
      depends_on "foo" => :test
 | 
			
		||||
    RUBY
 | 
			
		||||
    setup_test_formula "build", <<~RUBY
 | 
			
		||||
      url "https://brew.sh/build-1.0"
 | 
			
		||||
      depends_on "foo" => :build
 | 
			
		||||
    RUBY
 | 
			
		||||
    setup_test_formula "installed", <<~RUBY
 | 
			
		||||
      url "https://brew.sh/installed-1.0"
 | 
			
		||||
      depends_on "foo"
 | 
			
		||||
    RUBY
 | 
			
		||||
 | 
			
		||||
    # Mock `Formula#any_version_installed?` by creating the tab in a plausible keg directory
 | 
			
		||||
    %w[foo installed].each do |formula_name|
 | 
			
		||||
      keg_dir = HOMEBREW_CELLAR/formula_name/"1.0"
 | 
			
		||||
      keg_dir.mkpath
 | 
			
		||||
      touch keg_dir/Tab::FILENAME
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    expect { brew "uses", "foo", "--eval-all", "--include-optional", "--missing", "--recursive" }
 | 
			
		||||
      .to output(/^(bar\noptional|optional\nbar)$/).to_stdout
 | 
			
		||||
      .and not_to_output.to_stderr
 | 
			
		||||
      .and be_a_success
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@ -166,10 +166,6 @@ RSpec.shared_context "integration test" do # rubocop:disable RSpec/ContextWordin
 | 
			
		||||
 | 
			
		||||
        # something here
 | 
			
		||||
      RUBY
 | 
			
		||||
    when "foo", "gnupg"
 | 
			
		||||
      content = <<~RUBY
 | 
			
		||||
        url "https://brew.sh/#{name}-1.0"
 | 
			
		||||
      RUBY
 | 
			
		||||
    when "bar"
 | 
			
		||||
      content = <<~RUBY
 | 
			
		||||
        url "https://brew.sh/#{name}-1.0"
 | 
			
		||||
@ -180,6 +176,10 @@ RSpec.shared_context "integration test" do # rubocop:disable RSpec/ContextWordin
 | 
			
		||||
        url "https://brew.sh/#patchelf-1.0"
 | 
			
		||||
        license "0BSD"
 | 
			
		||||
      RUBY
 | 
			
		||||
    else
 | 
			
		||||
      content ||= <<~RUBY
 | 
			
		||||
        url "https://brew.sh/#{name}-1.0"
 | 
			
		||||
      RUBY
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    Formulary.core_path(name).tap do |formula_path|
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user