dchelimsky-rspec 1.1.11 → 1.1.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. data/.autotest +4 -0
  2. data/History.txt +19 -3
  3. data/Manifest.txt +6 -1
  4. data/examples/failing/README.txt +7 -0
  5. data/examples/failing/diffing_spec.rb +36 -0
  6. data/examples/failing/failing_autogenerated_docstrings_example.rb +19 -0
  7. data/examples/failing/failure_in_setup.rb +10 -0
  8. data/examples/failing/failure_in_teardown.rb +10 -0
  9. data/examples/failing/mocking_example.rb +40 -0
  10. data/examples/failing/mocking_with_flexmock.rb +26 -0
  11. data/examples/failing/mocking_with_mocha.rb +25 -0
  12. data/examples/failing/mocking_with_rr.rb +27 -0
  13. data/examples/failing/partial_mock_example.rb +20 -0
  14. data/examples/failing/predicate_example.rb +34 -0
  15. data/examples/failing/raising_example.rb +47 -0
  16. data/examples/failing/spec_helper.rb +3 -0
  17. data/examples/failing/syntax_error_example.rb +7 -0
  18. data/examples/failing/team_spec.rb +44 -0
  19. data/examples/failing/timeout_behaviour.rb +7 -0
  20. data/examples/passing/custom_formatter.rb +1 -1
  21. data/examples/passing/simple_matcher_example.rb +31 -0
  22. data/lib/autotest/rspec.rb +1 -1
  23. data/lib/spec/dsl/main.rb +82 -0
  24. data/lib/spec/dsl.rb +1 -0
  25. data/lib/spec/example/before_and_after_hooks.rb +2 -1
  26. data/lib/spec/example/configuration.rb +1 -1
  27. data/lib/spec/example/example_group.rb +1 -0
  28. data/lib/spec/example/example_group_factory.rb +2 -1
  29. data/lib/spec/example/example_group_methods.rb +40 -25
  30. data/lib/spec/example/example_methods.rb +19 -8
  31. data/lib/spec/example.rb +15 -17
  32. data/lib/spec/expectations/handler.rb +23 -28
  33. data/lib/spec/expectations/wrap_expectation.rb +56 -0
  34. data/lib/spec/expectations.rb +22 -18
  35. data/lib/spec/extensions.rb +0 -1
  36. data/lib/spec/interop/test/unit/testcase.rb +19 -17
  37. data/lib/spec/matchers/be_close.rb +6 -22
  38. data/lib/spec/matchers/eql.rb +7 -25
  39. data/lib/spec/matchers/equal.rb +6 -24
  40. data/lib/spec/matchers/errors.rb +5 -0
  41. data/lib/spec/matchers/exist.rb +8 -14
  42. data/lib/spec/matchers/generated_descriptions.rb +48 -0
  43. data/lib/spec/matchers/has.rb +12 -28
  44. data/lib/spec/matchers/include.rb +12 -9
  45. data/lib/spec/matchers/match.rb +8 -27
  46. data/lib/spec/matchers/method_missing.rb +9 -0
  47. data/lib/spec/matchers/operator_matcher.rb +23 -46
  48. data/lib/spec/matchers/raise_error.rb +4 -8
  49. data/lib/spec/matchers/respond_to.rb +2 -1
  50. data/lib/spec/matchers/throw_symbol.rb +9 -3
  51. data/lib/spec/mocks/message_expectation.rb +0 -5
  52. data/lib/spec/mocks/proxy.rb +12 -10
  53. data/lib/spec/rake/spectask.rb +4 -6
  54. data/lib/spec/runner/class_and_arguments_parser.rb +7 -9
  55. data/lib/spec/runner/command_line.rb +6 -8
  56. data/lib/spec/runner/formatter/base_text_formatter.rb +3 -2
  57. data/lib/spec/runner/option_parser.rb +4 -6
  58. data/lib/spec/runner/spec_parser.rb +5 -5
  59. data/lib/spec/runner.rb +37 -39
  60. data/lib/spec/story/runner/story_runner.rb +10 -6
  61. data/lib/spec/story/runner.rb +40 -42
  62. data/lib/spec/story/world.rb +66 -70
  63. data/lib/spec/version.rb +3 -1
  64. data/lib/spec.rb +21 -19
  65. data/rspec.gemspec +15 -6
  66. data/spec/autotest/autotest_helper.rb +2 -2
  67. data/spec/autotest/discover_spec.rb +4 -15
  68. data/spec/autotest/failed_results_re_spec.rb +24 -0
  69. data/spec/autotest/rspec_spec.rb +0 -37
  70. data/spec/spec/dsl/main_spec.rb +65 -0
  71. data/spec/spec/example/example_group_class_definition_spec.rb +6 -2
  72. data/spec/spec/example/example_group_factory_spec.rb +2 -1
  73. data/spec/spec/example/example_group_methods_spec.rb +138 -141
  74. data/spec/spec/example/example_group_spec.rb +3 -5
  75. data/spec/spec/example/example_methods_spec.rb +60 -23
  76. data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  77. data/spec/spec/interop/test/unit/spec_spec.rb +1 -5
  78. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +4 -0
  79. data/spec/spec/matchers/be_close_spec.rb +12 -10
  80. data/spec/spec/matchers/description_generation_spec.rb +1 -1
  81. data/spec/spec/matchers/eql_spec.rb +7 -6
  82. data/spec/spec/matchers/equal_spec.rb +7 -6
  83. data/spec/spec/matchers/has_spec.rb +1 -1
  84. data/spec/spec/matchers/have_spec.rb +23 -18
  85. data/spec/spec/matchers/include_spec.rb +24 -0
  86. data/spec/spec/matchers/matcher_methods_spec.rb +1 -13
  87. data/spec/spec/matchers/throw_symbol_spec.rb +3 -3
  88. data/spec/spec/mocks/bug_report_11545_spec.rb +4 -5
  89. data/spec/spec/mocks/bug_report_496.rb +11 -9
  90. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  91. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +1 -1
  92. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +4 -14
  93. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +1 -1
  94. data/spec/spec/runner/options_spec.rb +1 -1
  95. data/spec/spec/runner/spec_parser_spec.rb +76 -80
  96. data/spec/spec_helper.rb +4 -0
  97. data/stories/example_groups/autogenerated_docstrings +4 -4
  98. data/stories/interop/test_but_not_test_unit +14 -0
  99. data/stories/resources/helpers/story_helper.rb +1 -1
  100. data/stories/resources/test/spec_including_test_but_not_unit.rb +11 -0
  101. data/story_server/prototype/javascripts/prototype.js +1 -1
  102. metadata +34 -53
  103. data/lib/spec/extensions/metaclass.rb +0 -7
