bmabey-spork 0.4.4 → 0.5.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/README.rdoc +51 -23
  2. data/assets/bootstrap.rb +1 -1
  3. data/bin/spork +0 -0
  4. data/features/cucumber_rails_integration.feature +113 -0
  5. data/features/diagnostic_mode.feature +41 -0
  6. data/features/rails_delayed_loading_workarounds.feature +80 -0
  7. data/features/rspec_rails_integration.feature +90 -0
  8. data/features/steps/rails_steps.rb +53 -0
  9. data/features/steps/sandbox_steps.rb +98 -0
  10. data/features/support/env.rb +98 -0
  11. data/features/unknown_app_framework.feature +42 -0
  12. data/lib/spork.rb +85 -26
  13. data/lib/spork/app_framework.rb +74 -0
  14. data/lib/spork/app_framework/rails.rb +158 -0
  15. data/lib/spork/app_framework/rails_stub_files/application.rb +3 -0
  16. data/lib/spork/app_framework/rails_stub_files/application_controller.rb +3 -0
  17. data/lib/spork/app_framework/rails_stub_files/application_helper.rb +3 -0
  18. data/lib/spork/app_framework/unknown.rb +6 -0
  19. data/lib/spork/custom_io_streams.rb +25 -0
  20. data/lib/spork/diagnoser.rb +103 -0
  21. data/lib/spork/forker.rb +70 -0
  22. data/lib/spork/runner.rb +28 -10
  23. data/lib/spork/server.rb +88 -46
  24. data/lib/spork/server/cucumber.rb +21 -9
  25. data/lib/spork/server/rspec.rb +1 -1
  26. data/spec/spec_helper.rb +93 -35
  27. data/spec/spork/app_framework/rails_spec.rb +22 -0
  28. data/spec/spork/app_framework/unknown_spec.rb +12 -0
  29. data/spec/spork/app_framework_spec.rb +16 -0
  30. data/spec/spork/diagnoser_spec.rb +105 -0
  31. data/spec/spork/forker_spec.rb +44 -0
  32. data/spec/spork/runner_spec.rb +2 -2
  33. data/spec/spork/server/cucumber_spec.rb +25 -0
  34. data/spec/spork/server/rspec_spec.rb +17 -3
  35. data/spec/spork/server_spec.rb +32 -17
  36. data/spec/spork_spec.rb +112 -13
  37. metadata +33 -3
@@ -2,10 +2,24 @@ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
3
  describe Spork::Server::RSpec do
4
4
  before(:each) do
5
- @adapter = Spork::Adapter::RSpec.new
5
+ @server = Spork::Server::RSpec.new
6
6
  end
7
7
 
8
- it "uses the RSPEC_PORT for it's port" do
9
- @adapter.port.should == Spork::Adapter::RSpec::RSPEC_PORT
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
10
24
  end
11
25
  end
@@ -1,7 +1,11 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
2
 
3
+
3
4
  class FakeServer < Spork::Server
4
5
  attr_accessor :wait_time
6
+
7
+ include Spork::TestIOStreams
8
+
5
9
  def self.helper_file
6
10
  SPEC_TMP_DIR + "/fake/test_helper.rb"
7
11
  end
@@ -10,16 +14,9 @@ class FakeServer < Spork::Server
10
14
  1000
11
15
  end
12
16
 
13
- def self.puts(string)
14
- $test_stdout.puts(string)
15
- end
16
-
17
- def puts(string)
18
- $test_stdout.puts(string)
19
- end
20
-
21
17
  def run_tests(argv, input, output)
22
18
  sleep(@wait_time || 0.5)
19
+ true
23
20
  end
24
21
  end
25
22
 
@@ -57,8 +54,7 @@ describe Spork::Server do
57
54
 
58
55
  describe "a fake server" do
59
56
  def create_helper_file
60
- FileUtils.mkdir_p(File.dirname(FakeServer.helper_file))
61
- FileUtils.touch(FakeServer.helper_file)
57
+ create_file(FakeServer.helper_file, "# stub spec helper file")
62
58
  end
63
59
 
64
60
  before(:each) do
@@ -93,19 +89,19 @@ describe Spork::Server do
93
89
  create_helper_file
94
90
  FakeServer.bootstrap
95
91
 
96
- $test_stdout.string.should include("Bootstrapping")
97
- $test_stdout.string.should include("Edit")
98
- $test_stdout.string.should include("favorite text editor")
92
+ $test_stderr.string.should include("Bootstrapping")
93
+ $test_stderr.string.should include("Edit")
94
+ $test_stderr.string.should include("favorite text editor")
99
95
 
100
96
  File.read(FakeServer.helper_file).should include(File.read(FakeServer::BOOTSTRAP_FILE))
101
97
  end
102
98
 
