Skip to content

Commit

Permalink
tests: check all our Bash code for syntax errors
Browse files Browse the repository at this point in the history
Additionally include our bootstrap code in `brew.sh`, Bash utilities in
`utils.sh` and `utils/*.sh`, `superenv` shims, and the Bash completion.

Closes Homebrew#654.

Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
  • Loading branch information
UniqMartin committed Aug 8, 2016
1 parent b755164 commit c016aed
Showing 1 changed file with 22 additions and 8 deletions.
30 changes: 22 additions & 8 deletions Library/Homebrew/test/test_bash.rb
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit c016aed

Please sign in to comment.