Sha256: 2559f444c91b73aaab2794234605748536b491b1f2cb90fd3581bf31b42dd937
Contents?: true
Size: 1.67 KB
Versions: 1
Compression:
Stored size: 1.67 KB
Contents
module CukeForker class Worker include Observable class << self attr_writer :id def id; @id ||= -1; end end attr_reader :status, :feature, :pid, :format, :out, :id, :data def initialize(feature, format, out, extra_args = []) @feature = feature @format = format @extra_args = extra_args @out = out @status = nil @data = OpenStruct.new @id = self.class.id += 1 end def finished? wait_pid, @status = Process.waitpid2(pid, Process::WNOHANG) !!wait_pid rescue Errno::ECHILD, Errno::ESRCH true end def failed? status.nil? || status.exitstatus != 0 end def start @pid = Process.fork { changed notify_observers :on_worker_forked, self execute_cucumber } end def args args = %W[--format #{format} --out #{output}] args += @extra_args args << feature args end def text "[ #{pid} #{feature} #{status.inspect} #{out} #{data} ]" end def output File.join out, "#{basename}.#{format}" end def stdout File.join out, "#{basename}.stdout" end def stderr File.join out, "#{basename}.stderr" end def basename @basename ||= feature.gsub(/\W/, '_') end private def execute_cucumber FileUtils.mkdir_p(out) unless File.exist? out $stdout.reopen stdout $stderr.reopen stderr failed = Cucumber::Cli::Main.execute args $stdout.flush $stderr.flush exit failed ? 1 : 0 end end # Worker end # CukeForker
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cukeforker-0.2.1 | lib/cukeforker/worker.rb |