diff options
| author | Martin Afanasjew | 2016-08-08 15:04:21 +0200 |
|---|---|---|
| committer | Martin Afanasjew | 2016-08-08 16:00:13 +0200 |
| commit | c016aedaab3a5b10207eb05d6b53199e6fcdb761 (patch) | |
| tree | 431f102558ddf4547fc3c3dedac228cffd4d9466 /Library | |
| parent | b75516425b2cfe746a70dd13e5538dec48688b58 (diff) | |
| download | brew-c016aedaab3a5b10207eb05d6b53199e6fcdb761.tar.bz2 | |
tests: check all our Bash code for syntax errors
Additionally include our bootstrap code in `brew.sh`, Bash utilities in
`utils.sh` and `utils/*.sh`, `superenv` shims, and the Bash completion.
Closes #654.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/test/test_bash.rb | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/Library/Homebrew/test/test_bash.rb b/Library/Homebrew/test/test_bash.rb index 7c312f62a..e965aaf21 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 |
