spork 0.7.5 → 0.7.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.
- data/features/at_exit_during_each_run.feature +34 -0
- data/lib/spork.rb +29 -0
- data/lib/spork/app_framework.rb +1 -1
- data/lib/spork/forker.rb +1 -1
- data/lib/spork/run_strategy/forking.rb +3 -1
- metadata +3 -2
@@ -0,0 +1,34 @@
|
|
1
|
+
Feature: At exit during each run
|
2
|
+
In order to make sure at_exit hooks defined during the run get called
|
3
|
+
I want to override kernel #at_exit
|
4
|
+
|
5
|
+
Scenario: at exit
|
6
|
+
|
7
|
+
Given a file named "spec/spec_helper.rb" with:
|
8
|
+
"""
|
9
|
+
require 'rubygems'
|
10
|
+
require 'spec'
|
11
|
+
Spork.prefork do
|
12
|
+
puts "loading"
|
13
|
+
at_exit { puts "prefork at_exit called" }
|
14
|
+
end
|
15
|
+
|
16
|
+
Spork.each_run do
|
17
|
+
puts "running"
|
18
|
+
at_exit { puts "each_run at_exit called" }
|
19
|
+
end
|
20
|
+
|
21
|
+
"""
|
22
|
+
|
23
|
+
And a file named "spec/did_it_work_spec.rb" with:
|
24
|
+
"""
|
25
|
+
describe "Did it work?" do
|
26
|
+
it "checks to see if all worked" do
|
27
|
+
puts "ran specs"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
"""
|
31
|
+
When I fire up a spork instance with "spork rspec"
|
32
|
+
And I run spec --drb spec/did_it_work_spec.rb
|
33
|
+
Then the output should contain "each_run at_exit called"
|
34
|
+
Then the output should not contain "prefork at_exit called"
|
data/lib/spork.rb
CHANGED
@@ -37,6 +37,16 @@ module Spork
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
# Run a block after specs are run.
|
41
|
+
#
|
42
|
+
# == Parameters
|
43
|
+
#
|
44
|
+
# * +prevent_double_run+ - Pass false to disable double run prevention
|
45
|
+
def after_each_run(prevent_double_run = true, &block)
|
46
|
+
return if prevent_double_run && already_ran?(caller.first)
|
47
|
+
after_each_run_procs << block
|
48
|
+
end
|
49
|
+
|
40
50
|
# Used by the server. Sets the state to activate spork. Otherwise, prefork and each_run are run in passive mode, allowing specs without a Spork server.
|
41
51
|
def using_spork!
|
42
52
|
@state = :using_spork
|
@@ -59,11 +69,18 @@ module Spork
|
|
59
69
|
|
60
70
|
# Used by the server. Called to run all of the prefork blocks.
|
61
71
|
def exec_each_run(&block)
|
72
|
+
activate_after_each_run_at_exit_hook
|
62
73
|
each_run_procs.each { |p| p.call }
|
63
74
|
each_run_procs.clear
|
64
75
|
yield if block_given?
|
65
76
|
end
|
66
77
|
|
78
|
+
# Used by the server. Called to run all of the after_each_run blocks.
|
79
|
+
def exec_after_each_run
|
80
|
+
after_each_run_procs.each { |p| p.call }
|
81
|
+
after_each_run_procs.clear
|
82
|
+
end
|
83
|
+
|
67
84
|
# Traps an instance method of a class (or module) so any calls to it don't actually run until Spork.exec_each_run
|
68
85
|
def trap_method(klass, method_name)
|
69
86
|
method_name_without_spork, method_name_with_spork = alias_method_names(method_name, :spork)
|
@@ -98,6 +115,14 @@ module Spork
|
|
98
115
|
end
|
99
116
|
|
100
117
|
private
|
118
|
+
def activate_after_each_run_at_exit_hook
|
119
|
+
Kernel.module_eval do
|
120
|
+
def at_exit(&block)
|
121
|
+
Spork.after_each_run(false, &block)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
101
126
|
def alias_method_names(method_name, feature)
|
102
127
|
/^(.+?)([\?\!]{0,1})$/.match(method_name.to_s)
|
103
128
|
["#{$1}_without_spork#{$2}", "#{$1}_with_spork#{$2}"]
|
@@ -122,5 +147,9 @@ module Spork
|
|
122
147
|
def each_run_procs
|
123
148
|
@each_run_procs ||= []
|
124
149
|
end
|
150
|
+
|
151
|
+
def after_each_run_procs
|
152
|
+
@after_each_run_procs ||= []
|
153
|
+
end
|
125
154
|
end
|
126
155
|
end
|
data/lib/spork/app_framework.rb
CHANGED
@@ -8,7 +8,7 @@ class Spork::AppFramework
|
|
8
8
|
:Rails => lambda {
|
9
9
|
File.exist?("config/environment.rb") && File.read("config/environment.rb").include?('RAILS_GEM_VERSION')
|
10
10
|
}
|
11
|
-
}
|
11
|
+
} unless defined? SUPPORTED_FRAMEWORKS
|
12
12
|
|
13
13
|
def self.setup_autoload
|
14
14
|
([:Unknown] + SUPPORTED_FRAMEWORKS.keys).each do |name|
|
data/lib/spork/forker.rb
CHANGED
@@ -10,7 +10,9 @@ class Spork::RunStrategy::Forking < Spork::RunStrategy
|
|
10
10
|
$stdout, $stderr = stdout, stderr
|
11
11
|
load test_framework.helper_file
|
12
12
|
Spork.exec_each_run
|
13
|
-
test_framework.run_tests(argv, stderr, stdout)
|
13
|
+
result = test_framework.run_tests(argv, stderr, stdout)
|
14
|
+
Spork.exec_after_each_run
|
15
|
+
result
|
14
16
|
end
|
15
17
|
@child.result
|
16
18
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spork
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Harper
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-03-02 00:00:00 -07:00
|
13
13
|
default_executable: spork
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -27,6 +27,7 @@ files:
|
|
27
27
|
- MIT-LICENSE
|
28
28
|
- README.rdoc
|
29
29
|
- assets/bootstrap.rb
|
30
|
+
- features/at_exit_during_each_run.feature
|
30
31
|
- features/cucumber_rails_integration.feature
|
31
32
|
- features/diagnostic_mode.feature
|
32
33
|
- features/rails_delayed_loading_workarounds.feature
|