brew/Library/Homebrew/test/bash_test.rb
Mike McQuaid 3f6d31dee1 bash_test: handle race condition.
Other tests may delete Bash files (e.g. `shcmd.sh`) while tests are
ongoing so ensure this doesn't cause a test failure.
2016-12-03 15:59:05 +00:00

36 lines
1.0 KiB
Ruby

require "testing_env"
class BashTests < Homebrew::TestCase
def assert_valid_bash_syntax(file)
return unless file.exist?
output = Utils.popen_read("/bin/bash -n #{file} 2>&1")
assert $?.success?, output
end
def test_bin_brew
assert_valid_bash_syntax HOMEBREW_LIBRARY_PATH.parent.parent/"bin/brew"
end
def test_bash_code
Pathname.glob("#{HOMEBREW_LIBRARY_PATH}/**/*.sh").each do |pn|
pn_relative = pn.relative_path_from(HOMEBREW_LIBRARY_PATH)
next if pn_relative.to_s.start_with?("shims/", "test/", "vendor/")
assert_valid_bash_syntax pn
end
end
def test_bash_completion
script = HOMEBREW_LIBRARY_PATH.parent.parent/"completions/bash/brew"
assert_valid_bash_syntax script
end
def test_bash_shims
# These have no file extension, but can be identified by their shebang.
(HOMEBREW_LIBRARY_PATH/"shims").find do |pn|
next if pn.directory? || pn.symlink?
next unless pn.executable? && pn.read(12) == "#!/bin/bash\n"
assert_valid_bash_syntax pn
end
end
end