spork 1.0.0rc2-x86-mswin32 → 1.0.0rc4-x86-mswin32
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 +7 -0
- data/Gemfile +5 -5
- data/README.rdoc +1 -1
- data/features/support/bundler_helpers.rb +4 -2
- data/features/support/spork_world.rb +14 -2
- data/lib/spork/diagnoser.rb +1 -1
- data/lib/spork/forker.rb +12 -9
- data/lib/spork/run_strategy/magazine.rb +17 -18
- data/lib/spork/run_strategy/magazine/magazine_slave.rb +0 -0
- data/lib/spork/run_strategy/magazine/magazine_slave_provider.rb +1 -0
- data/lib/spork/run_strategy/magazine/rinda_ring_finger_patch.rb +26 -0
- data/lib/spork/run_strategy/magazine/ring_server.rb +1 -0
- data/lib/spork/runner.rb +2 -1
- data/lib/spork/server.rb +3 -2
- data/spec/spork/forker_spec.rb +6 -1
- metadata +14 -13
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bf84276b846d526b9c44bdcebf1b3e53a4441212
|
4
|
+
data.tar.gz: dc63d581fde6cb9b5e88b252edfbe5351063a8ac
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: aa9500a70e3a522320000ecf0e5f592125870f24e4f98c17c7aa5ff20d923e2ba779b7a8acd541f722317fbe19a14f46440ff4eef2b10cee35de1b78c612cff6
|
7
|
+
data.tar.gz: e9f8559eb56aed5a5f2a750651cb025d59629660f440942aa20ed49dc7ce8064c44372db536d0b975ab87bc76b72f09b3e5ab66846dd3f78aefc4e9dfa2efdfa
|
data/Gemfile
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
|
-
gem 'cucumber', '~>
|
4
|
-
gem 'rspec', '~>
|
3
|
+
gem 'cucumber', '~>1.3.2'
|
4
|
+
gem 'rspec', '~>2.13.0'
|
5
5
|
gem 'rake'
|
6
6
|
gem "spork", :path => File.expand_path("../", __FILE__)
|
7
7
|
|
8
|
-
if RUBY_VERSION =~ /^1\.9/
|
9
|
-
gem '
|
8
|
+
if RUBY_VERSION =~ /^2\.0|^1\.9/
|
9
|
+
gem 'debugger'
|
10
10
|
else
|
11
11
|
gem 'ruby-debug'
|
12
12
|
end
|
data/README.rdoc
CHANGED
@@ -2,8 +2,10 @@ module BundlerHelpers
|
|
2
2
|
extend self
|
3
3
|
def install_bundle(dir)
|
4
4
|
Dir.chdir(dir) do
|
5
|
-
command = "
|
6
|
-
|
5
|
+
command = "bundle install --gemfile=#{Dir.pwd}/Gemfile --path=#{Dir.pwd}/.bundle"
|
6
|
+
Bundler.with_clean_env do
|
7
|
+
system(command)
|
8
|
+
end
|
7
9
|
$?.exitstatus
|
8
10
|
end
|
9
11
|
end
|
@@ -53,7 +53,15 @@ class SporkWorld
|
|
53
53
|
stderr_file = Tempfile.new('spork')
|
54
54
|
stderr_file.close
|
55
55
|
in_current_dir do
|
56
|
-
|
56
|
+
if command.start_with?("rails new")
|
57
|
+
@last_stdout = `bundle exec #{command} 2> #{stderr_file.path}`
|
58
|
+
else
|
59
|
+
gemfile = ENV['BUNDLE_GEMFILE']
|
60
|
+
Bundler.with_clean_env do
|
61
|
+
ENV['BUNDLE_GEMFILE'] = gemfile
|
62
|
+
@last_stdout = `bundle exec #{command} 2> #{stderr_file.path}`
|
63
|
+
end
|
64
|
+
end
|
57
65
|
@last_exit_status = $?.exitstatus
|
58
66
|
end
|
59
67
|
@last_stderr = IO.read(stderr_file.path)
|
@@ -61,7 +69,11 @@ class SporkWorld
|
|
61
69
|
|
62
70
|
def run_in_background(command)
|
63
71
|
in_current_dir do
|
64
|
-
|
72
|
+
gemfile = ENV['BUNDLE_GEMFILE']
|
73
|
+
Bundler.with_clean_env do
|
74
|
+
ENV['BUNDLE_GEMFILE'] = gemfile
|
75
|
+
@background_job = BackgroundJob.run("bundle exec " + command)
|
76
|
+
end
|
65
77
|
end
|
66
78
|
@background_jobs << @background_job
|
67
79
|
@background_job
|
data/lib/spork/diagnoser.rb
CHANGED
data/lib/spork/forker.rb
CHANGED
@@ -6,10 +6,10 @@
|
|
6
6
|
# sleep 3
|
7
7
|
# "success"
|
8
8
|
# end
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# forker.result # => "success"
|
11
11
|
class Spork::Forker
|
12
|
-
|
12
|
+
|
13
13
|
# Raised if the fork died (was killed) before it sent it's response back.
|
14
14
|
class ForkDiedException < Exception; end
|
15
15
|
def initialize(&block)
|
@@ -23,35 +23,38 @@ class Spork::Forker
|
|
23
23
|
master_response = Marshal.load(@child_io)
|
24
24
|
rescue EOFError
|
25
25
|
nil
|
26
|
+
rescue SystemExit => e
|
27
|
+
puts "Error: exit code #{e.status}" unless e.status == 0
|
26
28
|
rescue Exception => e
|
27
29
|
puts "Exception encountered: #{e.inspect}\nbacktrace:\n#{e.backtrace * %(\n)}"
|
28
30
|
end
|
29
|
-
|
31
|
+
|
30
32
|
# terminate, skipping any at_exit blocks.
|
31
33
|
exit!(0)
|
32
34
|
end
|
33
35
|
@child_io.close
|
34
36
|
end
|
35
|
-
|
37
|
+
|
36
38
|
# Wait for the fork to finish running, and then return its return value.
|
37
39
|
#
|
38
40
|
# If the fork was aborted, then result returns nil.
|
39
41
|
def result
|
40
|
-
return
|
42
|
+
return @result if defined?(@result) || ! running?
|
41
43
|
result_thread = Thread.new do
|
42
44
|
begin
|
43
45
|
@result = Marshal.load(@server_io)
|
44
46
|
Marshal.dump('ACK', @server_io)
|
45
|
-
rescue
|
47
|
+
rescue EOFError
|
46
48
|
@result = nil
|
49
|
+
rescue ForkDiedException
|
47
50
|
end
|
48
51
|
end
|
49
52
|
Process.wait(@child_pid)
|
50
|
-
result_thread.raise(ForkDiedException) if
|
53
|
+
result_thread.raise(ForkDiedException) if result_thread.status == "sleep"
|
51
54
|
@child_pid = nil
|
52
55
|
@result
|
53
56
|
end
|
54
|
-
|
57
|
+
|
55
58
|
# abort the current running fork
|
56
59
|
def abort
|
57
60
|
if running?
|
@@ -60,7 +63,7 @@ class Spork::Forker
|
|
60
63
|
true
|
61
64
|
end
|
62
65
|
end
|
63
|
-
|
66
|
+
|
64
67
|
def running?
|
65
68
|
return false unless @child_pid
|
66
69
|
Process.getpgid(@child_pid)
|
@@ -2,6 +2,7 @@
|
|
2
2
|
# to boldly just run test after test
|
3
3
|
# as they come in
|
4
4
|
require 'drb'
|
5
|
+
require 'timeout'
|
5
6
|
require 'rinda/ring'
|
6
7
|
if RUBY_PLATFORM =~ /mswin|mingw/ and RUBY_VERSION < '1.9.1'
|
7
8
|
begin
|
@@ -16,6 +17,7 @@ require 'rubygems' # used for Gem.ruby
|
|
16
17
|
|
17
18
|
$:.unshift(File.dirname(__FILE__))
|
18
19
|
require 'magazine/magazine_slave'
|
20
|
+
require 'magazine/rinda_ring_finger_patch' if RUBY_VERSION > '1.9.1'
|
19
21
|
|
20
22
|
class Spork::RunStrategy::Magazine < Spork::RunStrategy
|
21
23
|
|
@@ -84,24 +86,21 @@ class Spork::RunStrategy::Magazine < Spork::RunStrategy
|
|
84
86
|
end
|
85
87
|
|
86
88
|
def run(argv, stderr, stdout)
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
else
|
103
|
-
puts '- NO tuple'; $stdout.flush
|
104
|
-
end
|
89
|
+
DRb.start_service
|
90
|
+
ts = Rinda::RingFinger.primary
|
91
|
+
Timeout.timeout(60) {sleep 0.1 until ts.read_all([:name, :MagazineSlave, nil, nil]).size > 0}
|
92
|
+
print ' <-- take tuple'; stdout.flush
|
93
|
+
tuple = ts.take([:name, :MagazineSlave, nil, nil])
|
94
|
+
slave = tuple[2]
|
95
|
+
id = tuple[3]
|
96
|
+
|
97
|
+
puts "(#{slave.id_num}); slave.run..."; $stdout.flush
|
98
|
+
begin
|
99
|
+
slave.run(argv,stderr,stdout)
|
100
|
+
puts " -- (#{slave.id_num});run done"; $stdout.flush
|
101
|
+
ensure
|
102
|
+
restart_slave(id)
|
103
|
+
end
|
105
104
|
end
|
106
105
|
|
107
106
|
def restart_slave(id)
|
File without changes
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Patch for Rinda::RingFinger.primary hanging forever on Ruby 1.9.2 & 1.9.3
|
2
|
+
# from http://www.ruby-forum.com/topic/4229908
|
3
|
+
require 'rinda/ring'
|
4
|
+
|
5
|
+
module Rinda
|
6
|
+
class RingFinger
|
7
|
+
def lookup_ring_any(timeout=5)
|
8
|
+
queue = Queue.new
|
9
|
+
|
10
|
+
Thread.new do
|
11
|
+
self.lookup_ring(timeout) do |ts|
|
12
|
+
queue.push(ts)
|
13
|
+
end
|
14
|
+
queue.push(nil)
|
15
|
+
end
|
16
|
+
|
17
|
+
@primary = queue.pop
|
18
|
+
raise('RingNotFound') if @primary.nil?
|
19
|
+
while it = queue.pop
|
20
|
+
@rings.push(it)
|
21
|
+
end
|
22
|
+
|
23
|
+
@primary
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/spork/runner.rb
CHANGED
@@ -22,6 +22,7 @@ module Spork
|
|
22
22
|
opt.on("-b", "--bootstrap") {|ignore| @options[:bootstrap] = true }
|
23
23
|
opt.on("-d", "--diagnose") {|ignore| @options[:diagnose] = true }
|
24
24
|
opt.on("-h", "--help") {|ignore| @options[:help] = true }
|
25
|
+
opt.on("-q", "--quiet") {|ignore| @options[:quiet] = true }
|
25
26
|
opt.on("-p", "--port [PORT]") {|port| @options[:port] = port }
|
26
27
|
non_option_args = args.select { |arg| ! args[0].match(/^-/) }
|
27
28
|
@options[:server_matcher] = non_option_args[0]
|
@@ -72,7 +73,7 @@ module Spork
|
|
72
73
|
else
|
73
74
|
run_strategy = Spork::RunStrategy.factory(test_framework)
|
74
75
|
return(false) unless run_strategy.preload
|
75
|
-
Spork::Server.run(:port => @options[:port] || test_framework.default_port, :run_strategy => run_strategy)
|
76
|
+
Spork::Server.run(:port => @options[:port] || test_framework.default_port, :run_strategy => run_strategy, :quiet => @options[:quiet])
|
76
77
|
return true
|
77
78
|
end
|
78
79
|
end
|
data/lib/spork/server.rb
CHANGED
@@ -14,6 +14,7 @@ class Spork::Server
|
|
14
14
|
def initialize(options = {})
|
15
15
|
@run_strategy = options[:run_strategy]
|
16
16
|
@port = options[:port]
|
17
|
+
@quiet = options[:quiet]
|
17
18
|
end
|
18
19
|
|
19
20
|
def self.run(options = {})
|
@@ -44,9 +45,9 @@ class Spork::Server
|
|
44
45
|
#
|
45
46
|
# When implementing a test server, don't override this method: override run_tests instead.
|
46
47
|
def run(argv, stderr, stdout)
|
47
|
-
puts "Running tests with args #{argv.inspect}..."
|
48
|
+
puts "Running tests with args #{argv.inspect}..." unless @quiet
|
48
49
|
result = run_strategy.run(argv, stderr, stdout)
|
49
|
-
puts "Done.\n\n"
|
50
|
+
puts "Done.\n\n" unless @quiet
|
50
51
|
result
|
51
52
|
end
|
52
53
|
|
data/spec/spork/forker_spec.rb
CHANGED
@@ -29,7 +29,12 @@ describe Spork::Forker do
|
|
29
29
|
it "aborts a fork and returns nil for the result" do
|
30
30
|
started_at = Time.now
|
31
31
|
ended_at = nil
|
32
|
-
forker = Spork::Forker.new
|
32
|
+
forker = Spork::Forker.new do
|
33
|
+
begin
|
34
|
+
sleep 5
|
35
|
+
rescue SignalException
|
36
|
+
end
|
37
|
+
end
|
33
38
|
Thread.new do
|
34
39
|
forker.result.should == nil
|
35
40
|
ended_at = Time.now
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spork
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease: 5
|
4
|
+
version: 1.0.0rc4
|
6
5
|
platform: x86-mswin32
|
7
6
|
authors:
|
8
7
|
- Tim Harper
|
@@ -10,19 +9,22 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2013-09-14 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: win32-process
|
17
|
-
requirement:
|
18
|
-
none: false
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - '>='
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '0'
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
|
-
version_requirements:
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
26
28
|
description: A forking Drb spec server
|
27
29
|
email:
|
28
30
|
- timcharper+spork@gmail.com
|
@@ -46,6 +48,7 @@ files:
|
|
46
48
|
- lib/spork/run_strategy/forking.rb
|
47
49
|
- lib/spork/run_strategy/magazine/magazine_slave.rb
|
48
50
|
- lib/spork/run_strategy/magazine/magazine_slave_provider.rb
|
51
|
+
- lib/spork/run_strategy/magazine/rinda_ring_finger_patch.rb
|
49
52
|
- lib/spork/run_strategy/magazine/ring_server.rb
|
50
53
|
- lib/spork/run_strategy/magazine.rb
|
51
54
|
- lib/spork/run_strategy.rb
|
@@ -89,6 +92,7 @@ files:
|
|
89
92
|
- bin/spork
|
90
93
|
homepage: http://github.com/sporkrb/spork
|
91
94
|
licenses: []
|
95
|
+
metadata: {}
|
92
96
|
post_install_message:
|
93
97
|
rdoc_options:
|
94
98
|
- --main
|
@@ -96,20 +100,18 @@ rdoc_options:
|
|
96
100
|
require_paths:
|
97
101
|
- lib
|
98
102
|
required_ruby_version: !ruby/object:Gem::Requirement
|
99
|
-
none: false
|
100
103
|
requirements:
|
101
|
-
- -
|
104
|
+
- - '>='
|
102
105
|
- !ruby/object:Gem::Version
|
103
106
|
version: '0'
|
104
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
108
|
requirements:
|
107
|
-
- -
|
109
|
+
- - '>='
|
108
110
|
- !ruby/object:Gem::Version
|
109
111
|
version: '0'
|
110
112
|
requirements: []
|
111
113
|
rubyforge_project:
|
112
|
-
rubygems_version: 1.
|
114
|
+
rubygems_version: 2.1.3
|
113
115
|
signing_key:
|
114
116
|
specification_version: 3
|
115
117
|
summary: spork
|
@@ -142,4 +144,3 @@ test_files:
|
|
142
144
|
- spec/support/should_include_a_string_like.rb
|
143
145
|
- spec/support/test_io_streams.rb
|
144
146
|
- spec/support/tmp_project_helpers.rb
|
145
|
-
has_rdoc:
|