jcukeforker 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f2c4cda725d6eb45cd43a193c68ac23c7f245cc8
4
- data.tar.gz: fd1a942fa132ed08c30975fe0001ce7322824a7c
3
+ metadata.gz: 624cde7fd15fb72fdfa5b749dde6041a09695b27
4
+ data.tar.gz: eb0d4416fe95194e6547de3e0ead5236002d08db
5
5
  SHA512:
6
- metadata.gz: bbb19abf494360c1180b761ef264e26da1fe9224efdef272c970b77a509e026f4b7d9dda94824990bc696e3d76f43623ceb90b086cd8e0a570550b6488b75fc7
7
- data.tar.gz: 7edb4699f193706c4d84df8829b066ae7be0a9d51dedf04d871756a198394c20f7d09546efe58c4e2ecdff6e0d5c10b9953f8cbb490b222d96937b4b23fc264f
6
+ metadata.gz: bf21e8272ccb037a6691218e5e21f522d1df072cd5e77ed84505dd72b27afa36102c379b91f4fc6be4cf2b6622199ef556a7afda088d280bcb2a165150ec993b
7
+ data.tar.gz: 2efb490171b37a3e23b47faef16e530df5b6f30080cea84ffee8367c39c2cc71b34a35f4dd88b7ef9e6a56ede4180dfbcecd3ab346d03e0c82bce07eaf455797
@@ -16,39 +16,15 @@ module JCukeForker
16
16
  def on_task_finished(worker_path, feature, status)
17
17
  end
18
18
 
19
- def on_worker_forked(worker)
20
- end
21
-
22
19
  def on_worker_register(worker_path)
23
20
  end
24
21
 
25
- def on_worker_waiting(worker_path)
26
- end
27
-
28
- def on_worker_dead(worker_path)
29
- end
30
-
31
22
  def on_run_interrupted
32
23
  end
33
24
 
34
25
  def on_run_finished(failed)
35
26
  end
36
27
 
37
- def on_display_fetched(server)
38
- end
39
-
40
- def on_display_released(server)
41
- end
42
-
43
- def on_display_starting(worker_path, display)
44
- end
45
-
46
- def on_display_stopping(worker_path, display)
47
- end
48
-
49
- def on_eta(time, remaining, finished)
50
- end
51
-
52
28
  def update(meth, *args)
53
29
  __send__(meth, *args)
54
30
  end
@@ -29,7 +29,7 @@ module JCukeForker
29
29
  end
30
30
 
31
31
  def on_run_finished(failed)
32
- log.info "[ run ] finished, #{status_string failed}"
32
+ log.info "[ run ] finished, #{status_string !failed}"
33
33
  end
34
34
 
35
35
  def on_run_interrupted
@@ -76,9 +76,9 @@ module JCukeForker
76
76
  end
77
77
  end
78
78
 
79
- processes = create_processes(max, port, worker_dir, vnc_pool, opts[:record])
79
+ processes = create_processes(max, status_server.port, worker_dir, vnc_pool, opts[:record])
80
80
 
81
- runner = Runner.new status_server, processes, worker_dir, vnc_pool, delay
81
+ runner = Runner.new status_server, processes, worker_dir, vnc_pool, delay, task_manager
82
82
 
