brew/Library/Homebrew/test/commands_test.rb
Alyssa Ross 70a381a00f tests: enforce super in lifecycle hooks
This will allow us to have global setup and teardown for tests.

For example, we can automatically clear caches after each test, to avoid
annoying intermittent failures like #1879 and #1886.
2017-01-21 11:34:52 +00:00

89 lines
2.6 KiB
Ruby

require "testing_env"
require "cmd/command"
require "cmd/commands"
require "fileutils"
require "testing_env"
class IntegrationCommandTestCommands < IntegrationCommandTestCase
def test_commands
assert_match "Built-in commands",
cmd("commands")
end
end
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
env = ENV.to_hash
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
ensure
ENV.replace(env)
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