Add failing spec for SystemCommand.
This commit is contained in:
parent
4e49e8de0d
commit
1f5311888e
@ -2,7 +2,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
describe "#initialize" do
|
describe "#initialize" do
|
||||||
let(:env_args) { ["bash", "-c", 'printf "%s" "${A?}" "${B?}" "${C?}"'] }
|
let(:env_args) { ["bash", "-c", 'printf "%s" "${A?}" "${B?}" "${C?}"'] }
|
||||||
|
|
||||||
describe "given some environment variables" do
|
context "when given some environment variables" do
|
||||||
subject {
|
subject {
|
||||||
described_class.new(
|
described_class.new(
|
||||||
"env",
|
"env",
|
||||||
@ -26,7 +26,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "given some environment variables and sudo: true" do
|
context "when given some environment variables and sudo: true" do
|
||||||
subject {
|
subject {
|
||||||
described_class.new(
|
described_class.new(
|
||||||
"env",
|
"env",
|
||||||
@ -54,7 +54,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "when the exit code is 0" do
|
context "when the exit code is 0" do
|
||||||
describe "its result" do
|
describe "its result" do
|
||||||
subject { described_class.run("/usr/bin/true") }
|
subject { described_class.run("/usr/bin/true") }
|
||||||
|
|
||||||
@ -63,10 +63,10 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "when the exit code is 1" do
|
context "when the exit code is 1" do
|
||||||
let(:command) { "/usr/bin/false" }
|
let(:command) { "/usr/bin/false" }
|
||||||
|
|
||||||
describe "and the command must succeed" do
|
context "and the command must succeed" do
|
||||||
it "throws an error" do
|
it "throws an error" do
|
||||||
expect {
|
expect {
|
||||||
described_class.run!(command)
|
described_class.run!(command)
|
||||||
@ -74,7 +74,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "and the command does not have to succeed" do
|
context "and the command does not have to succeed" do
|
||||||
describe "its result" do
|
describe "its result" do
|
||||||
subject { described_class.run(command) }
|
subject { described_class.run(command) }
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "given a pathname" do
|
context "when given a pathname" do
|
||||||
let(:command) { "/bin/ls" }
|
let(:command) { "/bin/ls" }
|
||||||
let(:path) { Pathname(Dir.mktmpdir) }
|
let(:path) { Pathname(Dir.mktmpdir) }
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "with both STDOUT and STDERR output from upstream" do
|
context "with both STDOUT and STDERR output from upstream" do
|
||||||
let(:command) { "/bin/bash" }
|
let(:command) { "/bin/bash" }
|
||||||
let(:options) {
|
let(:options) {
|
||||||
{ args: [
|
{ args: [
|
||||||
@ -119,7 +119,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "with default options" do
|
context "with default options" do
|
||||||
it "echoes only STDERR" do
|
it "echoes only STDERR" do
|
||||||
expected = [2, 4, 6].map { |i| "#{i}\n" }.join
|
expected = [2, 4, 6].map { |i| "#{i}\n" }.join
|
||||||
expect {
|
expect {
|
||||||
@ -130,7 +130,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
include_examples("it returns '1 2 3 4 5 6'")
|
include_examples("it returns '1 2 3 4 5 6'")
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "with print_stdout" do
|
context "with print_stdout" do
|
||||||
before do
|
before do
|
||||||
options.merge!(print_stdout: true)
|
options.merge!(print_stdout: true)
|
||||||
end
|
end
|
||||||
@ -144,7 +144,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
include_examples("it returns '1 2 3 4 5 6'")
|
include_examples("it returns '1 2 3 4 5 6'")
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "without print_stderr" do
|
context "without print_stderr" do
|
||||||
before do
|
before do
|
||||||
options.merge!(print_stderr: false)
|
options.merge!(print_stderr: false)
|
||||||
end
|
end
|
||||||
@ -158,7 +158,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
include_examples("it returns '1 2 3 4 5 6'")
|
include_examples("it returns '1 2 3 4 5 6'")
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "with print_stdout but without print_stderr" do
|
context "with print_stdout but without print_stderr" do
|
||||||
before do
|
before do
|
||||||
options.merge!(print_stdout: true, print_stderr: false)
|
options.merge!(print_stdout: true, print_stderr: false)
|
||||||
end
|
end
|
||||||
@ -174,7 +174,7 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "with a very long STDERR output" do
|
context "with a very long STDERR output" do
|
||||||
let(:command) { "/bin/bash" }
|
let(:command) { "/bin/bash" }
|
||||||
let(:options) {
|
let(:options) {
|
||||||
{ args: [
|
{ args: [
|
||||||
@ -190,10 +190,23 @@ describe Hbc::SystemCommand, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "given an invalid variable name" do
|
context "when given an invalid variable name" do
|
||||||
it "raises an ArgumentError" do
|
it "raises an ArgumentError" do
|
||||||
expect { described_class.run("true", env: { "1ABC" => true }) }
|
expect { described_class.run("true", env: { "1ABC" => true }) }
|
||||||
.to raise_error(ArgumentError, /variable name/)
|
.to raise_error(ArgumentError, /variable name/)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "looks for executables in custom PATH" do
|
||||||
|
mktmpdir do |path|
|
||||||
|
(path/"tool").write <<~SH
|
||||||
|
#!/bin/sh
|
||||||
|
echo Hello, world!
|
||||||
|
SH
|
||||||
|
|
||||||
|
FileUtils.chmod "+x", path/"tool"
|
||||||
|
|
||||||
|
expect(described_class.run("tool", env: { "PATH" => path }).stdout).to include "Hello, world!"
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user