jcukeforker 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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