Class: Citrus::Core::TestRunner

Inherits:
Object
  • Object
show all
Includes:
Publisher
Defined in:
lib/citrus/core/test_runner.rb

Constant Summary collapse

CHUNK_SIZE =
8192

Instance Method Summary collapse

Methods included from Publisher

#add_subscriber, #publish

Instance Method Details

#start(build, configuration, path) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/citrus/core/test_runner.rb', line 8

def start(build, configuration, path)
  output  = build.output
  process = ChildProcess.build(configuration.build_script)
  process.cwd = path.to_s
  r, w = IO.pipe
  process.io.stdout = process.io.stderr = w
  process.start
  w.close
  begin
    loop do
      chunk = r.readpartial(CHUNK_SIZE)
      output.write(chunk)
      publish(:build_output_received, build, chunk)
    end
  rescue EOFError
  end
  process.wait
  ExitCode.new(process.exit_code)
end