pietervisser-spork 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +11 -0
  3. data/assets/bootstrap.rb +29 -0
  4. data/bin/spork +20 -0
  5. data/features/cucumber_rails_integration.feature +118 -0
  6. data/features/diagnostic_mode.feature +41 -0
  7. data/features/rails_delayed_loading_workarounds.feature +115 -0
  8. data/features/rspec_rails_integration.feature +93 -0
  9. data/features/spork_debugger.feature +108 -0
  10. data/features/steps/general_steps.rb +3 -0
  11. data/features/steps/rails_steps.rb +53 -0
  12. data/features/steps/sandbox_steps.rb +115 -0
  13. data/features/support/background_job.rb +63 -0
  14. data/features/support/env.rb +111 -0
  15. data/features/unknown_app_framework.feature +42 -0
  16. data/geminstaller.yml +9 -0
  17. data/lib/spork/app_framework/rails.rb +158 -0
  18. data/lib/spork/app_framework/rails_stub_files/application.rb +1 -0
  19. data/lib/spork/app_framework/rails_stub_files/application_controller.rb +22 -0
  20. data/lib/spork/app_framework/rails_stub_files/application_helper.rb +3 -0
  21. data/lib/spork/app_framework/unknown.rb +6 -0
  22. data/lib/spork/app_framework.rb +74 -0
  23. data/lib/spork/custom_io_streams.rb +25 -0
  24. data/lib/spork/diagnoser.rb +103 -0
  25. data/lib/spork/ext/ruby-debug.rb +150 -0
  26. data/lib/spork/forker.rb +70 -0
  27. data/lib/spork/run_strategy/forking.rb +30 -0
  28. data/lib/spork/run_strategy.rb +40 -0
  29. data/lib/spork/runner.rb +90 -0
  30. data/lib/spork/server.rb +74 -0
  31. data/lib/spork/test_framework/cucumber.rb +24 -0
  32. data/lib/spork/test_framework/rspec.rb +14 -0
  33. data/lib/spork/test_framework.rb +167 -0
  34. data/lib/spork.rb +130 -0
  35. data/spec/spec_helper.rb +108 -0
  36. data/spec/spork/app_framework/rails_spec.rb +22 -0
  37. data/spec/spork/app_framework/unknown_spec.rb +12 -0
  38. data/spec/spork/app_framework_spec.rb +16 -0
  39. data/spec/spork/diagnoser_spec.rb +105 -0
  40. data/spec/spork/forker_spec.rb +44 -0
  41. data/spec/spork/run_strategy/forking_spec.rb +38 -0
  42. data/spec/spork/runner_spec.rb +50 -0
  43. data/spec/spork/server_spec.rb +15 -0
  44. data/spec/spork/test_framework/cucumber_spec.rb +11 -0
  45. data/spec/spork/test_framework/rspec_spec.rb +10 -0
  46. data/spec/spork/test_framework_spec.rb +114 -0
  47. data/spec/spork_spec.rb +157 -0
  48. data/spec/support/fake_framework.rb +15 -0
  49. data/spec/support/fake_run_strategy.rb +21 -0
  50. metadata +119 -0
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Tim Harper
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,11 @@
1
+ = Spork
2
+
3
+ This is a fork of http://github.com/timcharper/spork
4
+ For more information, please look at his repository.
5
+
6
+ to install this fork as a gem:
7
+ [sudo] gem install pietervisser-spork
8
+
9
+ == Changes
10
+
11
+ * Spork.each_run was not run in windows, because of a bug in the expanded_caller def. The line was split by ':', but in windows the drive letter also contains a ':' like 'c:/...'.
@@ -0,0 +1,29 @@
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
+
data/bin/spork ADDED
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+
4
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../lib')
5
+
6
+ require 'spork'
7
+ require 'spork/runner'
8
+
9
+ begin
10
+ success = Spork::Runner.run(ARGV, STDOUT, STDERR)
11
+ Kernel.exit(success ? 0 : 1)
12
+ rescue SystemExit => e
13
+ Kernel.exit(e.status)
14
+ rescue Exception => e
15
+ STDERR.puts("#{e.message} (#{e.class})")
16
+ STDERR.puts(e.backtrace.join("\n"))
17
+ Kernel.exit 1
18
+ end
19
+
20
+
@@ -0,0 +1,118 @@
1
+ Feature: Cucumber integration with rails
2
+ As a developer using cucumber and rails
3
+ I want to use Spork with Cucumber
4
+ In order to eliminate the startup cost of my application each time I run them
5
+
6
+ Background: Sporked env.rb
7
+ Given I am in a fresh rails project named "test_rails_project"
8
+ And the application has a model, observer, route, and application helper
9
+ And a file named "features/support/env.rb" with:
10
+ """
11
+ require 'rubygems'
12
+ require 'spork'
13
+
14
+ Spork.prefork do
15
+ # Loading more in this block will cause your tests to run faster. However,
16
+ # if you change any configuration or code from libraries loaded here, you'll
17
+ # need to restart spork for it take effect.
18
+
19
+ # Sets up the Rails environment for Cucumber
20
+ ENV['RAILS_ENV'] = "features"
21
+ require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
22
+
23
+ require 'cucumber'
24
+ require 'cucumber/formatter/unicode' # Comment out this line if you don't want Cucumber Unicode support
25
+ require 'spec/rails'
26
+ require 'cucumber/rails/rspec'
27
+
28
+ #### this is for this test only #######
29
+ $loaded_stuff << 'prefork block' ######
30
+ #######################################
31
+ end
32
+
33
+ Spork.each_run do
34
+ #### this is for this test only #######
35
+ $loaded_stuff << 'each_run block' #####
36
+ #######################################
37
+ end
38
+ """
39
+ And a file named "features/cucumber_rails.feature" with:
40
+ """
41
+ Feature: cucumber rails
42
+ Scenario: did it work?
43
+ Then it should work
44
+
45
+ Scenario: did it work again?
46
+ Then it should work
47
+ """
48
+ And a file named "features/cucumber_rails_fr.feature" with:
49
+ """
50
+ # language: fr
51
+ Fonction: French
52
+ Scénario: ca marche?
53
+ Alors ca marche
54
+ """
55
+ And a file named "features/support/cucumber_rails_helper.rb" with:
56
+ """
57
+ $loaded_stuff << 'features/support/cucumber_rails_helper.rb'
58
+ """
59
+ And a file named "config/environments/features.rb" with:
60
+ """
61
+ # your cucumber env here
62
+ """
63
+ And a file named "config/database.yml" with:
64
+ """
65
+ features:
66
+ adapter: sqlite3
67
+ database: db/features.sqlite3
68
+ timeout: 5000
69
+ """
70
+ And a file named "features/step_definitions/cucumber_rails_steps.rb" with:
71
+ """
72
+ Then "it should work" do
73
+ (Rails.respond_to?(:logger) ? Rails.logger : ActionController::Base.logger).info "hey there"
74
+ $loaded_stuff.should include('ActiveRecord::Base.establish_connection')
75
+ $loaded_stuff.should include('User')
76
+ $loaded_stuff.should include('UserObserver')
77
+ $loaded_stuff.should include('ApplicationHelper')
78
+ $loaded_stuff.should include('config/routes.rb')
79
+ $loaded_stuff.should include('features/support/cucumber_rails_helper.rb')
80
+ $loaded_stuff.should include('each_run block')
81
+ $loaded_stuff.should include('prefork block')
82
+ puts "It worked!"
83
+ end
84
+
85
+ Alors /ca marche/ do
86
+ end
87
+ """
88
+ Scenario: Analyzing files were preloaded
89
+ When I run spork --diagnose
90
+ Then the output should not contain "user_observer.rb"
91
+ Then the output should not contain "user.rb"
92
+ Then the output should not contain "app/controllers/application.rb"
93
+ Then the output should not contain "app/controllers/application_controller.rb"
94
+ Then the output should not contain "app/controllers/application_helper.rb"
95
+ Then the output should not contain "config/routes.rb"
96
+ Then the output should not contain "features/step_definitions/cucumber_rails_steps.rb"
97
+ Then the output should not contain "features/support/cucumber_rails_helper.rb"
98
+
99
+ Scenario: Running spork with a rails app and no server
100
+ When I run cucumber --drb features
101
+ Then the error output should contain
102
+ """
103
+ WARNING: No DRb server is running. Running features locally
104
+ """
105
+
106
+ Scenario: Running spork with a rails app and observers
107
+ When I fire up a spork instance with "spork cucumber"
108
+ And I run cucumber --drb features
109
+ Then the error output should be empty
110
+ And the output should contain "It worked!"
111
+ And the file "log/features.log" should include "hey there"
112
+
113
+ Scenario: Running spork with a rails app and a non-standard port
114
+ When I fire up a spork instance with "spork cucumber -p 9000"
115
+ And I run cucumber --drb --port 9000 features
116
+ Then the error output should be empty
117
+ And the output should contain "It worked!"
118
+ And the file "log/features.log" should include "hey there"
@@ -0,0 +1,41 @@
1
+ Feature: Diagnostic Mode
2
+ To help a developer quickly pinpoint why files are being loaded
3
+ Spork provides a diagnostic mode
4
+ That provides a list of which project files were loaded during prefork, and who loaded them.
5
+
6
+ Scenario: Running spork --diagnose
7
+ Given I am in the directory "test_project"
8
+ And a file named "spec/spec_helper.rb" with:
9
+ """
10
+ require 'rubygems'
11
+ require 'spork'
12
+
13
+ Spork.prefork do
14
+ require 'lib/awesome.rb'
15
+ require '../external_dependency/super_duper.rb'
16
+ end
17
+
18
+ Spork.each_run do
19
+ puts "I'm loading the stuff just for this run..."
20
+ end
21
+ """
22
+ And a file named "lib/awesome.rb" with:
23
+ """
24
+ class Awesome
25
+ end
26
+ """
27
+ And a file named "../external_dependency/super_duper.rb" with:
28
+ """
29
+ class Awesome
30
+ end
31
+ """
32
+ When I run spork --diagnose
33
+ Then the error output should contain
34
+ """
35
+ Loading Spork.prefork block...
36
+ """
37
+ And the output should contain "lib/awesome.rb"
38
+ And the output should contain "spec/spec_helper.rb:5"
39
+ And the output should not contain "super_duper.rb"
40
+ And the output should not contain "diagnose.rb"
41
+
@@ -0,0 +1,115 @@
1
+ Feature: Rails Delayed Work arounds
2
+ To allow a rails developer to update as many parts of his application as possible without needing to restart Spork
3
+ Spork automatically tells rails to delay loading certain parts of the application until after the fork occurs
4
+ Providing work arounds
5
+
6
+ Background: Rails App with RSpec and Spork
7
+
8
+ Given I am in a fresh rails project named "test_rails_project"
9
+ And a file named "spec/spec_helper.rb" with:
10
+ """
11
+ require 'rubygems'
12
+ require 'spork'
13
+
14
+ Spork.prefork do
15
+ require File.dirname(__FILE__) + '/../config/environment.rb'
16
+ require 'spec'
17
+ require 'spec/rails'
18
+ end
19
+
20
+ Spork.each_run do
21
+ end
22
+ """
23
+ And the application has a model, observer, route, and application helper
24
+ Given a file named "app/helpers/application_helper.rb" with:
25
+ """
26
+ module ApplicationHelper
27
+ include Reverseatron
28
+ end
29
+ """
30
+ Given a file named "lib/reverseatron.rb" with:
31
+ """
32
+ module Reverseatron
33
+ def reverse_text(txt)
34
+ txt.reverse
35
+ end
36
+ end
37
+ """
38
+ Given a file named "app/controllers/users_controller.rb" with:
39
+ """
40
+ class UsersController < ApplicationController
41
+ $loaded_stuff << 'UsersController'
42
+ def index
43
+ @users = []
44
+ end
45
+ end
46
+ """
47
+ Given a file named "app/helpers/misc_helper.rb" with:
48
+ """
49
+ module MiscHelper
50
+ def misc_helper_method
51
+ 'hello miscellaneous'
52
+ end
53
+ end
54
+ """
55
+ Given a file named "app/helpers/users_helper.rb" with:
56
+ """
57
+ module UsersHelper
58
+ end
59
+ """
60
+ Given a file named "app/views/users/index.html.erb" with:
61
+ """
62
+ Original View
63
+ """
64
+ Scenario: within a view rendered by a controller, calling helper methods from an included module in ApplicationHelper
65
+ Given a file named "spec/controllers/users_controller_spec.rb" with:
66
+ """
67
+ describe UsersController do
68
+ integrate_views
69
+ it "renders a page, using a method inherited from ApplicationController" do
70
+ get :index
71
+ response.body.should_not include('Original View')
72
+ puts "Views are not being cached when rendering from a controller"
73
+
74
+ response.body.should include('listing users')
75
+ puts "Controller stack is functioning when rendering from a controller"
76
+
77
+ response.body.should include('hello miscellaneous')
78
+ puts "All helper modules were included when rendering from a controller"
79
+ end
80
+ end
81
+ """
82
+ Given a file named "spec/views/index.html.erb_spec.rb" with:
83
+ """
84
+ describe "/users/index.html.erb" do
85
+
86
+ it "renders the view" do
87
+ render
88
+ response.body.should_not include('Original View')
89
+ puts "Views are not being cached when rendering directly"
90
+
91
+ response.body.should include('listing users')
92
+ puts "Controller stack is functioning when rendering directly"
93
+
94
+ response.body.should include('hello miscellaneous')
95
+ puts "All helper modules were included when rendering directly"
96
+ end
97
+ end
98
+ """
99
+ When I fire up a spork instance with "spork rspec"
100
+ And the contents of "app/views/users/index.html.erb" are changed to:
101
+ """
102
+ <%= reverse_text('listing users'.reverse) %>
103
+ <%= misc_helper_method rescue nil %>
104
+ <p>Here is a list of users</p>
105
+ """
106
+
107
+ And I run spec --drb spec/controllers/users_controller_spec.rb
108
+ Then the output should contain "Controller stack is functioning when rendering from a controller"
109
+ Then the output should contain "Views are not being cached when rendering from a controller"
110
+ Then the output should contain "All helper modules were included when rendering from a controller"
111
+
112
+ And I run spec --drb spec/views/index.html.erb_spec.rb
113
+ Then the output should contain "Controller stack is functioning when rendering directly"
114
+ Then the output should contain "Views are not being cached when rendering directly"
115
+ Then the output should contain "All helper modules were included when rendering directly"
@@ -0,0 +1,93 @@
1
+ Feature: Rails Integration
2
+ To get a developer up and running quickly
3
+ Spork automatically integrates with rails
4
+ Providing default hooks and behaviors
5
+
6
+ Background: Rails App with RSpec and Spork
7
+
8
+ Given I am in a fresh rails project named "test_rails_project"
9
+ And a file named "spec/spec_helper.rb" with:
10
+ """
11
+ require 'rubygems'
12
+ require 'spork'
13
+
14
+ Spork.prefork do
15
+ # Loading more in this block will cause your specs to run faster. However,
16
+ # if you change any configuration or code from libraries loaded here, you'll
17
+ # need to restart spork for it take effect.
18
+ require File.dirname(__FILE__) + '/../config/environment.rb'
19
+ require 'spec'
20
+ require 'spec/rails'
21
+
22
+ #### this is for this test only #######
23
+ $loaded_stuff << 'prefork block' ######
24
+ #######################################
25
+ end
26
+
27
+ Spork.each_run do
28
+ # This code will be run each time you run your specs.
29
+
30
+ #### this is for this test only #######
31
+ $loaded_stuff << 'each_run block' #####
32
+ #######################################
33
+ end
34
+ """
35
+ And the application has a model, observer, route, and application helper
36
+ Scenario: Analyzing files were preloaded
37
+ When I run spork --diagnose
38
+ Then the output should not contain "user_observer.rb"
39
+ Then the output should not contain "user.rb"
40
+ Then the output should not contain "app/controllers/application.rb"
41
+ Then the output should not contain "app/controllers/application_controller.rb"
42
+ Then the output should not contain "app/controllers/application_helper.rb"
43
+ Then the output should not contain "config/routes.rb"
44
+
45
+ Scenario: Running spork with a rails app and observers
46
+ Given a file named "spec/did_it_work_spec.rb" with:
47
+ """
48
+ describe "Did it work?" do
49
+ it "checks to see if all worked" do
50
+ Spork.state.should == :using_spork
51
+ (Rails.respond_to?(:logger) ? Rails.logger : ActionController::Base.logger).info "hey there"
52
+ $loaded_stuff.should include('ActiveRecord::Base.establish_connection')
53
+ $loaded_stuff.should include('User')
54
+ $loaded_stuff.should include('UserObserver')
55
+ $loaded_stuff.should include('ApplicationHelper')
56
+ $loaded_stuff.should include('config/routes.rb')
57
+ $loaded_stuff.should include('each_run block')
58
+ $loaded_stuff.should include('prefork block')
59
+ puts "Specs successfully run within spork, and all initialization files were loaded"
60
+ end
61
+ end
62
+ """
63
+ When I fire up a spork instance with "spork rspec"
64
+ And I run spec --drb spec/did_it_work_spec.rb
65
+ Then the error output should be empty
66
+ And the output should contain "Specs successfully run within spork, and all initialization files were loaded"
67
+ And the file "log/test.log" should include "hey there"
68
+
69
+
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
72
+ Given a file named "spec/did_it_work_spec.rb" with:
73
+ """
74
+ describe "Did it work?" do
75
+ it "checks to see if all worked" do
76
+ Spork.state.should == :using_spork
77
+ (Rails.respond_to?(:logger) ? Rails.logger : ActionController::Base.logger).info "hey there"
78
+ $loaded_stuff.should include('ActiveRecord::Base.establish_connection')
79
+ $loaded_stuff.should include('User')
80
+ $loaded_stuff.should include('UserObserver')
81
+ $loaded_stuff.should include('ApplicationHelper')
82
+ $loaded_stuff.should include('config/routes.rb')
83
+ $loaded_stuff.should include('each_run block')
84
+ $loaded_stuff.should include('prefork block')
85
+ puts "Specs successfully run within spork, and all initialization files were loaded"
86
+ end
87
+ end
88
+ """
89
+ When I fire up a spork instance with "spork rspec --port 7000"
90
+ And I run spec --drb --port 7000 spec/did_it_work_spec.rb
91
+ Then the error output should be empty
92
+ And the output should contain "Specs successfully run within spork, and all initialization files were loaded"
93
+ And the file "log/test.log" should include "hey there"
@@ -0,0 +1,108 @@
1
+ Feature: Spork Debugger integration
2
+ As a developer
3
+ I want to invoke the debugger my specs within Spork
4
+ In order to drill in and figure out what's wrong
5
+
6
+ Scenario: Invoking the debugger via 'debugger'
7
+ Given a file named "spec/spec_helper.rb" with:
8
+ """
9
+ require 'rubygems'
10
+ require 'spork'
11
+ require 'spork/ext/ruby-debug'
12
+
13
+ Spork.prefork { require 'spec' }
14
+ Spork.each_run { }
15
+ """
16
+ And a file named "spec/debugger_spec.rb" with:
17
+ """
18
+ require File.dirname(__FILE__) + '/spec_helper.rb'
19
+
20
+ describe "Debugger" do
21
+ it "should debug" do
22
+ 2.times do |count|
23
+ @message = "count = #{count}"
24
+ debugger
25
+ @message = nil
26
+ end
27
+ puts "it worked!"
28
+ end
29
+ end
30
+ """
31
+
32
+ When I fire up a spork instance with "spork rspec"
33
+ And I run this in the background: spec --drb spec/debugger_spec.rb
34
+
35
+ Then the spork window should output a line containing "Debug Session Started"
36
+
37
+ When I type this in the spork window: "e @message"
38
+ Then the spork window should output a line containing "count = 0"
39
+
40
+ When I type this in the spork window: "continue"
41
+
42
+ When I type this in the spork window: "e @message"
43
+ Then the spork window should output a line containing "count = 1"
44
+
45
+ When I type this in the spork window: "continue"
46
+
47
+ Then the spork window should output a line containing "Debug Session Terminated"
48
+ And the output should contain "it worked!"
49
+
50
+ Scenario: When ruby-debug is already required and started.
51
+ Given a file named "spec/spec_helper.rb" with:
52
+ """
53
+ require 'rubygems'
54
+ require 'spork'
55
+ require 'ruby-debug'
56
+ Debugger.start
57
+
58
+ require 'spork/ext/ruby-debug'
59
+
60
+ Spork.prefork { require 'spec' }
61
+ Spork.each_run { }
62
+ """
63
+
64
+ And a file named "spec/debugger_spec.rb" with:
65
+ """
66
+ require File.dirname(__FILE__) + '/spec_helper.rb'
67
+
68
+ describe "Debugger" do
69
+ it "should debug" do
70
+ @message = "yup"
71
+ debugger
72
+ puts "it worked!"
73
+ end
74
+ end
75
+ """
76
+
77
+ When I fire up a spork instance with "spork rspec"
78
+ And I run this in the background: spec --drb spec/debugger_spec.rb
79
+
80
+ Then the spork window should output a line containing "Debug Session Started"
81
+
82
+ When I type this in the spork window: "e @message"
83
+ Then the spork window should output a line containing "yup"
84
+
85
+ When I type this in the spork window: "continue"
86
+
87
+ Then the spork window should output a line containing "Debug Session Terminated"
88
+ And the output should contain "it worked!"
89
+
90
+ Scenario: When ruby-debug is invoked during preload
91
+ Given a file named "spec/spec_helper.rb" with:
92
+ """
93
+ require 'rubygems'
94
+ require 'spork'
95
+ require 'spork/ext/ruby-debug'
96
+
97
+ STDERR.puts("Spork is ready and listening") # trick out the start spork step to believe spork is ready... naughty, but effective.
98
+ @message = "it worked"
99
+ debugger
100
+ Spork.prefork { require 'spec' }
101
+ Spork.each_run { }
102
+ """
103
+
104
+ When I fire up a spork instance with "spork rspec"
105
+ Then the spork window should output a line containing "spec_helper.rb"
106
+ When I type this in the spork window: "e @message"
107
+ Then the spork window should output a line containing "it worked"
108
+ When I type this in the spork window: "continue"
@@ -0,0 +1,3 @@
1
+ Given /^this scenario is pending.+/ do
2
+ pending
3
+ end
@@ -0,0 +1,53 @@
1
+ Given /^I am in a fresh rails project named "(.+)"$/ do |folder_name|
2
+ @current_dir = SporkWorld::SANDBOX_DIR
3
+ version_argument = ENV['RAILS_VERSION'] ? "_#{ENV['RAILS_VERSION']}_" : nil
4
+ # run("#{SporkWorld::RUBY_BINARY} #{%x{which rails}.chomp} #{folder_name}")
5
+ run([SporkWorld::RUBY_BINARY, '-I', Cucumber::LIBDIR, %x{which rails}.chomp, version_argument, folder_name].compact * " ")
6
+ @current_dir = File.join(File.join(SporkWorld::SANDBOX_DIR, folder_name))
7
+ end
8
+
9
+
10
+ Given "the application has a model, observer, route, and application helper" do
11
+ Given 'a file named "app/models/user.rb" with:',
12
+ """
13
+ class User < ActiveRecord::Base
14
+ $loaded_stuff << 'User'
15
+ end
16
+ """
17
+ Given 'a file named "app/models/user_observer.rb" with:',
18
+ """
19
+ class UserObserver < ActiveRecord::Observer
20
+ $loaded_stuff << 'UserObserver'
21
+ end
22
+ """
23
+ Given 'a file named "app/helpers/application_helper.rb" with:',
24
+ """
25
+ module ApplicationHelper
26
+ $loaded_stuff << 'ApplicationHelper'
27
+ end
28
+ """
29
+ Given 'the following code appears in "config/environment.rb" after /Rails::Initializer.run/:',
30
+ """
31
+ config.active_record.observers = :user_observer
32
+ """
33
+ Given 'the following code appears in "config/routes.rb" after /^end/:',
34
+ """
35
+ $loaded_stuff << 'config/routes.rb'
36
+ """
37
+ Given 'a file named "config/initializers/initialize_loaded_stuff.rb" with:',
38
+ """
39
+ $loaded_stuff ||= []
40
+ """
41
+ Given 'a file named "config/initializers/log_establish_connection_calls.rb" with:',
42
+ """
43
+ class ActiveRecord::Base
44
+ class << self
45
+ def establish_connection_with_load_logging(*args)
46
+ establish_connection_without_load_logging(*args)
47
+ $loaded_stuff << 'ActiveRecord::Base.establish_connection'
48
+ end
49
+ alias_method_chain :establish_connection, :load_logging
50
+ end
51
+ end
52
+ """
53
+ end