@@ -0,0 +1,30 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Matchers
5
+ describe "wrap_expectation" do
6
+
7
+ def stub_matcher
8
+ @_stub_matcher ||= simple_matcher do
9
+ end
10
+ end
11
+
12
+ def failing_matcher
13
+ @_failing_matcher ||= simple_matcher do
14
+ 1.should == 2
15
+ end
16
+ end
17
+
18
+ it "should return true if there is no error" do
19
+ wrap_expectation stub_matcher do
20
+ end.should be_true
21
+ end
22
+
23
+ it "should return false if there is an error" do
24
+ wrap_expectation failing_matcher do
25
+ raise "error"
26
+ end.should be_false
27
+ end
28
+ end
29
+ end
30
+ end
@@ -2,11 +2,7 @@ require File.dirname(__FILE__) + '/test_unit_spec_helper'
2
2
 
3
3
  describe "ExampleGroup with test/unit/interop" do
4
4
  include TestUnitSpecHelper
5
-
6
- def resources
7
- File.dirname(__FILE__) + "/resources"
8
- end
9
-
5
+
10
6
  describe "with passing examples" do
11
7
  it "should output 0 failures" do
12
8
  output = ruby("#{resources}/spec_that_passes.rb")
@@ -3,6 +3,10 @@ require File.dirname(__FILE__) + '/../../../../ruby_forker'
3
3
 
