diff options
Diffstat (limited to 'Library/Homebrew/test/cmd')
| -rw-r--r-- | Library/Homebrew/test/cmd/--cache_spec.rb | 15 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/--env_spec.rb | 44 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/cat_spec.rb | 11 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/cleanup_spec.rb | 12 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/command_spec.rb | 13 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/config_spec.rb | 8 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/desc_spec.rb | 40 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/link_spec.rb | 56 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/log_spec.rb | 41 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/migrate_spec.rb | 46 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/options_spec.rb | 12 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/reinstall_spec.rb | 47 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/search_spec.rb | 57 | ||||
| -rw-r--r-- | Library/Homebrew/test/cmd/sh_spec.rb | 8 | 
14 files changed, 410 insertions, 0 deletions
diff --git a/Library/Homebrew/test/cmd/--cache_spec.rb b/Library/Homebrew/test/cmd/--cache_spec.rb new file mode 100644 index 000000000..fb3c9cee6 --- /dev/null +++ b/Library/Homebrew/test/cmd/--cache_spec.rb @@ -0,0 +1,15 @@ +describe "brew --cache", :integration_test do +  it "print the location of Homebrew's cache when no argument is given" do +    expect { brew "--cache" } +      .to output("#{HOMEBREW_CACHE}\n").to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end + +  it "prints all cache files for a given Formula" do +    expect { brew "--cache", testball } +      .to output(%r{#{HOMEBREW_CACHE}/testball-}).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end +end diff --git a/Library/Homebrew/test/cmd/--env_spec.rb b/Library/Homebrew/test/cmd/--env_spec.rb new file mode 100644 index 000000000..7dd84132a --- /dev/null +++ b/Library/Homebrew/test/cmd/--env_spec.rb @@ -0,0 +1,44 @@ +describe "brew --env", :integration_test do +  it "prints the Homebrew build environment variables" do +    expect { brew "--env" } +      .to output(/CMAKE_PREFIX_PATH="#{Regexp.escape(HOMEBREW_PREFIX)}[:"]/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end + +  describe "--shell=bash" do +    it "prints the Homebrew build environment variables in Bash syntax" do +      expect { brew "--env", "--shell=bash" } +        .to output(/export CMAKE_PREFIX_PATH="#{Regexp.quote(HOMEBREW_PREFIX.to_s)}"/).to_stdout +        .and not_to_output.to_stderr +        .and be_a_success +    end +  end + +  describe "--shell=fish" do +    it "prints the Homebrew build environment variables in Fish syntax" do +      expect { brew "--env", "--shell=fish" } +        .to output(/set [-]gx CMAKE_PREFIX_PATH "#{Regexp.quote(HOMEBREW_PREFIX.to_s)}"/).to_stdout +        .and not_to_output.to_stderr +        .and be_a_success +    end +  end + +  describe "--shell=tcsh" do +    it "prints the Homebrew build environment variables in Tcsh syntax" do +      expect { brew "--env", "--shell=tcsh" } +        .to output(/setenv CMAKE_PREFIX_PATH #{Regexp.quote(HOMEBREW_PREFIX.to_s)};/).to_stdout +        .and not_to_output.to_stderr +        .and be_a_success +    end +  end + +  describe "--plain" do +    it "prints the Homebrew build environment variables without quotes" do +      expect { brew "--env", "--plain" } +        .to output(/CMAKE_PREFIX_PATH: #{Regexp.quote(HOMEBREW_PREFIX)}/).to_stdout +        .and not_to_output.to_stderr +        .and be_a_success +    end +  end +end diff --git a/Library/Homebrew/test/cmd/cat_spec.rb b/Library/Homebrew/test/cmd/cat_spec.rb new file mode 100644 index 000000000..8c230abee --- /dev/null +++ b/Library/Homebrew/test/cmd/cat_spec.rb @@ -0,0 +1,11 @@ +describe "brew cat", :integration_test do +  it "prints the content of a given Formula" do +    formula_file = setup_test_formula "testball" +    content = formula_file.read + +    expect { brew "cat", "testball" } +      .to output(content).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end +end diff --git a/Library/Homebrew/test/cmd/cleanup_spec.rb b/Library/Homebrew/test/cmd/cleanup_spec.rb new file mode 100644 index 000000000..9e2cf493f --- /dev/null +++ b/Library/Homebrew/test/cmd/cleanup_spec.rb @@ -0,0 +1,12 @@ +describe "brew cleanup", :integration_test do +  describe "--prune=all" do +    it "removes all files in Homebrew's cache" do +      (HOMEBREW_CACHE/"test").write "test" + +      expect { brew "cleanup", "--prune=all" } +        .to output(%r{#{Regexp.escape(HOMEBREW_CACHE)}/test}).to_stdout +        .and not_to_output.to_stderr +        .and be_a_success +    end +  end +end diff --git a/Library/Homebrew/test/cmd/command_spec.rb b/Library/Homebrew/test/cmd/command_spec.rb new file mode 100644 index 000000000..5d6a67b70 --- /dev/null +++ b/Library/Homebrew/test/cmd/command_spec.rb @@ -0,0 +1,13 @@ +describe "brew command", :integration_test do +  it "returns the file for a given command" do +    expect { brew "command", "info" } +      .to output(%r{#{Regexp.escape(HOMEBREW_LIBRARY_PATH)}/cmd/info.rb}).to_stdout +      .and be_a_success +  end + +  it "fails when the given command is unknown" do +    expect { brew "command", "does-not-exist" } +      .to output(/Unknown command/).to_stderr +      .and be_a_failure +  end +end diff --git a/Library/Homebrew/test/cmd/config_spec.rb b/Library/Homebrew/test/cmd/config_spec.rb new file mode 100644 index 000000000..7687fcdc7 --- /dev/null +++ b/Library/Homebrew/test/cmd/config_spec.rb @@ -0,0 +1,8 @@ +describe "brew config", :integration_test do +  it "prints information about the current Homebrew configuration" do +    expect { brew "config" } +      .to output(/HOMEBREW_VERSION: #{HOMEBREW_VERSION}/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end +end diff --git a/Library/Homebrew/test/cmd/desc_spec.rb b/Library/Homebrew/test/cmd/desc_spec.rb new file mode 100644 index 000000000..b09819d81 --- /dev/null +++ b/Library/Homebrew/test/cmd/desc_spec.rb @@ -0,0 +1,40 @@ +describe "brew desc", :integration_test do +  let(:desc_cache) { HOMEBREW_CACHE/"desc_cache.json" } + +  it "shows a given Formula's description" do +    setup_test_formula "testball" + +    expect { brew "desc", "testball" } +      .to output("testball: Some test\n").to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end + +  it "fails when both --search and --name are specified" do +    expect { brew "desc", "--search", "--name" } +      .to output(/Pick one, and only one/).to_stderr +      .and not_to_output.to_stdout +      .and be_a_failure +  end + +  describe "--search" do +    it "fails when no search term is given" do +      expect { brew "desc", "--search" } +        .to output(/You must provide a search term/).to_stderr +        .and not_to_output.to_stdout +        .and be_a_failure +    end +  end + +  describe "--description" do +    it "creates a description cache" do +      expect(desc_cache).not_to exist + +      shutup do +        expect { brew "desc", "--description", "testball" }.to be_a_success +      end + +      expect(desc_cache).to exist +    end +  end +end diff --git a/Library/Homebrew/test/cmd/link_spec.rb b/Library/Homebrew/test/cmd/link_spec.rb new file mode 100644 index 000000000..7b85c96dc --- /dev/null +++ b/Library/Homebrew/test/cmd/link_spec.rb @@ -0,0 +1,56 @@ +describe "brew link", :integration_test do +  it "fails when no argument is given" do +    expect { brew "link" } +      .to output(/This command requires a keg argument/).to_stderr +      .and not_to_output.to_stdout +      .and be_a_failure +  end + +  it "does not fail if the given Formula is already linked" do +    setup_test_formula "testball1" + +    shutup do +      expect { brew "install", "testball1" }.to be_a_success +      expect { brew "link", "testball1" }.to be_a_success +    end +  end + +  it "links a given Formula" do +    setup_test_formula "testball1" + +    shutup do +      expect { brew "install", "testball1" }.to be_a_success +      expect { brew "unlink", "testball1" }.to be_a_success +    end + +    expect { brew "link", "--dry-run", "testball1" } +      .to output(/Would link/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success + +    expect { brew "link", "--dry-run", "--overwrite", "testball1" } +      .to output(/Would remove/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success + +    expect { brew "link", "testball1" } +      .to output(/Linking/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end + +  it "refuses to link keg-only Formulae" do +    setup_test_formula "testball1", <<-EOS.undent +      keg_only "just because" +    EOS + +    shutup do +      expect { brew "install", "testball1" }.to be_a_success +    end + +    expect { brew "link", "testball1" } +      .to output(/testball1 is keg-only/).to_stderr +      .and output(/Note that doing so can interfere with building software\./).to_stdout +      .and be_a_success +  end +end diff --git a/Library/Homebrew/test/cmd/log_spec.rb b/Library/Homebrew/test/cmd/log_spec.rb new file mode 100644 index 000000000..bdbca8912 --- /dev/null +++ b/Library/Homebrew/test/cmd/log_spec.rb @@ -0,0 +1,41 @@ +describe "brew log", :integration_test do +  it "shows the Git log for the Homebrew repository when no argument is given" do +    HOMEBREW_REPOSITORY.cd do +      shutup do +        system "git", "init" +        system "git", "commit", "--allow-empty", "-m", "This is a test commit" +      end +    end + +    expect { brew "log" } +      .to output(/This is a test commit/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end + +  it "shows the Git log for a given Formula" do +    setup_test_formula "testball" + +    core_tap = CoreTap.new +    core_tap.path.cd do +      shutup do +        system "git", "init" +        system "git", "add", "--all" +        system "git", "commit", "-m", "This is a test commit for Testball" +      end +    end + +    core_tap_url = "file://#{core_tap.path}" +    shallow_tap = Tap.fetch("homebrew", "shallow") +    shutup do +      system "git", "clone", "--depth=1", core_tap_url, shallow_tap.path +    end + +    expect { brew "log", "#{shallow_tap}/testball" } +      .to output(/This is a test commit for Testball/).to_stdout +      .and output(/Warning: The git repository is a shallow clone/).to_stderr +      .and be_a_success + +    expect(shallow_tap.path/".git/shallow").to exist, "A shallow clone should have been created." +  end +end diff --git a/Library/Homebrew/test/cmd/migrate_spec.rb b/Library/Homebrew/test/cmd/migrate_spec.rb new file mode 100644 index 000000000..18c94fa01 --- /dev/null +++ b/Library/Homebrew/test/cmd/migrate_spec.rb @@ -0,0 +1,46 @@ +describe "brew migrate", :integration_test do +  before(:each) do +    setup_test_formula "testball1" +    setup_test_formula "testball2" +  end + +  it "fails when no argument is given" do +    expect { brew "migrate" } +      .to output(/Invalid usage/).to_stderr +      .and not_to_output.to_stdout +      .and be_a_failure +  end + +  it "fails when a given Formula doesn't exist" do +    expect { brew "migrate", "testball" } +      .to output(/No available formula with the name "testball"/).to_stderr +      .and not_to_output.to_stdout +      .and be_a_failure +  end + +  it "fails if a given Formula doesn't replace another one" do +    expect { brew "migrate", "testball1" } +      .to output(/testball1 doesn't replace any formula/).to_stderr +      .and not_to_output.to_stdout +      .and be_a_failure +  end + +  it "migrates a renamed Formula" do +    install_and_rename_coretap_formula "testball1", "testball2" + +    expect { brew "migrate", "testball1" } +      .to output(/Migrating testball1 to testball2/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end + +  it "fails if a given Formula is not installed" do +    install_and_rename_coretap_formula "testball1", "testball2" +    (HOMEBREW_CELLAR/"testball1").rmtree + +    expect { brew "migrate", "testball1" } +      .to output(/Error: No such keg/).to_stderr +      .and not_to_output.to_stdout +      .and be_a_failure +  end +end diff --git a/Library/Homebrew/test/cmd/options_spec.rb b/Library/Homebrew/test/cmd/options_spec.rb new file mode 100644 index 000000000..33fe8b107 --- /dev/null +++ b/Library/Homebrew/test/cmd/options_spec.rb @@ -0,0 +1,12 @@ +describe "brew options", :integration_test do +  it "prints a given Formula's options" do +    setup_test_formula "testball", <<-EOS.undent +      depends_on "bar" => :recommended +    EOS + +    expect { brew "options", "testball" } +      .to output("--with-foo\n\tBuild with foo\n--without-bar\n\tBuild without bar support\n\n").to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end +end diff --git a/Library/Homebrew/test/cmd/reinstall_spec.rb b/Library/Homebrew/test/cmd/reinstall_spec.rb new file mode 100644 index 000000000..74d36bbb8 --- /dev/null +++ b/Library/Homebrew/test/cmd/reinstall_spec.rb @@ -0,0 +1,47 @@ +require "extend/ENV" + +describe "brew reinstall", :integration_test do +  let(:bin) { (HOMEBREW_PREFIX/"bin").realpath } +  let(:path) { "#{bin}#{File::PATH_SEPARATOR}#{ENV["PATH"]}" } + +  before(:each) do +    setup_test_formula "testball" + +    shutup do +      expect { brew "install", "testball", "--with-foo" }.to be_a_success +    end +  end + +  it "reinstalls a Formula" do +    foo_dir = HOMEBREW_CELLAR/"testball/0.1/foo" +    expect(foo_dir).to exist +    foo_dir.rmtree + +    expect { brew "reinstall", "testball", "PATH" => path } +      .to output(/Reinstalling testball --with-foo/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success + +    expect(foo_dir).to exist +  end + +  it "reinstalls a Formula even when one of the options is invalid" do +    expect { brew "reinstall", "testball", "--with-fo", "PATH" => path } +      .to output(/Reinstalling testball --with-foo/).to_stdout +      .and output(/testball: this formula has no \-\-with-fo option so it will be ignored!/).to_stderr +      .and be_a_success +  end + +  it "refuses to reinstall a pinned Formula, but doesn't fail" do +    (HOMEBREW_CELLAR/"testball/0.1").mkpath +    HOMEBREW_PINNED_KEGS.mkpath +    FileUtils.ln_s HOMEBREW_CELLAR/"testball/0.1", HOMEBREW_PINNED_KEGS/"testball" + +    expect { brew "reinstall", "testball" } +      .to output(/testball is pinned. You must unpin it to reinstall./).to_stderr +      .and not_to_output.to_stdout +      .and be_a_success + +    HOMEBREW_PINNED_KEGS.rmtree +  end +end diff --git a/Library/Homebrew/test/cmd/search_spec.rb b/Library/Homebrew/test/cmd/search_spec.rb new file mode 100644 index 000000000..06b7073d8 --- /dev/null +++ b/Library/Homebrew/test/cmd/search_spec.rb @@ -0,0 +1,57 @@ +describe "brew search", :integration_test do +  before(:each) do +    setup_test_formula "testball" +  end + +  it "lists all available Formulae when no argument is given" do +    expect { brew "search" } +      .to output(/testball/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end + +  it "supports searching by name" do +    expect { brew "search", "testball" } +      .to output(/testball/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end + +  it "supports searching a fully-qualified name " do +    expect { brew "search", "homebrew/homebrew-core/testball" } +      .to output(/testball/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end + +  describe "--desc" do +    let(:desc_cache) { HOMEBREW_CACHE/"desc_cache.json" } + +    it "supports searching in descriptions and creates a description cache" do +      expect(desc_cache).not_to exist + +      expect { brew "search", "--desc", "Some test" } +        .to output(/testball/).to_stdout +        .and not_to_output.to_stderr +        .and be_a_success + +      expect(desc_cache).to exist +    end +  end + +  { +    "macports" => "https://www.macports.org/ports.php?by=name&substr=testball", +    "fink" => "http://pdb.finkproject.org/pdb/browse.php?summary=testball", +    "debian" => "https://packages.debian.org/search?keywords=testball&searchon=names&suite=all§ion=all", +    "opensuse" => "https://software.opensuse.org/search?q=testball", +    "fedora" => "https://admin.fedoraproject.org/pkgdb/packages/%2Atestball%2A/", +    "ubuntu" => "http://packages.ubuntu.com/search?keywords=testball&searchon=names&suite=all§ion=all", +  }.each do |flag, url| +    specify "--#{flag}" do +      expect { brew "search", "--#{flag}", "testball", "HOMEBREW_BROWSER" => "echo" } +        .to output("#{url}\n").to_stdout +        .and not_to_output.to_stderr +        .and be_a_success +    end +  end +end diff --git a/Library/Homebrew/test/cmd/sh_spec.rb b/Library/Homebrew/test/cmd/sh_spec.rb new file mode 100644 index 000000000..5260ddb75 --- /dev/null +++ b/Library/Homebrew/test/cmd/sh_spec.rb @@ -0,0 +1,8 @@ +describe "brew sh", :integration_test do +  it "runs a shell with the Homebrew environment" do +    expect { brew "sh", "SHELL" => which("true") } +      .to output(/Your shell has been configured/).to_stdout +      .and not_to_output.to_stderr +      .and be_a_success +  end +end  | 
