spork 0.5.10 → 0.5.11
Sign up to get free protection for your applications and to get access to all the features.
- data/features/rspec_rails_integration.feature +1 -0
- data/features/steps/general_steps.rb +0 -0
- data/lib/spork/app_framework.rb +1 -1
- data/lib/spork/runner.rb +18 -43
- data/lib/spork/server.rb +12 -125
- data/lib/spork/test_framework.rb +163 -0
- data/lib/spork/test_framework/cucumber.rb +24 -0
- data/lib/spork/test_framework/rspec.rb +14 -0
- data/spec/spec_helper.rb +36 -2
- data/spec/spork/runner_spec.rb +20 -26
- data/spec/spork/server_spec.rb +16 -106
- data/spec/spork/test_framework/cucumber_spec.rb +11 -0
- data/spec/spork/test_framework/rspec_spec.rb +10 -0
- data/spec/spork/test_framework_spec.rb +114 -0
- data/spec/support/fake_framework.rb +15 -0
- metadata +13 -7
- data/lib/spork/server/cucumber.rb +0 -35
- data/lib/spork/server/rspec.rb +0 -22
- data/spec/spork/server/cucumber_spec.rb +0 -25
- data/spec/spork/server/rspec_spec.rb +0 -25
@@ -68,6 +68,7 @@ Feature: Rails Integration
|
|
68
68
|
|
69
69
|
|
70
70
|
Scenario: Running spork with a rails app and a non-standard port
|
71
|
+
Given this scenario is pending until rspec releases a version that supports --port
|
71
72
|
Given a file named "spec/did_it_work_spec.rb" with:
|
72
73
|
"""
|
73
74
|
describe "Did it work?" do
|
File without changes
|
data/lib/spork/app_framework.rb
CHANGED
@@ -54,7 +54,7 @@ class Spork::AppFramework
|
|
54
54
|
|
55
55
|
# Abstract: The path to the file that loads the project environment, ie config/environment.rb. Returns nil if there is none.
|
56
56
|
def entry_point
|
57
|
-
raise
|
57
|
+
raise NotImplementedError
|
58
58
|
end
|
59
59
|
|
60
60
|
def preload(&block)
|
data/lib/spork/runner.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
require 'spork/server'
|
3
|
+
require 'spork/test_framework'
|
3
4
|
|
4
5
|
module Spork
|
5
6
|
# This is used by bin/spork. It's wrapped in a class because it's easier to test that way.
|
6
7
|
class Runner
|
7
|
-
attr_reader :
|
8
|
+
attr_reader :test_framework
|
8
9
|
|
9
10
|
def self.run(args, output, error)
|
10
11
|
self.new(args, output, error).run
|
@@ -30,74 +31,48 @@ module Spork
|
|
30
31
|
if @options[:help]
|
31
32
|
@output.puts opt
|
32
33
|
@output.puts
|
33
|
-
@output.puts
|
34
|
+
@output.puts supported_test_frameworks_text
|
34
35
|
exit(0)
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
38
|
-
def
|
39
|
+
def supported_test_frameworks_text
|
39
40
|
text = StringIO.new
|
40
41
|
|
41
42
|
text.puts "Supported test frameworks:"
|
42
|
-
text.puts Spork::
|
43
|
+
text.puts Spork::TestFramework.supported_test_frameworks.sort { |a,b| a.short_name <=> b.short_name }.map { |s| (s.available? ? '(*) ' : '( ) ') + s.short_name }
|
43
44
|
text.puts "\nLegend: ( ) - not detected in project (*) - detected\n"
|
44
45
|
text.string
|
45
46
|
end
|
46
47
|
|
47
48
|
# Returns a server for the specified (or the detected default) testing framework. Returns nil if none detected, or if the specified is not supported or available.
|
48
|
-
def
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
#{
|
54
|
-
|
55
|
-
#{supported_servers_text}
|
56
|
-
ERROR
|
57
|
-
return
|
58
|
-
end
|
59
|
-
|
60
|
-
unless @server.available?
|
61
|
-
@error.puts <<-USEFUL_ERROR
|
62
|
-
I can't find the helper file #{@server.helper_file} for the #{@server.server_name} testing framework.
|
63
|
-
Are you running me from the project directory?
|
64
|
-
USEFUL_ERROR
|
65
|
-
return
|
66
|
-
end
|
67
|
-
else
|
68
|
-
@server = Spork::Server.available_servers.first
|
69
|
-
if @server.nil?
|
70
|
-
@error.puts <<-USEFUL_ERROR
|
71
|
-
I can't find any testing frameworks to use.
|
72
|
-
Are you running me from a project directory?
|
73
|
-
USEFUL_ERROR
|
74
|
-
return
|
75
|
-
end
|
76
|
-
end
|
77
|
-
@server
|
49
|
+
def find_test_framework
|
50
|
+
Spork::TestFramework.factory(@output, @error, options[:server_matcher])
|
51
|
+
rescue Spork::TestFramework::NoFrameworksAvailable => e
|
52
|
+
@error.puts e.message
|
53
|
+
rescue Spork::TestFramework::FactoryException => e
|
54
|
+
@error.puts "#{e.message}\n\n#{supported_test_frameworks_text}"
|
78
55
|
end
|
79
56
|
|
80
57
|
def run
|
81
|
-
return false unless
|
58
|
+
return false unless test_framework = find_test_framework
|
82
59
|
ENV["DRB"] = 'true'
|
83
|
-
@error.puts "Using #{
|
60
|
+
@error.puts "Using #{test_framework.short_name}"
|
84
61
|
@error.flush
|
85
62
|
|
86
|
-
server.port = options[:port]
|
87
|
-
|
88
63
|
case
|
89
64
|
when options[:bootstrap]
|
90
|
-
|
65
|
+
test_framework.bootstrap
|
91
66
|
when options[:diagnose]
|
92
67
|
require 'spork/diagnoser'
|
93
68
|
|
94
|
-
Spork::Diagnoser.install_hook!(
|
95
|
-
|
69
|
+
Spork::Diagnoser.install_hook!(test_framework.entry_point)
|
70
|
+
test_framework.preload
|
96
71
|
Spork::Diagnoser.output_results(@output)
|
97
72
|
return true
|
98
73
|
else
|
99
|
-
return(false) unless
|
100
|
-
|
74
|
+
return(false) unless test_framework.preload
|
75
|
+
Spork::Server.run(:port => @options[:port], :test_framework => test_framework)
|
101
76
|
return true
|
102
77
|
end
|
103
78
|
end
|
data/lib/spork/server.rb
CHANGED
@@ -8,78 +8,16 @@ require 'spork/app_framework.rb'
|
|
8
8
|
#
|
9
9
|
# (This was originally based off of spec_server.rb from rspec-rails (David Chelimsky), which was based on Florian Weber's TDDMate)
|
10
10
|
class Spork::Server
|
11
|
-
|
12
|
-
|
13
|
-
LOAD_PREFERENCE = ['RSpec', 'Cucumber']
|
14
|
-
BOOTSTRAP_FILE = File.dirname(__FILE__) + "/../../assets/bootstrap.rb"
|
15
|
-
|
11
|
+
attr_reader :test_framework
|
16
12
|
include Spork::CustomIOStreams
|
17
13
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
# Abstract method: returns the entry file that loads the testing environment, such as spec/spec_helper.rb.
|
24
|
-
def self.helper_file
|
25
|
-
raise NotImplemented
|
26
|
-
end
|
27
|
-
|
28
|
-
# Convenience method that turns the class name without the namespace
|
29
|
-
def self.server_name
|
30
|
-
self.name.gsub('Spork::Server::', '')
|
31
|
-
end
|
32
|
-
|
33
|
-
# Returns a list of all testing servers that have detected their testing framework being used in the project.
|
34
|
-
def self.available_servers
|
35
|
-
supported_servers.select { |s| s.available? }
|
36
|
-
end
|
37
|
-
|
38
|
-
# Returns a list of all servers that have been implemented (it keeps track of them automatically via Class.inherited)
|
39
|
-
def self.supported_servers(starting_with = nil)
|
40
|
-
@@supported_servers.sort! { |a,b| a.load_preference_index <=> b.load_preference_index }
|
41
|
-
return @@supported_servers if starting_with.nil?
|
42
|
-
@@supported_servers.select do |s|
|
43
|
-
s.server_name.match(/^#{Regexp.escape(starting_with)}/i)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
# Returns true if the testing frameworks helper file exists. Override if this is not sufficient to detect your testing framework.
|
48
|
-
def self.available?
|
49
|
-
File.exist?(helper_file)
|
50
|
-
end
|
51
|
-
|
52
|
-
# Used to specify
|
53
|
-
def self.load_preference_index
|
54
|
-
LOAD_PREFERENCE.index(server_name) || LOAD_PREFERENCE.length
|
14
|
+
def initialize(options = {})
|
15
|
+
@test_framework = options[:test_framework]
|
16
|
+
@port = options[:port]
|
55
17
|
end
|
56
18
|
|
57
|
-
|
58
|
-
|
59
|
-
File.read(helper_file).include?("Spork.prefork")
|
60
|
-
end
|
61
|
-
|
62
|
-
# Bootstraps the current test helper file by prepending a Spork.prefork and Spork.each_run block at the beginning.
|
63
|
-
def self.bootstrap
|
64
|
-
if bootstrapped?
|
65
|
-
stderr.puts "Already bootstrapped!"
|
66
|
-
return
|
67
|
-
end
|
68
|
-
stderr.puts "Bootstrapping #{helper_file}."
|
69
|
-
contents = File.read(helper_file)
|
70
|
-
bootstrap_code = File.read(BOOTSTRAP_FILE)
|
71
|
-
File.open(helper_file, "wb") do |f|
|
72
|
-
f.puts bootstrap_code
|
73
|
-
f.puts contents
|
74
|
-
end
|
75
|
-
|
76
|
-
stderr.puts "Done. Edit #{helper_file} now with your favorite text editor and follow the instructions."
|
77
|
-
true
|
78
|
-
end
|
79
|
-
|
80
|
-
def self.run
|
81
|
-
return unless available?
|
82
|
-
new.listen
|
19
|
+
def self.run(options = {})
|
20
|
+
new(options).listen
|
83
21
|
end
|
84
22
|
|
85
23
|
# Sets up signals and starts the DRb service. If it's successful, it doesn't return. Not ever. You don't need to override this.
|
@@ -93,18 +31,12 @@ class Spork::Server
|
|
93
31
|
DRb.thread.join
|
94
32
|
end
|
95
33
|
|
34
|
+
attr_writer :port
|
35
|
+
|
96
36
|
def port
|
97
|
-
|
37
|
+
@port || test_framework.class.default_port
|
98
38
|
end
|
99
39
|
|
100
|
-
def self.port= p
|
101
|
-
@port = p
|
102
|
-
end
|
103
|
-
|
104
|
-
def helper_file
|
105
|
-
self.class.helper_file
|
106
|
-
end
|
107
|
-
|
108
40
|
# This is the public facing method that is served up by DRb. To use it from the client side (in a testing framework):
|
109
41
|
#
|
110
42
|
# DRb.start_service("druby://localhost:0") # this allows Ruby to do some magical stuff so you can pass an output stream over DRb.
|
@@ -118,8 +50,9 @@ class Spork::Server
|
|
118
50
|
|
119
51
|
@child = ::Spork::Forker.new do
|
120
52
|
$stdout, $stderr = stdout, stderr
|
121
|
-
|
122
|
-
|
53
|
+
load test_framework.helper_file
|
54
|
+
Spork.exec_each_run
|
55
|
+
test_framework.run_tests(argv, stderr, stdout)
|
123
56
|
end
|
124
57
|
@child.result
|
125
58
|
end
|
@@ -129,51 +62,7 @@ class Spork::Server
|
|
129
62
|
@child && @child.running?
|
130
63
|
end
|
131
64
|
|
132
|
-
protected
|
133
|
-
# Abstract method: here is where the server runs the tests.
|
134
|
-
def run_tests(argv, input, output)
|
135
|
-
raise NotImplemented
|
136
|
-
end
|
137
|
-
|
138
65
|
private
|
139
|
-
def self.inherited(subclass)
|
140
|
-
@@supported_servers << subclass
|
141
|
-
end
|
142
|
-
|
143
|
-
def self.framework
|
144
|
-
@framework ||= Spork::AppFramework.detect_framework
|
145
|
-
end
|
146
|
-
|
147
|
-
def self.entry_point
|
148
|
-
bootstrapped? ? helper_file : framework.entry_point
|
149
|
-
end
|
150
|
-
|
151
|
-
def self.preload
|
152
|
-
Spork.exec_prefork do
|
153
|
-
unless bootstrapped?
|
154
|
-
stderr.puts "#{helper_file} has not been bootstrapped. Run spork --bootstrap to do so."
|
155
|
-
stderr.flush
|
156
|
-
|
157
|
-
if framework.bootstrap_required?
|
158
|
-
stderr.puts "I can't do anything for you by default for the framework your using: #{framework.short_name}.\nYou must bootstrap #{helper_file} to continue."
|
159
|
-
stderr.flush
|
160
|
-
return false
|
161
|
-
else
|
162
|
-
load(framework.entry_point)
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
framework.preload do
|
167
|
-
if bootstrapped?
|
168
|
-
stderr.puts "Loading Spork.prefork block..."
|
169
|
-
stderr.flush
|
170
|
-
load(helper_file)
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
174
|
-
true
|
175
|
-
end
|
176
|
-
|
177
66
|
def restart
|
178
67
|
stderr.puts "restarting"
|
179
68
|
stderr.flush
|
@@ -197,5 +86,3 @@ class Spork::Server
|
|
197
86
|
end
|
198
87
|
end
|
199
88
|
end
|
200
|
-
|
201
|
-
Dir[File.dirname(__FILE__) + "/server/*.rb"].each { |file| require file }
|
@@ -0,0 +1,163 @@
|
|
1
|
+
class Spork::TestFramework
|
2
|
+
LOAD_PREFERENCE = ['RSpec', 'Cucumber']
|
3
|
+
BOOTSTRAP_FILE = File.dirname(__FILE__) + "/../../assets/bootstrap.rb"
|
4
|
+
|
5
|
+
@@supported_test_frameworks = []
|
6
|
+
attr_reader :stdout, :stderr
|
7
|
+
|
8
|
+
class FactoryException < Exception; end
|
9
|
+
|
10
|
+
class NoFrameworksAvailable < FactoryException
|
11
|
+
def message
|
12
|
+
"I can't find any testing frameworks to use. Are you running me from a project directory?"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class FrameworkNotAvailable < FactoryException
|
17
|
+
def initialize(framework)
|
18
|
+
@framework = framework
|
19
|
+
end
|
20
|
+
|
21
|
+
def message
|
22
|
+
"I can't find the file #{e.test_framework.helper_file} for the #{e.test_framework.short_name} testing framework.\nAre you running me from the project directory?"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class NoFrameworkMatched < FactoryException
|
27
|
+
def initialize(beginning_with)
|
28
|
+
@beginning_with = beginning_with
|
29
|
+
end
|
30
|
+
|
31
|
+
def message
|
32
|
+
"Couldn't find a supported test framework that begins with '#{@beginning_with}'"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def initialize(stdout = STDOUT, stderr = STDERR)
|
37
|
+
@stdout, @stderr = stdout, stderr
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.factory(output = STDOUT, error = STDERR, beginning_with = nil)
|
41
|
+
if beginning_with
|
42
|
+
@klass = supported_test_frameworks(beginning_with).first
|
43
|
+
raise(NoFrameworkMatched.new(beginning_with)) if @klass.nil?
|
44
|
+
raise(FrameworkNotAvailable.new(@klass)) unless @klass.available?
|
45
|
+
else
|
46
|
+
@klass = available_test_frameworks.first
|
47
|
+
raise(NoFrameworksAvailable.new) unless @klass
|
48
|
+
end
|
49
|
+
@klass.new(output, error)
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.helper_file
|
53
|
+
self::HELPER_FILE
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.default_port
|
57
|
+
(ENV["#{short_name.upcase}_DRB"] || self::DEFAULT_PORT).to_i
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.short_name
|
61
|
+
self.name.gsub('Spork::TestFramework::', '')
|
62
|
+
end
|
63
|
+
|
64
|
+
# Returns a list of all testing servers that have detected their testing framework being used in the project.
|
65
|
+
def self.available_test_frameworks
|
66
|
+
supported_test_frameworks.select { |s| s.available? }
|
67
|
+
end
|
68
|
+
|
69
|
+
# Returns a list of all servers that have been implemented (it keeps track of them automatically via Class.inherited)
|
70
|
+
def self.supported_test_frameworks(starting_with = nil)
|
71
|
+
@@supported_test_frameworks.sort! { |a,b| a.load_preference_index <=> b.load_preference_index }
|
72
|
+
return @@supported_test_frameworks if starting_with.nil?
|
73
|
+
@@supported_test_frameworks.select do |s|
|
74
|
+
s.short_name.match(/^#{Regexp.escape(starting_with)}/i)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def short_name
|
79
|
+
self.class.short_name
|
80
|
+
end
|
81
|
+
|
82
|
+
def helper_file
|
83
|
+
self.class.helper_file
|
84
|
+
end
|
85
|
+
|
86
|
+
# Detects if the test helper has been bootstrapped.
|
87
|
+
def bootstrapped?
|
88
|
+
File.read(helper_file).include?("Spork.prefork")
|
89
|
+
end
|
90
|
+
|
91
|
+
# Bootstraps the current test helper file by prepending a Spork.prefork and Spork.each_run block at the beginning.
|
92
|
+
def bootstrap
|
93
|
+
if bootstrapped?
|
94
|
+
stderr.puts "Already bootstrapped!"
|
95
|
+
return
|
96
|
+
end
|
97
|
+
stderr.puts "Bootstrapping #{helper_file}."
|
98
|
+
contents = File.read(helper_file)
|
99
|
+
bootstrap_code = File.read(BOOTSTRAP_FILE)
|
100
|
+
File.open(helper_file, "wb") do |f|
|
101
|
+
f.puts bootstrap_code
|
102
|
+
f.puts contents
|
103
|
+
end
|
104
|
+
|
105
|
+
stderr.puts "Done. Edit #{helper_file} now with your favorite text editor and follow the instructions."
|
106
|
+
true
|
107
|
+
end
|
108
|
+
|
109
|
+
# Returns true if the testing frameworks helper file exists. Override if this is not sufficient to detect your testing framework.
|
110
|
+
def self.available?
|
111
|
+
File.exist?(helper_file)
|
112
|
+
end
|
113
|
+
|
114
|
+
# Used to specify
|
115
|
+
def self.load_preference_index
|
116
|
+
LOAD_PREFERENCE.index(short_name) || LOAD_PREFERENCE.length
|
117
|
+
end
|
118
|
+
|
119
|
+
def preload
|
120
|
+
Spork.exec_prefork do
|
121
|
+
unless bootstrapped?
|
122
|
+
stderr.puts "#{helper_file} has not been bootstrapped. Run spork --bootstrap to do so."
|
123
|
+
stderr.flush
|
124
|
+
|
125
|
+
if framework.bootstrap_required?
|
126
|
+
stderr.puts "I can't do anything for you by default for the framework your using: #{framework.short_name}.\nYou must bootstrap #{helper_file} to continue."
|
127
|
+
stderr.flush
|
128
|
+
return false
|
129
|
+
else
|
130
|
+
load(framework.entry_point)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
framework.preload do
|
135
|
+
if bootstrapped?
|
136
|
+
stderr.puts "Loading Spork.prefork block..."
|
137
|
+
stderr.flush
|
138
|
+
load(helper_file)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
true
|
143
|
+
end
|
144
|
+
|
145
|
+
def run_tests(argv, stderr, stdout)
|
146
|
+
raise NotImplementedError
|
147
|
+
end
|
148
|
+
|
149
|
+
def entry_point
|
150
|
+
bootstrapped? ? helper_file : framework.entry_point
|
151
|
+
end
|
152
|
+
|
153
|
+
protected
|
154
|
+
def self.inherited(subclass)
|
155
|
+
@@supported_test_frameworks << subclass
|
156
|
+
end
|
157
|
+
|
158
|
+
def framework
|
159
|
+
@framework ||= Spork::AppFramework.detect_framework
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
Dir[File.dirname(__FILE__) + "/test_framework/*.rb"].each { |file| require file }
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class Spork::TestFramework::Cucumber < Spork::TestFramework
|
2
|
+
DEFAULT_PORT = 8990
|
3
|
+
HELPER_FILE = File.join(Dir.pwd, "features/support/env.rb")
|
4
|
+
|
5
|
+
class << self
|
6
|
+
# REMOVE WHEN SUPPORT FOR 0.3.95 AND EARLIER IS DROPPED
|
7
|
+
attr_accessor :mother_object
|
8
|
+
end
|
9
|
+
|
10
|
+
def preload
|
11
|
+
require 'cucumber'
|
12
|
+
begin
|
13
|
+
@step_mother = ::Cucumber::StepMother.new
|
14
|
+
@step_mother.load_programming_language('rb')
|
15
|
+
rescue NoMethodError => pre_cucumber_0_4 # REMOVE WHEN SUPPORT FOR PRE-0.4 IS DROPPED
|
16
|
+
@step_mother = Spork::Server::Cucumber.mother_object
|
17
|
+
end
|
18
|
+
super
|
19
|
+
end
|
20
|
+
|
21
|
+
def run_tests(argv, stderr, stdout)
|
22
|
+
::Cucumber::Cli::Main.new(argv, stdout, stderr).execute!(@step_mother)
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Spork::TestFramework::RSpec < Spork::TestFramework
|
2
|
+
DEFAULT_PORT = 8989
|
3
|
+
HELPER_FILE = File.join(Dir.pwd, "spec/spec_helper.rb")
|
4
|
+
|
5
|
+
def run_tests(argv, stderr, stdout)
|
6
|
+
::Spec::Runner::CommandLine.run(
|
7
|
+
::Spec::Runner::OptionParser.parse(
|
8
|
+
argv,
|
9
|
+
stderr,
|
10
|
+
stdout
|
11
|
+
)
|
12
|
+
)
|
13
|
+
end
|
14
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,32 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'spork'
|
3
|
+
|
4
|
+
Spork.prefork do
|
5
|
+
# Loading more in this block will cause your tests to run faster. However,
|
6
|
+
# if you change any configuration or code from libraries loaded here, you'll
|
7
|
+
# need to restart spork for it take effect.
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
Spork.each_run do
|
12
|
+
# This code will be run each time you run your specs.
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
# --- Instructions ---
|
17
|
+
# - Sort through your spec_helper file. Place as much environment loading
|
18
|
+
# code that you don't normally modify during development in the
|
19
|
+
# Spork.prefork block.
|
20
|
+
# - Place the rest under Spork.each_run block
|
21
|
+
# - Any code that is left outside of the blocks will be ran during preforking
|
22
|
+
# and during each_run!
|
23
|
+
# - These instructions should self-destruct in 10 seconds. If they don't,
|
24
|
+
# feel free to delete them.
|
25
|
+
#
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
1
30
|
require 'rubygems'
|
2
31
|
require 'spec'
|
3
32
|
|
@@ -9,7 +38,6 @@ unless $spec_helper_loaded
|
|
9
38
|
|
10
39
|
require 'spork'
|
11
40
|
require 'spork/runner.rb'
|
12
|
-
require 'spork/server.rb'
|
13
41
|
require 'spork/diagnoser.rb'
|
14
42
|
require 'stringio'
|
15
43
|
require 'fileutils'
|
@@ -34,7 +62,11 @@ unless $spec_helper_loaded
|
|
34
62
|
File.open(filename, 'wb') { |f| f << contents }
|
35
63
|
end
|
36
64
|
end
|
37
|
-
|
65
|
+
|
66
|
+
def create_helper_file(test_framework = FakeFramework)
|
67
|
+
create_file(test_framework.helper_file, "# stub spec helper file")
|
68
|
+
end
|
69
|
+
|
38
70
|
def in_current_dir(&block)
|
39
71
|
Dir.chdir(current_dir, &block)
|
40
72
|
end
|
@@ -104,4 +136,6 @@ unless $spec_helper_loaded
|
|
104
136
|
end
|
105
137
|
end
|
106
138
|
end
|
139
|
+
|
140
|
+
Dir.glob(File.dirname(__FILE__) + "/support/*.rb").each { |f| require(f) }
|
107
141
|
end
|
data/spec/spork/runner_spec.rb
CHANGED
@@ -1,60 +1,54 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
|
3
3
|
describe Spork::Runner do
|
4
|
+
def use_test_server(klass = Spork::TestFramework::RSpec)
|
5
|
+
@test_framework = klass.new
|
6
|
+
Spork::TestFramework.stub!(:factory).and_return(@test_framework)
|
7
|
+
end
|
8
|
+
|
4
9
|
before(:each) do
|
5
10
|
@out, @err = StringIO.new, StringIO.new
|
6
11
|
end
|
7
12
|
|
8
13
|
it "finds a matching server with a prefix" do
|
9
|
-
Spork::Runner.new(["rs"], @out, @err).
|
14
|
+
Spork::Runner.new(["rs"], @out, @err).find_test_framework.class.should == Spork::TestFramework::RSpec
|
10
15
|
end
|
11
16
|
|
12
17
|
it "shows an error message if no matching server was found" do
|
13
18
|
Spork::Runner.new(["argle_bargle"], @out, @err).run.should == false
|
14
|
-
@err.string.should include(%(
|
15
|
-
end
|
16
|
-
|
17
|
-
it "defaults to use rspec over cucumber" do
|
18
|
-
Spork::Server::RSpec.stub!(:available?).and_return(true)
|
19
|
-
Spork::Server::Cucumber.stub!(:available?).and_return(true)
|
20
|
-
Spork::Runner.new([], @out, @err).find_server.should == Spork::Server::RSpec
|
21
|
-
end
|
22
|
-
|
23
|
-
it "defaults to use cucumber when rspec not available" do
|
24
|
-
Spork::Server::RSpec.stub!(:available?).and_return(false)
|
25
|
-
Spork::Server::Cucumber.stub!(:available?).and_return(true)
|
26
|
-
Spork::Runner.new([], @out, @err).find_server.should == Spork::Server::Cucumber
|
19
|
+
@err.string.should include(%(Couldn't find a supported test framework that begins with 'argle_bargle'))
|
27
20
|
end
|
28
21
|
|
29
22
|
it "bootstraps a server when -b is passed in" do
|
30
|
-
|
31
|
-
|
23
|
+
use_test_server
|
24
|
+
@test_framework.should_receive(:bootstrap)
|
32
25
|
Spork::Runner.new(['rspec', '-b'], @out, @err).run
|
33
26
|
end
|
34
27
|
|
35
28
|
it "aborts if it can't preload" do
|
36
|
-
|
37
|
-
|
38
|
-
Spork::Server
|
29
|
+
use_test_server
|
30
|
+
@test_framework.should_receive(:preload).and_return(false)
|
31
|
+
Spork::Server.should_not_receive(:run)
|
39
32
|
Spork::Runner.new(['rspec'], @out, @err).run
|
40
33
|
end
|
41
34
|
|
42
35
|
it "runs the server if all is well" do
|
43
|
-
|
44
|
-
|
45
|
-
Spork::Server
|
36
|
+
use_test_server
|
37
|
+
@test_framework.should_receive(:preload).and_return(true)
|
38
|
+
Spork::Server.should_receive(:run)
|
46
39
|
Spork::Runner.new(['rspec'], @out, @err).run
|
47
40
|
@err.string.should include("Using RSpec")
|
48
41
|
end
|
49
42
|
|
50
43
|
it "outputs a list of supported servers, along with supported asterisk" do
|
51
|
-
Spork::Server.stub!(:
|
52
|
-
Spork::
|
53
|
-
Spork::
|
44
|
+
Spork::Server.stub!(:supported_test_frameworks).and_return([Spork::TestFramework::RSpec, Spork::TestFramework::Cucumber])
|
45
|
+
Spork::TestFramework::RSpec.stub!(:available?).and_return(true)
|
46
|
+
Spork::TestFramework::Cucumber.stub!(:available?).and_return(false)
|
54
47
|
|
55
|
-
Spork::Runner.new(['rspec'], @out, @err).
|
48
|
+
Spork::Runner.new(['rspec'], @out, @err).supported_test_frameworks_text.should == <<-EOF
|
56
49
|
Supported test frameworks:
|
57
50
|
( ) Cucumber
|
51
|
+
( ) FakeFramework
|
58
52
|
(*) RSpec
|
59
53
|
|
60
54
|
Legend: ( ) - not detected in project (*) - detected
|
data/spec/spork/server_spec.rb
CHANGED
@@ -1,107 +1,18 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
class FakeServer < Spork::Server
|
5
|
-
attr_accessor :wait_time
|
6
|
-
|
7
|
-
include Spork::TestIOStreams
|
8
|
-
|
9
|
-
def self.helper_file
|
10
|
-
SPEC_TMP_DIR + "/fake/test_helper.rb"
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.port
|
14
|
-
1000
|
15
|
-
end
|
16
|
-
|
17
|
-
def run_tests(argv, input, output)
|
18
|
-
sleep(@wait_time || 0.5)
|
19
|
-
true
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
3
|
describe Spork::Server do
|
24
|
-
describe ".available_servers" do
|
25
|
-
before(:each) do
|
26
|
-
Spork::Server.supported_servers.each { |s| s.stub!(:available?).and_return(false) }
|
27
|
-
end
|
28
|
-
|
29
|
-
it "returns a list of all available servers" do
|
30
|
-
Spork::Server.available_servers.should == []
|
31
|
-
Spork::Server::RSpec.stub!(:available?).and_return(true)
|
32
|
-
Spork::Server.available_servers.should == [Spork::Server::RSpec]
|
33
|
-
end
|
34
|
-
|
35
|
-
it "returns rspec before cucumber when both are available" do
|
36
|
-
Spork::Server::RSpec.stub!(:available?).and_return(true)
|
37
|
-
Spork::Server::Cucumber.stub!(:available?).and_return(true)
|
38
|
-
Spork::Server.available_servers.should == [Spork::Server::RSpec, Spork::Server::Cucumber]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe ".supported_servers" do
|
43
|
-
it "returns all defined servers" do
|
44
|
-
Spork::Server.supported_servers.should include(Spork::Server::RSpec)
|
45
|
-
Spork::Server.supported_servers.should include(Spork::Server::Cucumber)
|
46
|
-
end
|
47
|
-
|
48
|
-
it "returns a list of servers matching a case-insensitive prefix" do
|
49
|
-
Spork::Server.supported_servers("rspec").should == [Spork::Server::RSpec]
|
50
|
-
Spork::Server.supported_servers("rs").should == [Spork::Server::RSpec]
|
51
|
-
Spork::Server.supported_servers("cuc").should == [Spork::Server::Cucumber]
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
4
|
describe "a fake server" do
|
56
|
-
def create_helper_file
|
57
|
-
create_file(FakeServer.helper_file, "# stub spec helper file")
|
58
|
-
end
|
59
|
-
|
60
5
|
before(:each) do
|
61
|
-
@
|
62
|
-
|
63
|
-
|
64
|
-
it "should be available when the helper_file exists" do
|
65
|
-
FakeServer.available?.should == false
|
66
|
-
create_helper_file
|
67
|
-
FakeServer.available?.should == true
|
68
|
-
end
|
69
|
-
|
70
|
-
it "has a name" do
|
71
|
-
FakeServer.server_name.should == "FakeServer"
|
72
|
-
end
|
73
|
-
|
74
|
-
it "tells if it's testing framework is being used" do
|
75
|
-
Spork::Server.available_servers.should_not include(FakeServer)
|
76
|
-
create_helper_file
|
77
|
-
Spork::Server.available_servers.should include(FakeServer)
|
78
|
-
end
|
79
|
-
|
80
|
-
it "recognizes if the helper_file has been bootstrapped" do
|
81
|
-
bootstrap_contents = File.read(FakeServer::BOOTSTRAP_FILE)
|
82
|
-
File.stub!(:read).with(FakeServer.helper_file).and_return("")
|
83
|
-
FakeServer.bootstrapped?.should == false
|
84
|
-
File.stub!(:read).with(FakeServer.helper_file).and_return(bootstrap_contents)
|
85
|
-
FakeServer.bootstrapped?.should == true
|
86
|
-
end
|
87
|
-
|
88
|
-
it "bootstraps a file" do
|
89
|
-
create_helper_file
|
90
|
-
FakeServer.bootstrap
|
91
|
-
|
92
|
-
$test_stderr.string.should include("Bootstrapping")
|
93
|
-
$test_stderr.string.should include("Edit")
|
94
|
-
$test_stderr.string.should include("favorite text editor")
|
95
|
-
|
96
|
-
File.read(FakeServer.helper_file).should include(File.read(FakeServer::BOOTSTRAP_FILE))
|
6
|
+
@fake_framework = FakeFramework.new
|
7
|
+
@server = Spork::Server.new(:test_framework => @fake_framework)
|
97
8
|
end
|
98
9
|
|
99
10
|
it "aborts the current running thread when another run is started" do
|
100
11
|
create_helper_file
|
101
|
-
@
|
102
|
-
first_run = Thread.new { @
|
12
|
+
@fake_framework.wait_time = 0.25
|
13
|
+
first_run = Thread.new { @server.run("test", STDOUT, STDIN).should == nil }
|
103
14
|
sleep(0.05)
|
104
|
-
@
|
15
|
+
@server.run("test", STDOUT, STDIN).should == true
|
105
16
|
|
106
17
|
# wait for the first to finish
|
107
18
|
first_run.join
|
@@ -109,33 +20,32 @@ describe Spork::Server do
|
|
109
20
|
|
110
21
|
it "can abort the current run" do
|
111
22
|
create_helper_file
|
112
|
-
@
|
23
|
+
@fake_framework.wait_time = 5
|
113
24
|
started_at = Time.now
|
114
|
-
first_run = Thread.new { @
|
25
|
+
first_run = Thread.new { @server.run("test", STDOUT, STDIN).should == true }
|
115
26
|
sleep(0.05)
|
116
|
-
@
|
117
|
-
sleep(0.01) while @
|
27
|
+
@server.send(:abort)
|
28
|
+
sleep(0.01) while @server.running?
|
118
29
|
|
119
|
-
(Time.now - started_at).should < @
|
30
|
+
(Time.now - started_at).should < @fake_framework.wait_time
|
120
31
|
end
|
121
32
|
|
122
33
|
it "returns the result of the run_tests method from the forked child" do
|
123
34
|
create_helper_file
|
124
|
-
@
|
125
|
-
@
|
35
|
+
@fake_framework.stub!(:run_tests).and_return("tests were ran")
|
36
|
+
@server.run("test", STDOUT, STDIN).should == "tests were ran"
|
126
37
|
end
|
127
38
|
|
128
39
|
it "accepts a port" do
|
129
40
|
create_helper_file
|
130
|
-
@
|
131
|
-
@
|
41
|
+
@server.port = 12345
|
42
|
+
@server.port.should == 12345
|
132
43
|
end
|
133
44
|
|
134
45
|
it "falls back to a default port" do
|
135
46
|
create_helper_file
|
136
|
-
@
|
137
|
-
@
|
47
|
+
@server.port = nil
|
48
|
+
@server.port.should == FakeFramework.default_port
|
138
49
|
end
|
139
|
-
|
140
50
|
end
|
141
51
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
require File.dirname(__FILE__) + "/../test_framework_spec"
|
3
|
+
|
4
|
+
describe Spork::TestFramework::Cucumber do
|
5
|
+
before(:each) do
|
6
|
+
@klass = Spork::TestFramework::Cucumber
|
7
|
+
@server = @klass.new
|
8
|
+
end
|
9
|
+
|
10
|
+
it_should_behave_like "a TestFramework"
|
11
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
require File.dirname(__FILE__) + "/../test_framework_spec"
|
3
|
+
|
4
|
+
describe Spork::TestFramework::RSpec do
|
5
|
+
before(:each) do
|
6
|
+
@klass = Spork::TestFramework::RSpec
|
7
|
+
end
|
8
|
+
|
9
|
+
it_should_behave_like "a TestFramework"
|
10
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe "a TestFramework", :shared => true do
|
4
|
+
describe ".default_port" do
|
5
|
+
it "uses the DEFAULT_PORT when the environment variable is not set" do
|
6
|
+
@klass.default_port.should == @klass::DEFAULT_PORT
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'uses ENV["#{short_name.upcase}_DRB"] as port if present' do
|
10
|
+
env_name = "#{@klass.short_name.upcase}_DRB"
|
11
|
+
orig, ENV[env_name] = ENV[env_name], "9000"
|
12
|
+
begin
|
13
|
+
@klass.default_port.should == 9000
|
14
|
+
ensure
|
15
|
+
ENV[env_name] = orig
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe ".helper_file" do
|
21
|
+
it "returns ::HELPER_FILE for the TestFramework" do
|
22
|
+
@klass.helper_file.should == @klass::HELPER_FILE
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe Spork::TestFramework do
|
28
|
+
|
29
|
+
before(:each) do
|
30
|
+
@fake = FakeFramework.new
|
31
|
+
end
|
32
|
+
|
33
|
+
describe ".available_test_frameworks" do
|
34
|
+
before(:each) do
|
35
|
+
Spork::TestFramework.supported_test_frameworks.each { |s| s.stub!(:available?).and_return(false) }
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns a list of all available servers" do
|
39
|
+
Spork::TestFramework.available_test_frameworks.should == []
|
40
|
+
Spork::TestFramework::RSpec.stub!(:available?).and_return(true)
|
41
|
+
Spork::TestFramework.available_test_frameworks.should == [Spork::TestFramework::RSpec]
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns rspec before cucumber when both are available" do
|
45
|
+
Spork::TestFramework::RSpec.stub!(:available?).and_return(true)
|
46
|
+
Spork::TestFramework::Cucumber.stub!(:available?).and_return(true)
|
47
|
+
Spork::TestFramework.available_test_frameworks.should == [Spork::TestFramework::RSpec, Spork::TestFramework::Cucumber]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe ".supported_test_frameworks" do
|
52
|
+
it "returns all defined servers" do
|
53
|
+
Spork::TestFramework.supported_test_frameworks.should include(Spork::TestFramework::RSpec)
|
54
|
+
Spork::TestFramework.supported_test_frameworks.should include(Spork::TestFramework::Cucumber)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "returns a list of servers matching a case-insensitive prefix" do
|
58
|
+
Spork::TestFramework.supported_test_frameworks("rspec").should == [Spork::TestFramework::RSpec]
|
59
|
+
Spork::TestFramework.supported_test_frameworks("rs").should == [Spork::TestFramework::RSpec]
|
60
|
+
Spork::TestFramework.supported_test_frameworks("cuc").should == [Spork::TestFramework::Cucumber]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe ".short_name" do
|
65
|
+
it "returns the name of the framework, without the namespace prefix" do
|
66
|
+
Spork::TestFramework::Cucumber.short_name.should == "Cucumber"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe ".available?" do
|
71
|
+
it "returns true when the helper_file exists" do
|
72
|
+
FakeFramework.available?.should == false
|
73
|
+
create_helper_file(FakeFramework)
|
74
|
+
FakeFramework.available?.should == true
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe ".bootstrapped?" do
|
79
|
+
it "recognizes if the helper_file has been bootstrapped" do
|
80
|
+
bootstrap_contents = File.read(FakeFramework::BOOTSTRAP_FILE)
|
81
|
+
File.stub!(:read).with(@fake.helper_file).and_return("")
|
82
|
+
@fake.bootstrapped?.should == false
|
83
|
+
File.stub!(:read).with(@fake.helper_file).and_return(bootstrap_contents)
|
84
|
+
@fake.bootstrapped?.should == true
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe ".bootstrap" do
|
89
|
+
it "bootstraps a file" do
|
90
|
+
create_helper_file
|
91
|
+
@fake.bootstrap
|
92
|
+
|
93
|
+
$test_stderr.string.should include("Bootstrapping")
|
94
|
+
$test_stderr.string.should include("Edit")
|
95
|
+
$test_stderr.string.should include("favorite text editor")
|
96
|
+
|
97
|
+
File.read(@fake.helper_file).should include(File.read(FakeFramework::BOOTSTRAP_FILE))
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe ".factory" do
|
102
|
+
it "defaults to use rspec over cucumber" do
|
103
|
+
Spork::TestFramework::RSpec.stub!(:available?).and_return(true)
|
104
|
+
Spork::TestFramework::Cucumber.stub!(:available?).and_return(true)
|
105
|
+
Spork::TestFramework.factory(STDOUT, STDERR).class.should == Spork::TestFramework::RSpec
|
106
|
+
end
|
107
|
+
|
108
|
+
it "defaults to use cucumber when rspec not available" do
|
109
|
+
Spork::TestFramework::RSpec.stub!(:available?).and_return(false)
|
110
|
+
Spork::TestFramework::Cucumber.stub!(:available?).and_return(true)
|
111
|
+
Spork::TestFramework.factory(STDOUT, STDERR).class.should == Spork::TestFramework::Cucumber
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class FakeFramework < Spork::TestFramework
|
2
|
+
include Spork::TestIOStreams
|
3
|
+
|
4
|
+
attr_accessor :wait_time
|
5
|
+
DEFAULT_PORT = 1000
|
6
|
+
|
7
|
+
def self.helper_file
|
8
|
+
SPEC_TMP_DIR + "/fake/test_helper.rb"
|
9
|
+
end
|
10
|
+
|
11
|
+
def run_tests(argv, input, output)
|
12
|
+
sleep(@wait_time || 0.5)
|
13
|
+
true
|
14
|
+
end
|
15
|
+
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.5.
|
4
|
+
version: 0.5.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Harper
|
@@ -31,6 +31,7 @@ files:
|
|
31
31
|
- features/diagnostic_mode.feature
|
32
32
|
- features/rails_delayed_loading_workarounds.feature
|
33
33
|
- features/rspec_rails_integration.feature
|
34
|
+
- features/steps/general_steps.rb
|
34
35
|
- features/steps/rails_steps.rb
|
35
36
|
- features/steps/sandbox_steps.rb
|
36
37
|
- features/support/env.rb
|
@@ -47,8 +48,9 @@ files:
|
|
47
48
|
- lib/spork/forker.rb
|
48
49
|
- lib/spork/runner.rb
|
49
50
|
- lib/spork/server.rb
|
50
|
-
- lib/spork/
|
51
|
-
- lib/spork/
|
51
|
+
- lib/spork/test_framework.rb
|
52
|
+
- lib/spork/test_framework/cucumber.rb
|
53
|
+
- lib/spork/test_framework/rspec.rb
|
52
54
|
- spec/spec_helper.rb
|
53
55
|
- spec/spork/app_framework/rails_spec.rb
|
54
56
|
- spec/spork/app_framework/unknown_spec.rb
|
@@ -56,10 +58,12 @@ files:
|
|
56
58
|
- spec/spork/diagnoser_spec.rb
|
57
59
|
- spec/spork/forker_spec.rb
|
58
60
|
- spec/spork/runner_spec.rb
|
59
|
-
- spec/spork/server/cucumber_spec.rb
|
60
|
-
- spec/spork/server/rspec_spec.rb
|
61
61
|
- spec/spork/server_spec.rb
|
62
|
+
- spec/spork/test_framework/cucumber_spec.rb
|
63
|
+
- spec/spork/test_framework/rspec_spec.rb
|
64
|
+
- spec/spork/test_framework_spec.rb
|
62
65
|
- spec/spork_spec.rb
|
66
|
+
- spec/support/fake_framework.rb
|
63
67
|
has_rdoc: true
|
64
68
|
homepage: http://github.com/timcharper/spork
|
65
69
|
licenses: []
|
@@ -97,7 +101,9 @@ test_files:
|
|
97
101
|
- spec/spork/diagnoser_spec.rb
|
98
102
|
- spec/spork/forker_spec.rb
|
99
103
|
- spec/spork/runner_spec.rb
|
100
|
-
- spec/spork/server/cucumber_spec.rb
|
101
|
-
- spec/spork/server/rspec_spec.rb
|
102
104
|
- spec/spork/server_spec.rb
|
105
|
+
- spec/spork/test_framework/cucumber_spec.rb
|
106
|
+
- spec/spork/test_framework/rspec_spec.rb
|
107
|
+
- spec/spork/test_framework_spec.rb
|
103
108
|
- spec/spork_spec.rb
|
109
|
+
- spec/support/fake_framework.rb
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'cucumber'
|
2
|
-
|
3
|
-
class Spork::Server::Cucumber < Spork::Server
|
4
|
-
CUCUMBER_PORT = 8990
|
5
|
-
CUCUMBER_HELPER_FILE = File.join(Dir.pwd, "features/support/env.rb")
|
6
|
-
|
7
|
-
class << self
|
8
|
-
def port
|
9
|
-
(ENV['CUCUMBER_DRB'] || CUCUMBER_PORT).to_i
|
10
|
-
end
|
11
|
-
|
12
|
-
def helper_file
|
13
|
-
CUCUMBER_HELPER_FILE
|
14
|
-
end
|
15
|
-
|
16
|
-
# REMOVE WHEN SUPPORT FOR 0.3.95 AND EARLIER IS DROPPED
|
17
|
-
attr_accessor :step_mother
|
18
|
-
end
|
19
|
-
|
20
|
-
# REMOVE WHEN SUPPORT FOR 0.3.95 AND EARLIER IS DROPPED
|
21
|
-
def step_mother
|
22
|
-
self.class.step_mother
|
23
|
-
end
|
24
|
-
|
25
|
-
def run_tests(argv, stderr, stdout)
|
26
|
-
::Cucumber::Cli::Main.new(argv, stdout, stderr).execute!(step_mother)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
begin
|
31
|
-
Spork::Server::Cucumber.step_mother = ::Cucumber::StepMother.new
|
32
|
-
Spork::Server::Cucumber.step_mother.load_programming_language('rb') if defined?(Spork::Server)
|
33
|
-
rescue NoMethodError => pre_cucumber_0_4 # REMOVE WHEN SUPPORT FOR 0.3.95 AND EARLIER IS DROPPED
|
34
|
-
Spork::Server::Cucumber.step_mother = self
|
35
|
-
end
|
data/lib/spork/server/rspec.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
class Spork::Server::RSpec < Spork::Server
|
2
|
-
RSPEC_PORT = 8989
|
3
|
-
RSPEC_HELPER_FILE = File.join(Dir.pwd, "spec/spec_helper.rb")
|
4
|
-
|
5
|
-
def self.port
|
6
|
-
(ENV['RSPEC_DRB'] || RSPEC_PORT).to_i
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.helper_file
|
10
|
-
RSPEC_HELPER_FILE
|
11
|
-
end
|
12
|
-
|
13
|
-
def run_tests(argv, stderr, stdout)
|
14
|
-
::Spec::Runner::CommandLine.run(
|
15
|
-
::Spec::Runner::OptionParser.parse(
|
16
|
-
argv,
|
17
|
-
stderr,
|
18
|
-
stdout
|
19
|
-
)
|
20
|
-
)
|
21
|
-
end
|
22
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
|
3
|
-
describe Spork::Server::Cucumber do
|
4
|
-
before(:each) do
|
5
|
-
@server = Spork::Server::Cucumber.new
|
6
|
-
end
|
7
|
-
|
8
|
-
it "uses the CUCUMBER_PORT for it's default port" do
|
9
|
-
@server.port.should == Spork::Server::Cucumber::CUCUMBER_PORT
|
10
|
-
end
|
11
|
-
|
12
|
-
it "uses ENV['CUCUMBER_DRB'] as port if present" do
|
13
|
-
orig = ENV['CUCUMBER_DRB']
|
14
|
-
begin
|
15
|
-
ENV['CUCUMBER_DRB'] = "9000"
|
16
|
-
@server.port.should == 9000
|
17
|
-
ensure
|
18
|
-
ENV['CUCUMBER_DRB'] = orig
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
it "uses the CUCUMBER_HELPER_FILE for it's helper_file" do
|
23
|
-
@server.helper_file.should == Spork::Server::Cucumber::CUCUMBER_HELPER_FILE
|
24
|
-
end
|
25
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
|
3
|
-
describe Spork::Server::RSpec do
|
4
|
-
before(:each) do
|
5
|
-
@server = Spork::Server::RSpec.new
|
6
|
-
end
|
7
|
-
|
8
|
-
it "uses the RSPEC_PORT for it's default port" do
|
9
|
-
@server.port.should == Spork::Server::RSpec::RSPEC_PORT
|
10
|
-
end
|
11
|
-
|
12
|
-
it "uses ENV['RSPEC_DRB'] as port if present" do
|
13
|
-
orig = ENV['RSPEC_DRB']
|
14
|
-
begin
|
15
|
-
ENV['RSPEC_DRB'] = "9000"
|
16
|
-
@server.port.should == 9000
|
17
|
-
ensure
|
18
|
-
ENV['RSPEC_DRB'] = orig
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
it "uses the RSPEC_HELPER_FILE for it's helper_file" do
|
23
|
-
@server.helper_file.should == Spork::Server::RSpec::RSPEC_HELPER_FILE
|
24
|
-
end
|
25
|
-
end
|