4
4
  module TestUnitSpecHelper
5
5
  include RubyForker
6
+
7
+ def resources
8
+ File.dirname(__FILE__) + "/resources"
9
+ end
6
10
 
7
11
  def run_script(file_name)
8
12
  output = ruby(file_name)
@@ -1,38 +1,40 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
  module Spec
3
3
  module Matchers
4
- describe BeClose do
4
+ describe "be_close" do
5
5
  it "should match when value == target" do
6
- BeClose.new(5.0, 0.5).matches?(5.0).should be_true
6
+ be_close(5.0, 0.5).matches?(5.0).should be_true
7
7
  end
8
8
  it "should match when value < (target + delta)" do
9
- BeClose.new(5.0, 0.5).matches?(5.49).should be_true
9
+ be_close(5.0, 0.5).matches?(5.49).should be_true
10
10
  end
11
11
  it "should match when value > (target - delta)" do
12
- BeClose.new(5.0, 0.5).matches?(4.51).should be_true
12
+ be_close(5.0, 0.5).matches?(4.51).should be_true
13
13
  end
14
14
  it "should not match when value == (target - delta)" do
15
- BeClose.new(5.0, 0.5).matches?(4.5).should be_false
15
+ be_close(5.0, 0.5).matches?(4.5).should be_false
16
16
  end
17
17
  it "should not match when value < (target - delta)" do
18
- BeClose.new(5.0, 0.5).matches?(4.49).should be_false
18
+ be_close(5.0, 0.5).matches?(4.49).should be_false
19
19
  end
20
20
  it "should not match when value == (target + delta)" do
21
- BeClose.new(5.0, 0.5).matches?(5.5).should be_false
21
+ be_close(5.0, 0.5).matches?(5.5).should be_false
22
22
  end
23
23
  it "should not match when value > (target + delta)" do
24
- BeClose.new(5.0, 0.5).matches?(5.51).should be_false
24
+ be_close(5.0, 0.5).matches?(5.51).should be_false
25
25
  end
26
26
  it "should provide a useful failure message" do
27
27
  #given
28
- matcher = BeClose.new(5.0, 0.5)
28
+ matcher = be_close(5.0, 0.5)
29
29
  #when
30
30
  matcher.matches?(5.51)
31
31
  #then
32
32
  matcher.failure_message.should == "expected 5.0 +/- (< 0.5), got 5.51"
33
33
  end
34
34
  it "should describe itself" do
35
- BeClose.new(5.0, 0.5).description.should == "be close to 5.0 (within +- 0.5)"
35
+ matcher = be_close(5.0, 0.5)
36
+ matcher.matches?(5.1)
37
+ matcher.description.should == "be close to 5.0 (within +- 0.5)"
36
38
  end
37
39
  end
38
40
  end
@@ -130,7 +130,7 @@ describe "Matchers should be able to generate their own descriptions" do
130
130
 
131
131
  it "should respond_to" do
132
132
  [].should respond_to(:insert)
133
- Spec::Matchers.generated_description.should == "should respond to #insert"
133
+ Spec::Matchers.generated_description.should == "should respond to [:insert]"
134
134
  end
135
135
 
136
136
  it "should throw symbol" do
@@ -2,24 +2,25 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
3
  module Spec
4
4
  module Matchers
5
- describe Eql do
5
+ describe "eql" do
6
6
  it "should match when actual.eql?(expected)" do
7
- Eql.new(1).matches?(1).should be_true
7
+ eql(1).matches?(1).should be_true
8
8
  end
9
9
  it "should not match when !actual.eql?(expected)" do
10
- Eql.new(1).matches?(2).should be_false
10
+ eql(1).matches?(2).should be_false
11
11
  end
12
12
  it "should describe itself" do
13
- matcher = Eql.new(1)
13
+ matcher = eql(1)
14
+ matcher.matches?(1)
14
15
  matcher.description.should == "eql 1"
