jcukeforker 0.2.4 → 0.2.5

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: 3a651ded56a13da6c8e0ed525d10d5b1bf4ae4c6
4
- data.tar.gz: 42581a8e19d2a8b125eae37cfcf2ef1e05824eb3
3
+ metadata.gz: f2c4cda725d6eb45cd43a193c68ac23c7f245cc8
4
+ data.tar.gz: fd1a942fa132ed08c30975fe0001ce7322824a7c
5
5
  SHA512:
6
- metadata.gz: 8b06f641b09f0464538b9e216a370fe92cc431041097086040a7f5bdd1f2f8f957bc60f0ebf071d0052ed74b6ba4780ea994e517dfc76872dce351c8727216d7
7
- data.tar.gz: 94ebb64ff6470952d21da14619f6a35838f38d49a4927c3511761bb8d528f1543072c0172d126f9c6f1c2cf93f25a5864ab0e9fd968bf9fbaad5f13914cfa097
6
+ metadata.gz: bbb19abf494360c1180b761ef264e26da1fe9224efdef272c970b77a509e026f4b7d9dda94824990bc696e3d76f43623ceb90b086cd8e0a570550b6488b75fc7
7
+ data.tar.gz: 7edb4699f193706c4d84df8829b066ae7be0a9d51dedf04d871756a198394c20f7d09546efe58c4e2ecdff6e0d5c10b9953f8cbb490b222d96937b4b23fc264f
data/README.mdown CHANGED
@@ -31,7 +31,7 @@ to avoid this.
31
31
  # setup with vncserver and screen recording
32
32
  JCukeForker::Runner.run Dir['features/**/*.feature'],
33
33
  :vnc => %W[-geometry 1280x1024 -depth 24 -dpi 96]
