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>
This commit is contained in:
parent
b75516425b
commit
c016aedaab
@ -1,20 +1,34 @@
|
|||||||
require "testing_env"
|
require "testing_env"
|
||||||
|
|
||||||
class BashTests < Homebrew::TestCase
|
class BashTests < Homebrew::TestCase
|
||||||
def assert_valid_bash_syntax(files)
|
def assert_valid_bash_syntax(file)
|
||||||
output = Utils.popen_read("/bin/bash -n #{files} 2>&1")
|
output = Utils.popen_read("/bin/bash -n #{file} 2>&1")
|
||||||
assert $?.success?, output
|
assert $?.success?, output
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_bin_brew
|
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
|
end
|
||||||
|
|
||||||
def test_bash_cmds
|
def test_bash_code
|
||||||
%w[cmd dev-cmd].each do |dir|
|
Pathname.glob("#{HOMEBREW_LIBRARY_PATH}/**/*.sh").each do |pn|
|
||||||
Dir["#{HOMEBREW_LIBRARY_PATH}/#{dir}/*.sh"].each do |cmd|
|
pn_relative = pn.relative_path_from(HOMEBREW_LIBRARY_PATH)
|
||||||
assert_valid_bash_syntax cmd
|
next if pn_relative.to_s.start_with?("shims/", "test/", "vendor/")
|
||||||
end
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user