15
16
  end
16
17
  it "should provide message, expected and actual on #failure_message" do
17
- matcher = Eql.new("1")
18
+ matcher = eql("1")
18
19
  matcher.matches?(1)
19
20
  matcher.failure_message.should == ["expected \"1\", got 1 (using .eql?)", "1", 1]
20
21
  end
21
22
  it "should provide message, expected and actual on #negative_failure_message" do
22
- matcher = Eql.new(1)
23
+ matcher = eql(1)
23
24
  matcher.matches?(1)
24
25
  matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .eql?)", 1, 1]
25
26
  end
@@ -2,24 +2,25 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
3
  module Spec
4
4
  module Matchers
5
- describe Equal do
5
+ describe "equal" do
6
6
  it "should match when actual.equal?(expected)" do
7
- Equal.new(1).matches?(1).should be_true
7
+ equal(1).matches?(1).should be_true
8
8
  end
9
9
  it "should not match when !actual.equal?(expected)" do
10
- Equal.new("1").matches?("1").should be_false
10
+ equal("1").matches?("1").should be_false
11
11
  end
12
12
  it "should describe itself" do
13
- matcher = Equal.new(1)
13
+ matcher = equal(1)
14
+ matcher.matches?(1)
14
15
  matcher.description.should == "equal 1"
15
16
  end
16
17
  it "should provide message, expected and actual on #failure_message" do
17
- matcher = Equal.new("1")
18
+ matcher = equal("1")
18
19
  matcher.matches?(1)
19
20
  matcher.failure_message.should == ["expected \"1\", got 1 (using .equal?)", "1", 1]
20
21
  end
21
22
  it "should provide message, expected and actual on #negative_failure_message" do
22
- matcher = Equal.new(1)
23
+ matcher = equal(1)
23
24
  matcher.matches?(1)
24
25
  matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .equal?)", 1, 1]
25
26
  end
@@ -52,7 +52,7 @@ describe "should_not have_sym(*args)" do
52
52
  end
53
53
  end
54
54
 
55
- describe Spec::Matchers::Has do
55
+ describe "has" do
56
56
  it "should work when the target implements #send" do
57
57
  o = {:a => "A"}
58
58
  def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
- module HaveSpecHelper
3
+ share_as :HaveSpecHelper do
4
4
  def create_collection_owner_with(n)
5
5
  owner = Spec::Expectations::Helper::CollectionOwner.new
6
6
  (1..n).each do |n|
@@ -9,8 +9,21 @@ module HaveSpecHelper
9
9
  end
10
10
  owner
11
11
  end
12
+ before(:each) do
13
+ unless defined?(ActiveSupport::Inflector)
14
+ @active_support_was_not_defined
15
+ module ActiveSupport
16
+ class Inflector
17
+ def self.pluralize(string)
18
+ string.to_s + 's'
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
12
24
  end
13
25
 
26
+
14
27
  describe "should have(n).items" do
15
28
  include HaveSpecHelper
16
29
 
@@ -50,19 +63,6 @@ end
50
63
  describe 'should have(1).item when ActiveSupport::Inflector is defined' do
51
64
  include HaveSpecHelper
52
65
 
53
- before(:each) do
54
- unless defined?(ActiveSupport::Inflector)
55
- @active_support_was_not_defined
56
- module ActiveSupport
57
- class Inflector
58
- def self.pluralize(string)
59
- string.to_s + 's'
60
- end
61
- end
62
- end
63
- end
64
- end
65
-
66
66
  it 'should pluralize the collection name' do
67
67
  owner = create_collection_owner_with(1)
68
68
  owner.should have(1).item
@@ -70,7 +70,7 @@ describe 'should have(1).item when ActiveSupport::Inflector is defined' do
70
70
 
71
71
  after(:each) do
72
72
  if @active_support_was_not_defined
73
- Object.send :remove_const, :ActiveSupport
73
+ Object.__send__ :remove_const, :ActiveSupport
74
74
  end
