Class: Test::Cmd
- Inherits:
-
Object
- Object
- Test::Cmd
- Defined in:
- lib/test/cmd.rb
Overview
test-cmd.rb provides an object oriented interface for spawning a command
Defined Under Namespace
Classes: Pipe
IO collapse
-
#stdout ⇒ String
Returns the contents of stdout.
-
#stderr ⇒ String
Returns the contents of stderr.
Predicates collapse
-
#success? ⇒ Boolean
Returns true when a command exited successfully.
-
#spawned? ⇒ Boolean
Returns true when a command has been spawned.
-
#command_not_found? ⇒ Boolean
(also: #not_found?)
Returns true when a command can’t be found.
Callbacks collapse
Instance Method Summary collapse
-
#argv(*argv) ⇒ Test::Cmd
-
#spawn ⇒ Test::Cmd
Spawns a command.
-
#status ⇒ Process::Status
Returns the status of a process.
-
#pid ⇒ Integer
Returns the process ID of a spawned command.
-
#exit_status ⇒ Integer
(also: #exitstatus)
Returns the exit status of a process.
-
#initialize(cmd, *argv) ⇒ Test::Cmd
constructor
Constructor Details
#initialize(cmd, *argv) ⇒ Test::Cmd
26 27 28 29 30 31 32 33 34 |
# File 'lib/test/cmd.rb', line 26 def initialize(cmd, *argv) @cmd = cmd @argv = argv.dup @status = nil @spawned = false @stdout = "" @stderr = "" @enoent = false end |
Instance Method Details
#failure {|cmd| ... } ⇒ Test::Cmd
154 155 156 157 158 159 |
# File 'lib/test/cmd.rb', line 154 def failure tap do spawn status.success? ? nil : yield(self) end end |
#argv(*argv) ⇒ Test::Cmd
40 41 42 |
# File 'lib/test/cmd.rb', line 40 def argv(*argv) tap { @argv.concat(argv) } end |
#spawn ⇒ Test::Cmd
Spawns a command
47 48 49 50 51 52 53 54 55 56 |
# File 'lib/test/cmd.rb', line 47 def spawn return self if @spawned tap do @spawned = true out, err = Pipe.pair, Pipe.pair consume(produce(out, err), out, err) ensure [out, err].each(&:close) end end |
#status ⇒ Process::Status
Returns the status of a process
61 62 63 64 |
# File 'lib/test/cmd.rb', line 61 def status spawn @status end |
#pid ⇒ Integer
Returns the process ID of a spawned command
69 70 71 |
# File 'lib/test/cmd.rb', line 69 def pid status.pid end |
#exit_status ⇒ Integer Also known as: exitstatus
Returns the exit status of a process
76 77 78 |
# File 'lib/test/cmd.rb', line 76 def exit_status status.exitstatus end |
#stdout ⇒ String
Returns the contents of stdout
87 88 89 90 |
# File 'lib/test/cmd.rb', line 87 def stdout spawn @stdout end |
#stderr ⇒ String
Returns the contents of stderr
95 96 97 98 |
# File 'lib/test/cmd.rb', line 95 def stderr spawn @stderr end |
#success? ⇒ Boolean
Returns true when a command exited successfully
107 108 109 |
# File 'lib/test/cmd.rb', line 107 def success? status.success? end |
#spawned? ⇒ Boolean
Returns true when a command has been spawned
114 115 116 |
# File 'lib/test/cmd.rb', line 114 def spawned? @spawned end |
#command_not_found? ⇒ Boolean Also known as: not_found?
Returns true when a command can’t be found
121 122 123 124 |
# File 'lib/test/cmd.rb', line 121 def command_not_found? spawn @enoent end |
#success {|cmd| ... } ⇒ Test::Cmd
139 140 141 142 143 144 |
# File 'lib/test/cmd.rb', line 139 def success tap do spawn status.success? ? yield(self) : nil end end |