diff options
| author | Markus Reiter | 2017-02-27 15:21:52 +0100 |
|---|---|---|
| committer | Markus Reiter | 2017-02-27 15:26:56 +0100 |
| commit | 125abd228cba009a1fc9c29b626f6ce0fdfc91ff (patch) | |
| tree | 774205dbe94606844bedaa5688a9e02a9497c9ca /Library | |
| parent | 0dfe85df1376097ae966f6d710df716ad9a38ff2 (diff) | |
| download | brew-125abd228cba009a1fc9c29b626f6ce0fdfc91ff.tar.bz2 | |
Convert `brew commands` test to spec.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/test/cmd/commands_spec.rb | 85 | ||||
| -rw-r--r-- | Library/Homebrew/test/commands_test.rb | 77 |
2 files changed, 85 insertions, 77 deletions
diff --git a/Library/Homebrew/test/cmd/commands_spec.rb b/Library/Homebrew/test/cmd/commands_spec.rb index f42072956..32d07a0bc 100644 --- a/Library/Homebrew/test/cmd/commands_spec.rb +++ b/Library/Homebrew/test/cmd/commands_spec.rb @@ -1,3 +1,7 @@ +require "cmd/command" +require "cmd/commands" +require "fileutils" + describe "brew commands", :integration_test do it "prints a list of all available commands" do expect { brew "commands" } @@ -5,3 +9,84 @@ describe "brew commands", :integration_test do .and be_a_success end end + +RSpec.shared_context "custom internal commands" do + let(:cmds) do + [ + # internal commands + HOMEBREW_LIBRARY_PATH/"cmd/rbcmd.rb", + HOMEBREW_LIBRARY_PATH/"cmd/shcmd.sh", + + # internal developer-commands + HOMEBREW_LIBRARY_PATH/"dev-cmd/rbdevcmd.rb", + HOMEBREW_LIBRARY_PATH/"dev-cmd/shdevcmd.sh", + ] + end + + around(:each) do |example| + begin + cmds.each do |f| + FileUtils.touch f + end + + example.run + ensure + FileUtils.rm_f cmds + end + end +end + +describe Homebrew do + include_context "custom internal commands" + + specify "::internal_commands" do + cmds = described_class.internal_commands + expect(cmds).to include("rbcmd"), "Ruby commands files should be recognized" + expect(cmds).to include("shcmd"), "Shell commands files should be recognized" + expect(cmds).not_to include("rbdevcmd"), "Dev commands shouldn't be included" + end + + specify "::internal_developer_commands" do + cmds = described_class.internal_developer_commands + expect(cmds).to include("rbdevcmd"), "Ruby commands files should be recognized" + expect(cmds).to include("shdevcmd"), "Shell commands files should be recognized" + expect(cmds).not_to include("rbcmd"), "Non-dev commands shouldn't be included" + end + + specify "::external_commands" do + Dir.mktmpdir do |dir| + %w[brew-t1 brew-t2.rb brew-t3.py].each do |file| + path = "#{dir}/#{file}" + FileUtils.touch path + FileUtils.chmod 0755, path + end + + FileUtils.touch "#{dir}/brew-t4" + + ENV["PATH"] += "#{File::PATH_SEPARATOR}#{dir}" + cmds = described_class.external_commands + + expect(cmds).to include("t1"), "Executable files should be included" + expect(cmds).to include("t2"), "Executable Ruby files should be included" + expect(cmds).not_to include("t3"), "Executable files with a non Ruby extension shoudn't be included" + expect(cmds).not_to include("t4"), "Non-executable files shouldn't be included" + end + end +end + +describe Commands do + include_context "custom internal commands" + + describe "::path" do + specify "returns the path for an internal command" do + expect(described_class.path("rbcmd")).to eq(HOMEBREW_LIBRARY_PATH/"cmd/rbcmd.rb") + expect(described_class.path("shcmd")).to eq(HOMEBREW_LIBRARY_PATH/"cmd/shcmd.sh") + expect(described_class.path("idontexist1234")).to be nil + end + + specify "returns the path for an internal developer-command" do + expect(described_class.path("rbdevcmd")).to eq(HOMEBREW_LIBRARY_PATH/"dev-cmd/rbdevcmd.rb") + expect(described_class.path("shdevcmd")).to eq(HOMEBREW_LIBRARY_PATH/"dev-cmd/shdevcmd.sh") + end + end +end diff --git a/Library/Homebrew/test/commands_test.rb b/Library/Homebrew/test/commands_test.rb deleted file mode 100644 index da88ee2d5..000000000 --- a/Library/Homebrew/test/commands_test.rb +++ /dev/null @@ -1,77 +0,0 @@ -require "testing_env" -require "cmd/command" -require "cmd/commands" -require "fileutils" -require "testing_env" - -class CommandsTests < Homebrew::TestCase - def setup - super - @cmds = [ - # internal commands - HOMEBREW_LIBRARY_PATH/"cmd/rbcmd.rb", - HOMEBREW_LIBRARY_PATH/"cmd/shcmd.sh", - - # internal development commands - HOMEBREW_LIBRARY_PATH/"dev-cmd/rbdevcmd.rb", - HOMEBREW_LIBRARY_PATH/"dev-cmd/shdevcmd.sh", - ] - - @cmds.each { |f| FileUtils.touch f } - end - - def teardown - @cmds.each(&:unlink) - super - end - - def test_internal_commands - cmds = Homebrew.internal_commands - assert cmds.include?("rbcmd"), "Ruby commands files should be recognized" - assert cmds.include?("shcmd"), "Shell commands files should be recognized" - refute cmds.include?("rbdevcmd"), "Dev commands shouldn't be included" - end - - def test_internal_developer_commands - cmds = Homebrew.internal_developer_commands - assert cmds.include?("rbdevcmd"), "Ruby commands files should be recognized" - assert cmds.include?("shdevcmd"), "Shell commands files should be recognized" - refute cmds.include?("rbcmd"), "Non-dev commands shouldn't be included" - end - - def test_external_commands - mktmpdir do |dir| - %w[brew-t1 brew-t2.rb brew-t3.py].each do |file| - path = "#{dir}/#{file}" - FileUtils.touch path - FileUtils.chmod 0755, path - end - - FileUtils.touch "#{dir}/brew-t4" - - ENV["PATH"] += "#{File::PATH_SEPARATOR}#{dir}" - cmds = Homebrew.external_commands - - assert cmds.include?("t1"), "Executable files should be included" - assert cmds.include?("t2"), "Executable Ruby files should be included" - refute cmds.include?("t3"), - "Executable files with a non Ruby extension shoudn't be included" - refute cmds.include?("t4"), "Non-executable files shouldn't be included" - end - end - - def test_internal_command_path - assert_equal HOMEBREW_LIBRARY_PATH/"cmd/rbcmd.rb", - Commands.path("rbcmd") - assert_equal HOMEBREW_LIBRARY_PATH/"cmd/shcmd.sh", - Commands.path("shcmd") - assert_nil Commands.path("idontexist1234") - end - - def test_internal_dev_command_path - assert_equal HOMEBREW_LIBRARY_PATH/"dev-cmd/rbdevcmd.rb", - Commands.path("rbdevcmd") - assert_equal HOMEBREW_LIBRARY_PATH/"dev-cmd/shdevcmd.sh", - Commands.path("shdevcmd") - end -end |