75
75
  end
76
76
  end
@@ -96,7 +96,7 @@ describe 'should have(1).item when Inflector is defined' do
96
96
 
97
97
  after(:each) do
98
98
  if @inflector_was_not_defined
99
- Object.send :remove_const, :Inflector
99
+ Object.__send__ :remove_const, :Inflector
100
100
  end
101
101
  end
102
102
  end
@@ -327,7 +327,7 @@ end
327
327
 
328
328
  describe Spec::Matchers::Have, "for a collection owner that implements #send" do
329
329
  include HaveSpecHelper
330
-
330
+
331
331
  before(:each) do
332
332
  @collection = Object.new
333
333
  def @collection.floozles; [1,2] end
@@ -357,7 +357,12 @@ module Spec
357
357
  module Matchers
358
358
  describe Have do
359
359
  it "should have method_missing as private" do
360
- Have.private_instance_methods.should include("method_missing")
360
+ with_ruby '1.8' do
361
+ Have.private_instance_methods.should include("method_missing")
362
+ end
363
+ with_ruby '1.9' do
364
+ Have.private_instance_methods.should include(:method_missing)
365
+ end
361
366
  end
362
367
 
363
368
  describe "respond_to?" do
@@ -5,6 +5,10 @@ describe "should include(expected)" do
5
5
  [1,2,3].should include(3)
6
6
  "abc".should include("a")
7
7
  end
8
+
9
+ it 'should pass if target is a Hash and has the expected as a key' do
10
+ {:key => 'value'}.should include(:key)
11
+ end
8
12
 
9
13
  it "should fail if target does not include expected" do
