lib/cukeforker/worker.rb in cukeforker-0.0.5 vs lib/cukeforker/worker.rb in cukeforker-0.0.6
- old
+ new
@@ -1,21 +1,23 @@
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
- attr_accessor :vnc
+ 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, @vnc = nil
+ @status = nil
+ @data = OpenStruct.new
@id = self.class.id += 1
end
def finished?
@@ -28,11 +30,15 @@
def failed?
status.nil? || status.exitstatus != 0
end
def start
- @pid = Process.fork { execute_cucumber }
+ @pid = Process.fork {
+ changed
+ notify_observers :on_worker_forked, self
+ execute_cucumber
+ }
end
def args
args = %W[--format #{format} --out #{output}]
args += @extra_args
@@ -45,10 +51,10 @@
"[
#{pid}
#{feature}
#{status.inspect}
#{out}
- #{vnc && vnc.display}
+ #{data}
]"
end
def output
File.join out, "#{basename}.#{format}"