83
83
  listeners.each { |l|
84
84
  status_server.add_observer l
@@ -88,12 +88,13 @@ module JCukeForker
88
88
  runner
89
89
  end
90
90
 
91
- def initialize(status_server, processes, worker_dir, vnc_pool, delay)
91
+ def initialize(status_server, processes, worker_dir, vnc_pool, delay, task_manager)
92
92
  @status_server = status_server
93
93
  @processes = processes
94
94
  @worker_dir = worker_dir
95
95
  @vnc_pool = vnc_pool
96
96
  @delay = delay
97
+ @task_manager = task_manager
97
98
  end
98
99
 
99
100
  def run
@@ -151,7 +152,7 @@ module JCukeForker
151
152
  ensure # catch potential second Interrupt
152
153
  @vnc_pool.stop if @vnc_pool
153
154
  FileUtils.rm_r @worker_dir
154
- #fire :on_run_finished, @queue.has_failures?
155
+ fire :on_run_finished, @task_manager.has_failures?
155
156
  end
156
157
 
157
158
  def fire(*args)
@@ -1,3 +1,4 @@
1
+ require 'socket'
1
2
 
2
3
  module JCukeForker
3
4
  class StatusServer
@@ -5,9 +6,12 @@ module JCukeForker
5
6
  include Celluloid::IO
6
7
 
7
8
  finalizer :shutdown
9
+ attr_reader :port
8
10
 
9
11
  def initialize(port = '6333')
10
- @server = TCPServer.new 'localhost', port
12
+ server = ::TCPServer.new 'localhost', port
13
+ @port = server.connect_address.ip_port
14
+ @server = TCPServer.from_ruby_server server
11
15
  end
12
16
 
13
17
  def run
@@ -6,6 +6,7 @@ module JCukeForker
6
6
  @features = features
7
7
  @opts = opts
8
8
  @worker_sockets = {}
9
+ @failures = false
9
10
  end
10
11
 
11
12
  def on_worker_register(worker_path)
@@ -14,6 +15,7 @@ module JCukeForker
14
15
  end
15
16
 
16
17
  def on_task_finished(worker_path, feature, status)
18
+ @failures = @failures || !status
17
19
  pop_task worker_path
18
20
  end
19
21
 
@@ -26,6 +28,10 @@ module JCukeForker
26
28
  @worker_sockets.each {|k, v| v.close}
27
29
  end
28
30
 
31
+ def has_failures?
32
+ @failures
33
+ end
34
+
29
35
  private
30
36
 
31
37
  def pop_task(worker_path)
@@ -1,3 +1,3 @@
1
1
  module JCukeForker
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  end
@@ -69,7 +69,8 @@ module JCukeForker
69
69
  @status.nil? || !@status
70
70
  end
71
71
 
72
- def output
72
+ def output(format = nil)
73
+ format = @format if format.nil?
73
74
  File.join out, "#{basename}.#{format}"
74
75
  end
75
76
 
@@ -82,10 +83,9 @@ module JCukeForker
82
83
  end
83
84
 
84
85
  def args
85
- args = %W[--format #{format} --out #{output}]
86
+ args = Array(format).flat_map { |f| %W[--format #{f} --out #{output(f)}] }
86
87
  args += @extra_args
87
88
  args << feature
88
-
89
89
  args
90
90
  end
91
91
 
@@ -36,7 +36,7 @@ I, [#{timestamp}] INFO -- : [ worker 15 ] failed : foo/baz
36
36
  I, [#{timestamp}] INFO -- : [ worker 1 ] dead : /tmp/12sd3-1
37
37
  I, [#{timestamp}] INFO -- : [ worker 15 ] dead : /tmp/12sd3-15
38
38
  I, [#{timestamp}] INFO -- : [ run ] interrupted - please wait
39
- I, [#{timestamp}] INFO -- : [ run ] finished, failed
39
+ I, [#{timestamp}] INFO -- : [ run ] finished, passed
40
40
  OUTPUT
41
41
  end
42
42
  end # Worker
@@ -15,8 +15,8 @@ module JCukeForker
15
15
  features = %w[a b]
16
16
  delay = 1
17
17
 
18
- mock_task_manager = double(TaskManager, :update => nil)
19
- mock_status_server = double(StatusServer)
18
+ mock_task_manager = double(TaskManager, :update => nil, :has_failures? => false)
19
+ mock_status_server = double(StatusServer, :port => nil)
20
20
  mock_tasks = Array.new(2) { |n| double("Worker-#{n}") }
21
21
 
22
22
  TaskManager.should_receive(:new).with(features, {format: format, out: out, extra_args: []}).and_return mock_task_manager
@@ -52,7 +52,9 @@ module JCukeForker
52
52
  let(:process) { double(ChildProcess, :start => nil, :wait => nil) }
53
53
  let(:work_dir) { '/tmp/jcukeforker-testdir' }
54
54
  let(:vnc_pool) { double(VncTools::ServerPool, :stop => nil) }
55
- let(:runner) { Runner.new(status_server, [process], work_dir, vnc_pool, 0) }
55
+ let(:mock_task_manager) { double(TaskManager, :update => nil, :has_failures? => false) }
56
+ let(:runner) { Runner.new(status_server, [process], work_dir, vnc_pool, 0, mock_task_manager) }
57
+
56
58
 
57
59
  it "processes the queue" do
58
60
  runner.add_observer listener
@@ -41,5 +41,12 @@ module JCukeForker
41
41
  task_manager.instance_variable_get(:@worker_sockets)[worker_path] = mock_socket
42
42
  task_manager.on_task_finished worker_path, nil, nil
43
43
  end
44
+
45
+ it "can detect failure" do
46
+ task_manager = TaskManager.new []
47
+ def task_manager.pop_task(*args); end
48
+ task_manager.on_task_finished worker_path, feature, false
49
+ task_manager.has_failures?.should == true
50
+ end
44
51
  end
45
52
  end
@@ -23,5 +23,19 @@ module JCukeForker
23
23
 
24
24
  worker.register
25
25
  end
26
+
27
+ context "running a scenario with multiple report formats" do
28
+ formats = [ :json, :junit ]
29
+ path = "some/path"
30
+
31
+ it "has an output file for each format specified" do
32
+ json_str = {'format' => formats, 'feature' => 'some/feature:51', 'extra_args' => [], 'out' => path}.to_json
33
+ worker.send :set_state, json_str
34
+ expected_args = formats.flat_map do |f|
35
+ %W[--format #{f} --out #{path}/some_feature_51.#{f}]
36
+ end
37
+ worker.args.each_cons(expected_args.size).include?(expected_args).should be_true
38
+ end
39
+ end
26
40
  end
27
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jcukeforker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Gowan
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-16 00:00:00.000000000 Z
12
+ date: 2014-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber