lib/jcukeforker/worker.rb in jcukeforker-0.2.2 vs lib/jcukeforker/worker.rb in jcukeforker-0.2.3
- old
+ new
@@ -5,22 +5,24 @@
require 'cucumber/cli/main'
require 'observer'
require 'childprocess'
require_relative './abstract_listener'
require_relative './recording_vnc_listener'
+require_relative './formatters/scenario_line_logger'
+require_relative './formatters/junit_scenario_formatter'
module JCukeForker
class Worker
include Observable
- attr_reader :feature, :format, :out
+ attr_reader :feature, :format, :out, :basename
def initialize(status_path, task_path, recorder = nil)
@status_path = status_path
@task_path = task_path
if ENV['DISPLAY'] && recorder
- config = recorder ? {} : JSON.parse(recorder)
+ config = JSON.parse(recorder)
add_observer JCukeForker::RecordingVncListener.new(self, config)
end
@status_socket = TCPSocket.new 'localhost', status_path
@status = nil
end
@@ -62,11 +64,11 @@
notify_observers *message
@status_socket.puts(message.to_json)
end
def failed?
- @status.nil? || @status
+ @status.nil? || !@status
end
def output
File.join out, "#{basename}.#{format}"
end
@@ -77,14 +79,10 @@
def stderr
File.join out, "#{basename}.stderr"
end
- def basename
- @basename ||= feature.gsub(/\W/, '_')
- end
-
def args
args = %W[--format #{format} --out #{output}]
args += @extra_args
args << feature
@@ -92,14 +90,16 @@
end
private
def set_state(raw_message)
+ @status = nil
json_obj = JSON.parse raw_message
@format = json_obj['format']
@feature = json_obj['feature']
@extra_args = json_obj['extra_args']
@out = json_obj['out']
+ @basename = feature.gsub(/\W/, '_')
end
def execute_cucumber
FileUtils.mkdir_p(out) unless File.exist? out