59 lines
1.4 KiB
Ruby
59 lines
1.4 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Hbc::SystemCommand do
|
|
describe "when the exit code is 0" do
|
|
let(:command) { '/usr/bin/true' }
|
|
|
|
it "says the command was successful" do
|
|
result = described_class.run(command)
|
|
expect(result.success?).to eq(true)
|
|
end
|
|
|
|
it "says the exit status is 0" do
|
|
result = described_class.run(command)
|
|
expect(result.exit_status).to eq(0)
|
|
end
|
|
end
|
|
|
|
describe "when the exit code is 1" do
|
|
let(:command) { '/usr/bin/false' }
|
|
|
|
describe "and the command must succeed" do
|
|
it "throws an error" do
|
|
expect {
|
|
described_class.run!(command)
|
|
}.to raise_error(Hbc::CaskCommandFailedError)
|
|
end
|
|
end
|
|
|
|
describe "and the command does not have to succeed" do
|
|
it "says the command failed" do
|
|
result = described_class.run(command)
|
|
expect(result.success?).to eq(false)
|
|
end
|
|
|
|
it "says the exit status is 1" do
|
|
result = described_class.run(command)
|
|
expect(result.exit_status).to eq(1)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "args" do
|
|
let(:command) { '/bin/ls' }
|
|
let(:path) { Pathname(Dir.mktmpdir) }
|
|
|
|
before do
|
|
FileUtils.touch(path.join('somefile'))
|
|
end
|
|
|
|
it "can be pathnames" do
|
|
result = described_class.run(command, args: [path])
|
|
|
|
expect(result.success?).to eq(true)
|
|
expect(result.stdout).to eq("somefile\n")
|
|
end
|
|
end
|
|
end
|
|
|