103
- it "prevents you from running specs twice in parallel" do
99
+ it "aborts the current running thread when another run is started" do
104
100
  create_helper_file
105
101
  @fake.wait_time = 0.25
106
- first_run = Thread.new { @fake.run("test", STDOUT, STDIN).should == true }
102
+ first_run = Thread.new { @fake.run("test", STDOUT, STDIN).should == nil }
107
103
  sleep(0.05)
108
- @fake.run("test", STDOUT, STDIN).should == false
104
+ @fake.run("test", STDOUT, STDIN).should == true
109
105
 
110
106
  # wait for the first to finish
111
107
  first_run.join
@@ -119,8 +115,27 @@ describe Spork::Server do
119
115
  sleep(0.05)
120
116
  @fake.send(:abort)
121
117
  sleep(0.01) while @fake.running?
122
-
118
+
123
119
  (Time.now - started_at).should < @fake.wait_time
124
120
  end
121
+
122
+ it "returns the result of the run_tests method from the forked child" do
123
+ create_helper_file
124
+ @fake.stub!(:run_tests).and_return("tests were ran")
125
+ @fake.run("test", STDOUT, STDIN).should == "tests were ran"
126
+ end
127
+
128
+ it "accepts a port" do
129
+ create_helper_file
130
+ @fake.class.port = 12345
131
+ @fake.port.should == 12345
132
+ end
133
+
134
+ it "falls back to a default port" do
135
+ create_helper_file
136
+ @fake.class.port = nil
137
+ @fake.port.should == FakeServer.port
138
+ end
139
+
125
140
  end
126
141
  end
@@ -3,8 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
  Spork.class_eval do
4
4
  def self.reset!
5
5
  @state = nil
6
- @already_run = nil
7
- @already_preforked = nil
6
+ @already_ran = nil
8
7
  end
9
8
  end
10
9
 
@@ -14,31 +13,131 @@ describe Spork do
14
13
  end
15
14
 
16
15
  def spec_helper_simulator
17
- ran = []
16
+ @ran ||= []
18
17
  Spork.prefork do
19
- ran << :prefork
18
+ @ran << :prefork
20
19
  end
21
20
 
22
21
  Spork.each_run do
23
- ran << :each_run
22
+ @ran << :each_run
24
23
  end
25
- ran
24
+ @ran
26
25
  end
27
26
 
28
27
  it "only runs the preload block when preforking" do
29
- ran = []
30
- Spork.preforking!
31
- spec_helper_simulator.should == [:prefork]
28
+ Spork.exec_prefork { spec_helper_simulator }
29
+ @ran.should == [:prefork]
32
30
  end
33
31
 
34
32
  it "only runs the each_run block when running" do
35
- Spork.preforking!
36
- spec_helper_simulator
37
- Spork.running!
38
- spec_helper_simulator.should == [:each_run]
33
+ Spork.exec_prefork { spec_helper_simulator }
34
+ @ran.should == [:prefork]
35
+
36
+ Spork.exec_each_run
37
+ @ran.should == [:prefork, :each_run]
39
38
  end
40
39
 
41
40
  it "runs both blocks when Spork not activated" do
42
41
  spec_helper_simulator.should == [:prefork, :each_run]
43
42
  end
