aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/bash_test.rb
blob: 671ab5ec8d2d59bb73aaaf5b6b3946c974286887 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
require "testing_env"

class BashTests < Homebrew::TestCase
  def assert_valid_bash_syntax(file)
    return unless file.exist?
    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"
  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/"completions/bash/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