10
14
  lambda {
@@ -13,6 +17,9 @@ describe "should include(expected)" do
13
17
  lambda {
14
18
  "abc".should include("d")
15
19
  }.should fail_with("expected \"abc\" to include \"d\"")
20
+ lambda {
21
+ {:key => 'value'}.should include(:other)
22
+ }.should fail_with(%Q|expected {:key=>"value"} to include :other|)
16
23
  end
17
24
  end
18
25
 
@@ -20,12 +27,22 @@ describe "should include(with, multiple, args)" do
20
27
  it "should pass if target includes all items" do
21
28
  [1,2,3].should include(1,2,3)
22
29
  end
30
+
31
+ it 'should pass if target is a Hash including all items as keys' do
32
+ {:key => 'value', :other => 'value'}.should include(:key, :other)
33
+ end
23
34
 
24
35
  it "should fail if target does not include any one of the items" do
25
36
  lambda {
26
37
  [1,2,3].should include(1,2,4)
27
38
  }.should fail_with("expected [1, 2, 3] to include 1, 2 and 4")
28
39
  end
40
+
41
+ it 'should pass if target is a Hash missing any item as a key' do
42
+ lambda {
43
+ {:key => 'value'}.should include(:key, :other)
44
+ }.should fail_with(%Q|expected {:key=>"value"} to include :key and :other|)
45
+ end
29
46
  end
30
47
 
31
48
  describe "should_not include(expected)" do
@@ -33,6 +50,10 @@ describe "should_not include(expected)" do
33
50
  [1,2,3].should_not include(4)
34
51
  "abc".should_not include("d")
35
52
  end
53
+
54
+ it 'should pass if target is a Hash and does not have the expected as a key' do
55
+ {:other => 'value'}.should_not include(:key)
56
+ end
36
57
 
37
58
  it "should fail if target includes expected" do
38
59
  lambda {
@@ -41,6 +62,9 @@ describe "should_not include(expected)" do
41
62
  lambda {
42
63
  "abc".should_not include("c")
43
64
  }.should fail_with("expected \"abc\" not to include \"c\"")
65
+ lambda {
66
+ {:key => 'value'}.should_not include(:key)
67
+ }.should fail_with(%Q|expected {:key=>"value"} not to include :key|)
44
68
  end
45
69
  end
46
70
 
@@ -16,18 +16,9 @@ This module should provide the following methods, each of which returns a Matche
16
16
  it "be_arbitrary_predicate" do
17
17
  be_arbitrary_predicate.should be_an_instance_of(Be)
18
18
  end
19
- it "be_close" do
20
- be_close(1,2).should be_an_instance_of(BeClose)
21
- end
22
19
  it "change" do
23
20
  change("target", :message).should be_an_instance_of(Change)
24
21
  end
25
- it "eql" do
26
- eql(:expected).should be_an_instance_of(Eql)
27
- end
28
- it "equal" do
29
- equal(:expected).should be_an_instance_of(Equal)
30
- end
31
22
  it "have" do
32
23
  have(0).should be_an_instance_of(Have)
33
24
  end
@@ -43,9 +34,6 @@ This module should provide the following methods, each of which returns a Matche
43
34
  it "include" do
44
35
  include(:value).should be_an_instance_of(Include)
45
36
  end
46
- it "match" do
47
- match(:value).should be_an_instance_of(Match)
48
- end
49
37
  it "raise_error" do
50
38
  raise_error.should be_an_instance_of(RaiseError)
51
39
  raise_error(NoMethodError).should be_an_instance_of(RaiseError)
@@ -70,7 +58,7 @@ This module should provide the following methods, each of which returns a Matche
70
58
  end
71
59
 
72
60
  it "should convert have_xyz to Has(:have_xyz)" do
73
- Has.should_receive(:new).with(:have_whatever)
61
+ self.should_receive(:has).with(:have_whatever)
74
62
  have_whatever
75
63
  end
76
64
  end
@@ -5,7 +5,7 @@ module Spec
5
5
  describe ThrowSymbol do
6
6
  describe "with no args" do
7
7
  before(:each) { @matcher = ThrowSymbol.new }
8
-
8
+
9
9
  it "should match if any Symbol is thrown" do
10
10
  @matcher.matches?(lambda{ throw :sym }).should be_true
11
11
  end
@@ -24,7 +24,7 @@ module Spec
24
24
  @matcher.negative_failure_message.should == "expected no Symbol, got :sym"
25
25
  end
26
26
  end
27
-
27
+
28
28
  describe "with a symbol" do
29
29
  before(:each) { @matcher = ThrowSymbol.new(:sym) }
30
30
 
@@ -56,7 +56,7 @@ module Spec
56
56
  @matcher.matches?(lambda{ sym }).should be_false
57
57
  end
58
58
  end
59
-
59
+
60
60
  describe "with a symbol and an arg" do
61
61
  before(:each) { @matcher = ThrowSymbol.new(:sym, "a") }
62
62
 
@@ -1,13 +1,11 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
3
  class LiarLiarPantsOnFire
4
- include Spec::MetaClass
5
- extend Spec::MetaClass
6
- def respond_to?(sym)
4
+ def respond_to?(sym, incl_private=false)
7
5
  true
8
6
  end
9
7
 
10
- def self.respond_to?(sym)
8
+ def self.respond_to?(sym, incl_private=false)
11
9
  true
12
10
  end
13
11
  end
@@ -28,6 +26,7 @@ describe 'should_receive' do
28
26
  end
29
27
 
30
28
  it 'should cleanup after itself' do
31
- LiarLiarPantsOnFire.metaclass.instance_methods.should_not include("something")
29
+ (class << LiarLiarPantsOnFire; self; end).instance_methods.should_not include("something")
32
30
  end
33
31
  end
32
+
@@ -1,16 +1,18 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
- class BaseClass
4
- end
3
+ module BugReport496
4
+ class BaseClass
5
+ end
5
6
 
6
- class SubClass < BaseClass
7
- end
7
+ class SubClass < BaseClass
8
+ end
8
9
 
9
- describe "a message expectation on a base class object" do
10
- it "should correctly pick up message sent to it subclass" do
11
- pending("fix for http://rspec.lighthouseapp.com/projects/5645-rspec/tickets/496") do
12
- BaseClass.should_receive(:new).once
13
- SubClass.new
10
+ describe "a message expectation on a base class object" do
11
+ it "should correctly pick up message sent to it subclass" do
12
+ pending("fix for http://rspec.lighthouseapp.com/projects/5645/tickets/496") do
13
+ BaseClass.should_receive(:new).once
14
+ SubClass.new
15
+ end
14
16
  end
15
17
  end
16
18
  end
@@ -0,0 +1,22 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module BugReport600
4
+ class ExampleClass
5
+ def self.method_that_uses_define_method
6
+ define_method "defined_method" do |attributes|
7
+ load_address(address, attributes)
8
+ end
9
+ end
10
+ end
11
+
12
+ describe "stubbing a class method" do
13
+ it "should work" do
14
+ ExampleClass.should_receive(:define_method).with("defined_method")
15
+ ExampleClass.method_that_uses_define_method
16
+ end
17
+
18
+ it "should restore the original method" do
19
+ ExampleClass.method_that_uses_define_method
20
+ end
21
+ end
22
+ end
@@ -300,7 +300,7 @@ OUT
300
300
  formatter.example_pending(example_group.examples.first, 'reason', "#{__FILE__}:#{__LINE__}")
301
301
  io.rewind
302
302
  formatter.dump_pending
303
- io.string.should =~ /Pending\:\nExampleGroup example \(reason\)\n/
303
+ io.string.should =~ /Pending\:\n\nExampleGroup example \(reason\)\n/
304
304
  end
305
305
  end
306
306
 
@@ -88,17 +88,6 @@ EOE
88
88
  EOE
89
89
  end
90
90
 
91
- it "should dump pending" do
92
- example_group = ExampleGroup.describe("example_group") do
93
- specify "example" do
94
- end
95
- end
96
- example = example_group.examples.first
97
- @formatter.example_pending(example, "message", "#{__FILE__}:#{__LINE__}")
98
- @formatter.dump_pending
99
- @io.string.should =~ /Pending\:\nexample_group example \(message\)\n/
100
- end
101
-
102
91
  it "should dump pending with file and line number" do
103
92
  example_group = ExampleGroup.describe("example_group") do
104
93
  specify "example" do
@@ -112,8 +101,9 @@ EOE
112
101
  @io.string.should ==(<<-HERE)
113
102
  *
114
103
  Pending:
104
+
115
105
  example_group example (message)
116
- Called from #{file}:#{line}
106
+ #{file}:#{line}
117
107
  HERE
118
108
  end
119
109
  end
@@ -124,11 +114,11 @@ HERE
124
114
  @options = mock('options')
125
115
  @out.stub!(:puts)
126
116
  @formatter = ProgressBarFormatter.new(@options, @out)
127
- @formatter.class.send :public, :output_to_tty?
117
+ @formatter.class.__send__ :public, :output_to_tty?
128
118
  end
129
119
 
130
120
  after(:each) do
131
- @formatter.class.send :protected, :output_to_tty?
121
+ @formatter.class.__send__ :protected, :output_to_tty?
132
122
  end
133
123
 
134
124
  it "should not throw NoMethodError on output_to_tty?" do
@@ -141,7 +141,7 @@ module Spec
141
141
  formatter.example_pending(example_group.examples.first, 'reason', "#{__FILE__}:#{__LINE__}")
142
142
  io.rewind
143
143
  formatter.dump_pending
144
- io.string.should =~ /Pending\:\nExampleGroup example \(reason\)\n/
144
+ io.string.should =~ /Pending\:\n\nExampleGroup example \(reason\)\n/
145
145
  end
146
146
  end
147
147
 
@@ -212,7 +212,7 @@ module Spec
212
212
  describe "#load_class" do
213
213
  it "should raise error when not class name" do
214
214
  lambda do
215
- @options.send(:load_class, 'foo', 'fruit', '--food')
215
+ @options.__send__(:load_class, 'foo', 'fruit', '--food')
216
216
  end.should raise_error('"foo" is not a valid class name')
217
217
  end
218
218
  end