aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMartin Afanasjew2016-08-08 15:04:21 +0200
committerMartin Afanasjew2016-08-08 16:00:13 +0200
commitc016aedaab3a5b10207eb05d6b53199e6fcdb761 (patch)
tree431f102558ddf4547fc3c3dedac228cffd4d9466 /Library
parentb75516425b2cfe746a70dd13e5538dec48688b58 (diff)
downloadbrew-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.rb30
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