34
- :recorder => {:ext => 'mp4', :codec => 'mpeg4', :frame_size => '1280x1024', :frame_rate => '5'}
34
+ :record => {:ext => 'mp4', :codec => 'mpeg4', :frame_size => '1280x1024', :frame_rate => '5'}
35
35
  ```
36
36
 
37
37
  Note on Patches/Pull Requests
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'cukeforker'
3
+ require 'jcukeforker'
4
4
 
5
5
  split = ARGV.index("--")
6
6
  extra_args = ARGV[0..(split-1)]
7
7
  features = ARGV[(split+1)..-1]
8
8
 
9
- CukeForker::Runner.run(features, :extra_args => extra_args)
9
+ JCukeForker::Runner.run(features, :extra_args => extra_args)
@@ -45,6 +45,7 @@ module JCukeForker
45
45
  opts = DEFAULT_OPTIONS.dup.merge(opts)
46
46
 
47
47
  max = opts[:max]
48
+ raise ':max must be >= 1' if max < 1
48
49
  format = opts[:format]
49
50
  out = File.join opts[:out]
50
51
  listeners = Array(opts[:notify])
@@ -56,10 +57,8 @@ module JCukeForker
56
57
  listeners << LoggingListener.new
57
58
  end
58
59
 
59
- task_manager = TaskManager.new
60
- features.each do |feature|
61
- task_manager.add({feature: feature, format: format,out: out,extra_args: extra_args})
62
- end
60
+ task_opts = {format: format,out: out,extra_args: extra_args}
61
+ task_manager = TaskManager.new features, task_opts
63
62
 
64
63
  listeners << task_manager
65
64
  status_server = StatusServer.new port
@@ -2,15 +2,12 @@
2
2
  module JCukeForker
3
3
  class TaskManager < AbstractListener
4
4
 
5
- def initialize()
6
- @tasks = []
5
+ def initialize(features, opts={})
6
+ @features = features
7
+ @opts = opts
7
8
  @worker_sockets = {}
8
9
  end
9
10
 
10
- def add(task)
11
- @tasks << task
12
- end
13
-
14
11
  def on_worker_register(worker_path)
15
12
  @worker_sockets[worker_path] = UNIXSocket.open worker_path
16
13
  pop_task worker_path
@@ -32,8 +29,10 @@ module JCukeForker
32
29
  private
33
30
 
34
31
  def pop_task(worker_path)
35
- task = @tasks.shift || '__KILL__'
36
- task = task.to_json if task.is_a? Hash
32
+ task = '__KILL__'
33
+ if feature = @features.shift
34
+ task = @opts.merge(feature: feature).to_json
35
+ end
37
36
 
38
37
  @worker_sockets[worker_path].puts(task)
39
38
  end
@@ -1,3 +1,3 @@
1
1
  module JCukeForker
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  require_relative './worker'
2
2
 
3
- worker = JCukeForker::Worker.new *$ARGV
3
+ worker = JCukeForker::Worker.new *ARGV
4
4
  worker.register
5
5
  worker.run
6
6
  worker.close
@@ -8,15 +8,15 @@ module JCukeForker
8
8
  it "logs all events" do
9
9
  Time.stub(:now => Time.now)
10
10
 
11
- mock_worker = {:path => '/tmp/12sd3-1', :feature => 'foo/bar', :failed? => 'true'}
12
- mock_worker2 = {:path => '/tmp/12sd3-15', :feature => 'foo/baz', :failed? => 'false'}
11
+ mock_worker = {:path => '/tmp/12sd3-1', :feature => 'foo/bar', :status => true }
12
+ mock_worker2 = {:path => '/tmp/12sd3-15', :feature => 'foo/baz', :status => false}
13
13
 
14
14
  listener.on_run_starting
15
15
  listener.on_worker_register mock_worker[:path]
16
16
  listener.on_task_starting mock_worker[:path], mock_worker[:feature]
17
17
  listener.on_worker_register mock_worker2[:path]
18
18
  listener.on_task_starting mock_worker2[:path], mock_worker2[:feature]
19
- listener.on_task_finished mock_worker[:path], mock_worker[:feature], mock_worker[:failed?]
19
+ listener.on_task_finished mock_worker[:path], mock_worker[:feature], mock_worker[:status]
20
20
  listener.on_task_finished mock_worker2[:path], mock_worker2[:feature], mock_worker2[:failed?]
21
21
  listener.on_worker_dead mock_worker[:path]
22
22
  listener.on_worker_dead mock_worker2[:path]
@@ -25,22 +25,19 @@ module JCukeForker
25
25
 
26
26
  timestamp = Time.now.strftime("%Y-%m-%d %H:%M:%S##{Process.pid}")
27
27
 
28
- str = <<-OUTPUT
28
+ stdout.string.should == <<-OUTPUT
29
29
  I, [#{timestamp}] INFO -- : [ run ] starting
30
30
  I, [#{timestamp}] INFO -- : [ worker 1 ] register: /tmp/12sd3-1
31
31
  I, [#{timestamp}] INFO -- : [ worker 1 ] starting: foo/bar
32
32
  I, [#{timestamp}] INFO -- : [ worker 15 ] register: /tmp/12sd3-15
33
33
  I, [#{timestamp}] INFO -- : [ worker 15 ] starting: foo/baz
34
- I, [#{timestamp}] INFO -- : [ worker 1 ] failed : foo/bar
35
- I, [#{timestamp}] INFO -- : [ worker 15 ] passed : foo/baz
34
+ I, [#{timestamp}] INFO -- : [ worker 1 ] passed : foo/bar
35
+ 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
39
  I, [#{timestamp}] INFO -- : [ run ] finished, failed
40
- OUTPUT
41
-
42
- puts str
43
- stdout.string.should == str
40
+ OUTPUT
44
41
  end
45
42
  end # Worker
46
43
  end # CukeForker
@@ -19,15 +19,12 @@ module JCukeForker
19
19
  mock_status_server = double(StatusServer)
20
20
  mock_tasks = Array.new(2) { |n| double("Worker-#{n}") }
21
21
 
22
- TaskManager.should_receive(:new).and_return mock_task_manager
22
+ TaskManager.should_receive(:new).with(features, {format: format, out: out, extra_args: []}).and_return mock_task_manager
23
23
  StatusServer.should_receive(:new).with('6333').and_return mock_status_server
24
24
 
25
25
  mock_status_server.should_receive(:add_observer).with listeners.first
26
26
  mock_status_server.should_receive(:add_observer).with mock_task_manager
27
27
 
28
- mock_task_manager.should_receive(:add).with(feature: features[0], format: format, out: out, extra_args: [])
29
- mock_task_manager.should_receive(:add).with(feature: features[1], format: format, out: out, extra_args: [])
30
-
31
28
  Runner.create(features,
32
29
  :max => max,
33
30
  :notify => listeners,
@@ -3,25 +3,23 @@ require File.expand_path("../../spec_helper", __FILE__)
3
3
  module JCukeForker
4
4
  describe TaskManager do
5
5
  let(:worker_path) { '/tmp/jcukeforker-test-socket' }
6
- let(:task) { {name: 'my task'} }
6
+ let(:feature) { 'feature:1' }
7
7
  let(:mock_socket) { double('socket', :puts => nil) }
8
8
 
9
9
  it "can register a worker" do
10
10
 
11
11
  UNIXSocket.stub(:open).and_return(mock_socket)
12
- expect(mock_socket).to receive(:puts).with(task.to_json)
12
+ expect(mock_socket).to receive(:puts).with({feature: feature}.to_json)
13
13
 
14
- task_manager = TaskManager.new
15
- task_manager.add task
14
+ task_manager = TaskManager.new [feature]
16
15
  task_manager.on_worker_register worker_path
17
16
  end
18
17
 
19
18
  it "can finish task" do
20
19
 
21
- expect(mock_socket).to receive(:puts).with(task.to_json)
20
+ expect(mock_socket).to receive(:puts).with({feature: feature}.to_json)
22
21
 
23
- task_manager = TaskManager.new
24
- task_manager.add task
22
+ task_manager = TaskManager.new [feature]
25
23
  task_manager.instance_variable_get(:@worker_sockets)[worker_path] = mock_socket
26
24
  task_manager.on_task_finished worker_path, nil, nil
27
25
  end
@@ -30,8 +28,7 @@ module JCukeForker
30
28
 
31
29
  expect(mock_socket).to receive(:close)
32
30
 
33
- task_manager = TaskManager.new
34
- task_manager.add task
31
+ task_manager = TaskManager.new [feature]
35
32
  task_manager.instance_variable_get(:@worker_sockets)[worker_path] = mock_socket
36
33
  task_manager.on_worker_dead worker_path
37
34
  end
@@ -40,7 +37,7 @@ module JCukeForker
40
37
 
41
38
  expect(mock_socket).to receive(:puts).with('__KILL__')
42
39
 
43
- task_manager = TaskManager.new
40
+ task_manager = TaskManager.new []
44
41
  task_manager.instance_variable_get(:@worker_sockets)[worker_path] = mock_socket
45
42
  task_manager.on_task_finished worker_path, nil, nil
46
43
  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.4
4
+ version: 0.2.5
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-13 00:00:00.000000000 Z
12
+ date: 2014-08-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber
@@ -113,7 +113,7 @@ description: Library to maintain a forking queue of Cucumber processes, with opt
113
113
  email:
114
114
  - gowanjason@gmail.com
115
115
  executables:
116
- - cukeforker
116
+ - jcukeforker
117
117
  extensions: []
118
118
  extra_rdoc_files: []
119
119
  files:
@@ -123,7 +123,7 @@ files:
123
123
  - LICENSE
124
124
  - README.mdown
125
125
  - Rakefile
126
- - bin/cukeforker
126
+ - bin/jcukeforker
127
127
  - jcukeforker.gemspec
128
128
  - lib/jcukeforker.rb
129
129
  - lib/jcukeforker/abstract_listener.rb