diff options
| author | Markus Reiter | 2017-02-11 18:22:06 +0100 |
|---|---|---|
| committer | GitHub | 2017-02-11 18:22:06 +0100 |
| commit | cf18a999f1b6b0d8932260ed1ff9ede30c338515 (patch) | |
| tree | 46af83f81f85494fbe13a44126fb96ba99881ed5 /Library/Homebrew/test/bash_spec.rb | |
| parent | fa9a2b1a3885046d59b5eea847506e5ec5de1c4e (diff) | |
| parent | 7be5a6a3d2cdb68870a37bdaa2d0c5cdec20c70b (diff) | |
| download | brew-cf18a999f1b6b0d8932260ed1ff9ede30c338515.tar.bz2 | |
Merge pull request #1984 from reitermarkus/brew-tests-rspec
Add RSpec support to `brew tests`.
Diffstat (limited to 'Library/Homebrew/test/bash_spec.rb')
| -rw-r--r-- | Library/Homebrew/test/bash_spec.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Library/Homebrew/test/bash_spec.rb b/Library/Homebrew/test/bash_spec.rb new file mode 100644 index 000000000..1b0f15066 --- /dev/null +++ b/Library/Homebrew/test/bash_spec.rb @@ -0,0 +1,52 @@ +require "open3" + +RSpec::Matchers.define :have_valid_bash_syntax do + match do |file| + stdout, stderr, status = Open3.capture3("/bin/bash", "-n", file) + + @actual = [file, stderr] + + stdout.empty? && status.success? + end + + failure_message do |(file, stderr)| + "expected that #{file} is a valid Bash file:\n#{stderr}" + end +end + +describe "Bash" do + context "brew" do + subject { HOMEBREW_LIBRARY_PATH.parent.parent/"bin/brew" } + it { is_expected.to have_valid_bash_syntax } + end + + context "every `.sh` file" do + it "has valid bash syntax" do + Pathname.glob("#{HOMEBREW_LIBRARY_PATH}/**/*.sh").each do |path| + relative_path = path.relative_path_from(HOMEBREW_LIBRARY_PATH) + next if relative_path.to_s.start_with?("shims/", "test/", "vendor/") + + expect(path).to have_valid_bash_syntax + end + end + end + + context "Bash completion" do + subject { HOMEBREW_LIBRARY_PATH.parent.parent/"completions/bash/brew" } + it { is_expected.to have_valid_bash_syntax } + end + + context "every shim script" do + it "has valid bash syntax" do + # These have no file extension, but can be identified by their shebang. + (HOMEBREW_LIBRARY_PATH/"shims").find do |path| + next if path.directory? + next if path.symlink? + next unless path.executable? + next unless path.read(12) == "#!/bin/bash\n" + + expect(path).to have_valid_bash_syntax + end + end + end +end |
