diff --git a/Library/Homebrew/test/test_bash.rb b/Library/Homebrew/test/test_bash.rb index 7c312f62a3..e965aaf218 100644 --- a/Library/Homebrew/test/test_bash.rb +++ b/Library/Homebrew/test/test_bash.rb @@ -1,20 +1,34 @@ require "testing_env" class BashTests < Homebrew::TestCase - def assert_valid_bash_syntax(files) - output = Utils.popen_read("/bin/bash -n #{files} 2>&1") + def assert_valid_bash_syntax(file) + 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" + assert_valid_bash_syntax HOMEBREW_LIBRARY_PATH.parent.parent/"bin/brew" end - def test_bash_cmds - %w[cmd dev-cmd].each do |dir| - Dir["#{HOMEBREW_LIBRARY_PATH}/#{dir}/*.sh"].each do |cmd| - assert_valid_bash_syntax cmd - 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/"etc/bash_completion.d/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