43
+
44
+ it "prevents blocks from being ran twice" do
45
+ Spork.exec_prefork { spec_helper_simulator }
46
+ Spork.exec_each_run
47
+ @ran.clear
48
+ Spork.exec_prefork { spec_helper_simulator }
49
+ Spork.exec_each_run
50
+ @ran.should == []
51
+ end
52
+
53
+ it "runs multiple prefork and each_run blocks at different locations" do
54
+ Spork.prefork { }
55
+ Spork.each_run { }
56
+ spec_helper_simulator.should == [:prefork, :each_run]
57
+ end
58
+
59
+ it "expands a caller line, preserving the line number" do
60
+ Spork.send(:expanded_caller, "/boo/../yah.rb:31").should == "/yah.rb:31"
61
+ end
62
+
63
+ describe "#trap_method" do
64
+ before(:each) do
65
+ Spork.using_spork!
66
+
67
+ Object.class_eval do
68
+ class TrapTest
69
+ def self.output
70
+ @output ||= []
71
+ end
72
+
73
+ def hello
74
+ TrapTest.output << 'hello'
75
+ end
76
+
77
+ def goodbye
78
+ TrapTest.output << 'goodbye'
79
+ end
80
+
81
+ def say_something!
82
+ TrapTest.output << 'something'
83
+ end
84
+ end
85
+ end
86
+ @trap_test = TrapTest.new
87
+ end
88
+
89
+ after(:each) do
90
+ Object.send(:remove_const, :TrapTest)
91
+ end
92
+
93
+ it "delays execution of a method until after Spork.exec_each_run is called" do
94
+ Spork.using_spork!
95
+ Spork.trap_method(TrapTest, :hello)
96
+ @trap_test.hello
97
+ @trap_test.goodbye
98
+ Spork.exec_each_run
99
+ TrapTest.output.should == ['goodbye', 'hello']
100
+ end
101
+
102
+ it "works with methods that have punctuation" do
103
+ Spork.trap_method(TrapTest, :say_something!)
104
+ @trap_test.say_something!
105
+ TrapTest.output.should == []
106
+ Spork.exec_each_run
107
+ TrapTest.output.should == ['something']
108
+ end
109
+ end
110
+
111
+ describe "#trap_class_method" do
112
+ before(:each) do
113
+ Object.class_eval do
114
+ class TrapTest
115
+ def self.output
116
+ @output ||= []
117
+ end
118
+
119
+ def self.hello
120
+ output << 'hello'
121
+ end
122
+
123
+ def self.goodbye
124
+ output << 'goodbye'
125
+ end
126
+ end
127
+ end
128
+ end
129
+
130
+ after(:each) do
131
+ Object.send(:remove_const, :TrapTest)
132
+ end
133
+
134
+ it "delays execution of a method until after Spork.exec_each_run is called" do
135
+ Spork.using_spork!
136
+ Spork.trap_class_method(TrapTest, :hello)
137
+ TrapTest.hello
138
+ TrapTest.goodbye
139
+ Spork.exec_each_run
140
+ TrapTest.output.should == ['goodbye', 'hello']
141
+ end
142
+ end
44
143
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bmabey-spork
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.5.9
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: 2009-05-30 00:00:00 -07:00
12
+ date: 2009-08-15 00:00:00 -07:00
13
13
  default_executable: spork
14
14
  dependencies: []
15
15
 
@@ -27,18 +27,42 @@ files:
27
27
  - MIT-LICENSE
28
28
  - README.rdoc
29
29
  - assets/bootstrap.rb
30
+ - features/cucumber_rails_integration.feature
31
+ - features/diagnostic_mode.feature
32
+ - features/rails_delayed_loading_workarounds.feature
33
+ - features/rspec_rails_integration.feature
34
+ - features/steps/rails_steps.rb
35
+ - features/steps/sandbox_steps.rb
36
+ - features/support/env.rb
37
+ - features/unknown_app_framework.feature
30
38
  - lib/spork.rb
39
+ - lib/spork/app_framework.rb
40
+ - lib/spork/app_framework/rails.rb
41
+ - lib/spork/app_framework/rails_stub_files/application.rb
42
+ - lib/spork/app_framework/rails_stub_files/application_controller.rb
43
+ - lib/spork/app_framework/rails_stub_files/application_helper.rb
44
+ - lib/spork/app_framework/unknown.rb
45
+ - lib/spork/custom_io_streams.rb
46
+ - lib/spork/diagnoser.rb
47
+ - lib/spork/forker.rb
31
48
  - lib/spork/runner.rb
32
49
  - lib/spork/server.rb
33
50
  - lib/spork/server/cucumber.rb
34
51
  - lib/spork/server/rspec.rb
35
52
  - spec/spec_helper.rb
53
+ - spec/spork/app_framework/rails_spec.rb
54
+ - spec/spork/app_framework/unknown_spec.rb
55
+ - spec/spork/app_framework_spec.rb
56
+ - spec/spork/diagnoser_spec.rb
57
+ - spec/spork/forker_spec.rb
36
58
  - spec/spork/runner_spec.rb
59
+ - spec/spork/server/cucumber_spec.rb
37
60
  - spec/spork/server/rspec_spec.rb
38
61
  - spec/spork/server_spec.rb
39
62
  - spec/spork_spec.rb
40
63
  has_rdoc: false
41
64
  homepage: http://github.com/timcharper/spork
65
+ licenses:
42
66
  post_install_message:
43
67
  rdoc_options:
44
68
  - --main
@@ -60,13 +84,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
84
  requirements: []
61
85
 
62
86
  rubyforge_project: spork
63
- rubygems_version: 1.2.0
87
+ rubygems_version: 1.3.5
64
88
  signing_key:
65
89
  specification_version: 3
66
90
  summary: spork
67
91
  test_files:
68
92
  - spec/spec_helper.rb
93
+ - spec/spork/app_framework/rails_spec.rb
94
+ - spec/spork/app_framework/unknown_spec.rb
95
+ - spec/spork/app_framework_spec.rb
96
+ - spec/spork/diagnoser_spec.rb
97
+ - spec/spork/forker_spec.rb
69
98
  - spec/spork/runner_spec.rb
99
+ - spec/spork/server/cucumber_spec.rb
70
100
  - spec/spork/server/rspec_spec.rb
71
101
  - spec/spork/server_spec.rb
72
102
  - spec/spork_spec.rb