diff options
| author | Markus Reiter | 2017-02-11 16:53:11 +0100 |
|---|---|---|
| committer | Markus Reiter | 2017-02-11 16:53:11 +0100 |
| commit | f531e63949683a7bf33ec96014901e3c6d5eaf61 (patch) | |
| tree | 0bf42efd90347263a5c658629b442c4c98c64d40 /Library/Homebrew/test/bash_spec.rb | |
| parent | 46a1e2f22d866275da68d11b871883f34669705f (diff) | |
| download | brew-f531e63949683a7bf33ec96014901e3c6d5eaf61.tar.bz2 | |
Convert Bash test to spec.
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 |
