rr 1.1.1 → 1.1.2.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +46 -0
  3. data/CHANGES.md +21 -1
  4. data/Gemfile +19 -0
  5. data/README.md +91 -106
  6. data/Rakefile +55 -0
  7. data/gemfiles/ruby_18_rspec_1.gemfile +14 -0
  8. data/gemfiles/ruby_18_rspec_1.gemfile.lock +38 -0
  9. data/gemfiles/ruby_18_rspec_1_rails_2.gemfile +18 -0
  10. data/gemfiles/ruby_18_rspec_1_rails_2.gemfile.lock +64 -0
  11. data/gemfiles/ruby_19_rspec_2.gemfile +14 -0
  12. data/gemfiles/ruby_19_rspec_2.gemfile.lock +49 -0
  13. data/gemfiles/ruby_19_rspec_2_rails_3.gemfile +15 -0
  14. data/gemfiles/ruby_19_rspec_2_rails_3.gemfile.lock +123 -0
  15. data/gemfiles/ruby_19_rspec_2_rails_4.gemfile +15 -0
  16. data/gemfiles/ruby_19_rspec_2_rails_4.gemfile.lock +119 -0
  17. data/lib/rr/adapters.rb +4 -14
  18. data/lib/rr/integrations.rb +13 -12
  19. data/lib/rr/integrations/decorator.rb +4 -1
  20. data/lib/rr/integrations/rspec_2.rb +6 -1
  21. data/lib/rr/integrations/test_unit_1.rb +2 -2
  22. data/lib/rr/integrations/test_unit_2.rb +3 -1
  23. data/lib/rr/version.rb +1 -2
  24. data/lib/rr/without_autohook.rb +1 -1
  25. data/rr.gemspec +6 -2
  26. data/spec/custom_formatter_for_rspec.rb +18 -0
  27. data/spec/custom_formatter_for_rspec_2.rb +40 -0
  28. data/spec/defines_spec_suite_tasks.rb +45 -0
  29. data/spec/fixtures/rubygems_patch_for_187.rb +598 -0
  30. data/spec/global_helper.rb +33 -0
  31. data/spec/spec.opts +3 -0
  32. data/spec/spec_suite_configuration.rb +132 -0
  33. data/spec/spec_suite_runner.rb +47 -0
  34. data/spec/suites.yml +24 -0
  35. data/spec/suites/rspec_1/helper.rb +24 -0
  36. data/spec/suites/rspec_1/integration/rspec_1_spec.rb +93 -0
  37. data/spec/suites/rspec_1/integration/test_unit_1_spec.rb +102 -0
  38. data/spec/suites/rspec_1/integration/test_unit_2_spec.rb +109 -0
  39. data/spec/suites/rspec_1/spec_helper.rb +3 -0
  40. data/spec/suites/rspec_1_rails_2/integration/astc_rails_2_spec.rb +141 -0
  41. data/spec/suites/rspec_1_rails_2/integration/rspec_1_rails_2_spec.rb +132 -0
  42. data/spec/suites/rspec_1_rails_2/integration/test_unit_1_rails_2_spec.rb +141 -0
  43. data/spec/suites/rspec_1_rails_2/integration/test_unit_2_rails_2_spec.rb +148 -0
  44. data/spec/suites/rspec_1_rails_2/spec_helper.rb +3 -0
  45. data/spec/suites/rspec_2/functional/any_instance_of_spec.rb +47 -0
  46. data/spec/suites/rspec_2/functional/dont_allow_spec.rb +12 -0
  47. data/spec/suites/rspec_2/functional/dsl_spec.rb +13 -0
  48. data/spec/suites/rspec_2/functional/instance_of_spec.rb +14 -0
  49. data/spec/suites/rspec_2/functional/mock_spec.rb +241 -0
  50. data/spec/suites/rspec_2/functional/proxy_spec.rb +136 -0
  51. data/spec/suites/rspec_2/functional/spy_spec.rb +41 -0
  52. data/spec/suites/rspec_2/functional/strong_spec.rb +79 -0
  53. data/spec/suites/rspec_2/functional/stub_spec.rb +190 -0
  54. data/spec/suites/rspec_2/functional/wildcard_matchers_spec.rb +128 -0
  55. data/spec/suites/rspec_2/helper.rb +28 -0
  56. data/spec/suites/rspec_2/integration/minitest_4_spec.rb +109 -0
  57. data/spec/suites/rspec_2/integration/minitest_spec.rb +109 -0
  58. data/spec/suites/rspec_2/integration/rspec_2_spec.rb +133 -0
  59. data/spec/suites/rspec_2/integration/test_unit_200_spec.rb +102 -0
  60. data/spec/suites/rspec_2/integration/test_unit_2_spec.rb +109 -0
  61. data/spec/suites/rspec_2/spec_helper.rb +3 -0
  62. data/spec/suites/rspec_2/support/matchers/wildcard_matcher_matchers.rb +32 -0
  63. data/spec/suites/rspec_2/support/shared_examples/space.rb +13 -0
  64. data/spec/suites/rspec_2/support/shared_examples/times_called_expectation.rb +9 -0
  65. data/spec/suites/rspec_2/unit/adapters/rr_methods/double_creators_spec.rb +135 -0
  66. data/spec/suites/rspec_2/unit/adapters/rr_methods/space_spec.rb +101 -0
  67. data/spec/suites/rspec_2/unit/adapters/rr_methods/wildcard_matchers_spec.rb +69 -0
  68. data/spec/suites/rspec_2/unit/core_ext/array_spec.rb +39 -0
  69. data/spec/suites/rspec_2/unit/core_ext/enumerable_spec.rb +81 -0
  70. data/spec/suites/rspec_2/unit/core_ext/hash_spec.rb +55 -0
  71. data/spec/suites/rspec_2/unit/core_ext/range_spec.rb +41 -0
  72. data/spec/suites/rspec_2/unit/core_ext/regexp_spec.rb +41 -0
  73. data/spec/suites/rspec_2/unit/double_definitions/child_double_definition_create_spec.rb +114 -0
  74. data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_blank_slate_spec.rb +93 -0
  75. data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_spec.rb +446 -0
  76. data/spec/suites/rspec_2/unit/errors/rr_error_spec.rb +67 -0
  77. data/spec/suites/rspec_2/unit/expectations/any_argument_expectation_spec.rb +48 -0
  78. data/spec/suites/rspec_2/unit/expectations/anything_argument_equality_expectation_spec.rb +14 -0
  79. data/spec/suites/rspec_2/unit/expectations/argument_equality_expectation_spec.rb +135 -0
  80. data/spec/suites/rspec_2/unit/expectations/boolean_argument_equality_expectation_spec.rb +30 -0
  81. data/spec/suites/rspec_2/unit/expectations/hash_including_argument_equality_expectation_spec.rb +82 -0
  82. data/spec/suites/rspec_2/unit/expectations/satisfy_argument_equality_expectation_spec.rb +61 -0
  83. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/any_times_matcher_spec.rb +22 -0
  84. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/at_least_matcher_spec.rb +37 -0
  85. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/at_most_matcher_spec.rb +43 -0
  86. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/integer_matcher_spec.rb +58 -0
  87. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/proc_matcher_spec.rb +35 -0
  88. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/range_matcher_spec.rb +39 -0
  89. data/spec/suites/rspec_2/unit/hash_with_object_id_key_spec.rb +88 -0
  90. data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_spec.rb +545 -0
  91. data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_verify_spec.rb +32 -0
  92. data/spec/suites/rspec_2/unit/integrations/rspec/invocation_matcher_spec.rb +297 -0
  93. data/spec/suites/rspec_2/unit/integrations/rspec_spec.rb +85 -0
  94. data/spec/suites/rspec_2/unit/proc_from_block_spec.rb +14 -0
  95. data/spec/suites/rspec_2/unit/rr_spec.rb +28 -0
  96. data/spec/suites/rspec_2/unit/space_spec.rb +595 -0
  97. data/spec/suites/rspec_2/unit/spy_verification_spec.rb +133 -0
  98. data/spec/suites/rspec_2/unit/times_called_matchers/any_times_matcher_spec.rb +46 -0
  99. data/spec/suites/rspec_2/unit/times_called_matchers/at_least_matcher_spec.rb +54 -0
  100. data/spec/suites/rspec_2/unit/times_called_matchers/at_most_matcher_spec.rb +69 -0
  101. data/spec/suites/rspec_2/unit/times_called_matchers/integer_matcher_spec.rb +69 -0
  102. data/spec/suites/rspec_2/unit/times_called_matchers/proc_matcher_spec.rb +54 -0
  103. data/spec/suites/rspec_2/unit/times_called_matchers/range_matcher_spec.rb +75 -0
  104. data/spec/suites/rspec_2/unit/times_called_matchers/times_called_matcher_spec.rb +117 -0
  105. data/spec/suites/rspec_2/unit/wildcard_matchers/anything_spec.rb +33 -0
  106. data/spec/suites/rspec_2/unit/wildcard_matchers/boolean_spec.rb +45 -0
  107. data/spec/suites/rspec_2/unit/wildcard_matchers/duck_type_spec.rb +64 -0
  108. data/spec/suites/rspec_2/unit/wildcard_matchers/hash_including_spec.rb +64 -0
  109. data/spec/suites/rspec_2/unit/wildcard_matchers/is_a_spec.rb +55 -0
  110. data/spec/suites/rspec_2/unit/wildcard_matchers/numeric_spec.rb +46 -0
  111. data/spec/suites/rspec_2/unit/wildcard_matchers/satisfy_spec.rb +57 -0
  112. data/spec/suites/rspec_2_rails_3/integration/astc_rails_3_spec.rb +141 -0
  113. data/spec/suites/rspec_2_rails_3/integration/minitest_4_rails_3_spec.rb +148 -0
  114. data/spec/suites/rspec_2_rails_3/integration/rspec_2_rails_3_spec.rb +172 -0
  115. data/spec/suites/rspec_2_rails_3/integration/test_unit_200_rails_3_spec.rb +141 -0
  116. data/spec/suites/rspec_2_rails_3/integration/test_unit_2_rails_3_spec.rb +148 -0
  117. data/spec/suites/rspec_2_rails_3/spec_helper.rb +3 -0
  118. data/spec/suites/rspec_2_rails_4/integration/astc_rails_4_spec.rb +142 -0
  119. data/spec/suites/rspec_2_rails_4/integration/minitest_4_rails_4_spec.rb +149 -0
  120. data/spec/suites/rspec_2_rails_4/integration/rspec_2_rails_4_spec.rb +173 -0
  121. data/spec/suites/rspec_2_rails_4/integration/test_unit_200_rails_4_spec.rb +142 -0
  122. data/spec/suites/rspec_2_rails_4/integration/test_unit_2_rails_4_spec.rb +149 -0
  123. data/spec/suites/rspec_2_rails_4/spec_helper.rb +3 -0
  124. data/spec/support/adapter.rb +22 -0
  125. data/spec/support/adapter_tests/base.rb +45 -0
  126. data/spec/support/adapter_tests/minitest.rb +7 -0
  127. data/spec/support/adapter_tests/rspec.rb +66 -0
  128. data/spec/support/adapter_tests/test_unit.rb +47 -0
  129. data/spec/support/command_runner.rb +105 -0
  130. data/spec/support/generator.rb +56 -0
  131. data/spec/support/integration_tests/base.rb +64 -0
  132. data/spec/support/integration_tests/rails.rb +60 -0
  133. data/spec/support/integration_tests/rails_minitest.rb +13 -0
  134. data/spec/support/integration_tests/rails_rspec.rb +13 -0
  135. data/spec/support/integration_tests/rails_test_unit.rb +13 -0
  136. data/spec/support/integration_tests/rails_test_unit_like.rb +13 -0
  137. data/spec/support/integration_tests/ruby.rb +7 -0
  138. data/spec/support/integration_tests/ruby_minitest.rb +13 -0
  139. data/spec/support/integration_tests/ruby_rspec.rb +13 -0
  140. data/spec/support/integration_tests/ruby_test_unit.rb +13 -0
  141. data/spec/support/matchers/be_a_subset_of_matcher.rb +24 -0
  142. data/spec/support/project/cucumber.rb +50 -0
  143. data/spec/support/project/generator.rb +352 -0
  144. data/spec/support/project/minitest.rb +39 -0
  145. data/spec/support/project/rails.rb +199 -0
  146. data/spec/support/project/rails_minitest.rb +17 -0
  147. data/spec/support/project/rails_rspec.rb +50 -0
  148. data/spec/support/project/rails_test_unit.rb +17 -0
  149. data/spec/support/project/rails_test_unit_like.rb +17 -0
  150. data/spec/support/project/rspec.rb +69 -0
  151. data/spec/support/project/ruby.rb +34 -0
  152. data/spec/support/project/ruby_minitest.rb +11 -0
  153. data/spec/support/project/ruby_rspec.rb +29 -0
  154. data/spec/support/project/ruby_test_unit.rb +11 -0
  155. data/spec/support/project/ruby_test_unit_like.rb +21 -0
  156. data/spec/support/project/test_unit.rb +29 -0
  157. data/spec/support/project/test_unit_like.rb +7 -0
  158. data/spec/support/project/tests_runner.rb +22 -0
  159. data/spec/support/test.sqlite3 +0 -0
  160. data/spec/support/test_case/generator.rb +53 -0
  161. data/spec/support/test_case/minitest.rb +13 -0
  162. data/spec/support/test_case/rspec.rb +19 -0
  163. data/spec/support/test_case/test_unit.rb +21 -0
  164. data/spec/support/test_file/generator.rb +120 -0
  165. data/spec/support/test_file/minitest.rb +19 -0
  166. data/spec/support/test_file/rails_minitest.rb +7 -0
  167. data/spec/support/test_file/rails_rspec.rb +12 -0
  168. data/spec/support/test_file/rails_test_unit.rb +25 -0
  169. data/spec/support/test_file/rspec.rb +33 -0
  170. data/spec/support/test_file/test_unit.rb +36 -0
  171. data/spec/support/test_helper/generator.rb +27 -0
  172. data/spec/support/test_helper/minitest.rb +7 -0
  173. data/spec/support/test_helper/rails.rb +31 -0
  174. data/spec/support/test_helper/rails_minitest.rb +7 -0
  175. data/spec/support/test_helper/rails_rspec.rb +25 -0
  176. data/spec/support/test_helper/rails_test_unit.rb +23 -0
  177. data/spec/support/test_helper/rspec.rb +7 -0
  178. data/spec/support/test_helper/ruby.rb +31 -0
  179. data/spec/support/test_helper/test_unit.rb +7 -0
  180. metadata +172 -6
  181. data/VERSION +0 -1
@@ -0,0 +1,141 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe 'Integration with Test::Unit 2.0.0 and Rails 3' do
4
+ include IntegrationTests::RailsTestUnit
5
+
6
+ def configure_rails_project_generator(project_generator)
7
+ super
8
+ project_generator.configure do |project|
9
+ project.rails_version = 3
10
+ end
11
+ end
12
+
13
+ def self.including_the_adapter_manually_works
14
+ specify "including the adapter manually works" do
15
+ project = generate_project do |project|
16
+ project.add_to_prelude <<-EOT
17
+ class ActiveSupport::TestCase
18
+ include RR::Adapters::TestUnit
19
+ end
20
+ EOT
21
+ end
22
+ project.add_test_file do |file|
23
+ file.add_working_test_case_with_adapter_tests do |test_case|
24
+ test_case.add_to_body <<-EOT
25
+ def test_the_correct_adapters_are_loaded
26
+ assert_adapters_loaded #{adapters_that_should_be_loaded.inspect}
27
+ end
28
+ EOT
29
+ end
30
+ end
31
+ result = project.run_tests
32
+ result.should be_success
33
+ result.should_not have_errors_or_failures
34
+ end
35
+ end
36
+
37
+ def self.rr_hooks_into_the_test_framework_automatically
38
+ specify "RR hooks into the test framework automatically" do
39
+ project = generate_project
40
+ project.add_test_file do |file|
41
+ file.add_working_test_case
42
+ end
43
+ result = project.run_tests
44
+ result.should be_success
45
+ result.should_not have_errors_or_failures
46
+ end
47
+ end
48
+
49
+ def self.using_rr_with_cucumber_works
50
+ specify "using RR with Cucumber works" do
51
+ project_generator = build_rails_project_generator do |project_generator|
52
+ project_generator.mixin Project::Cucumber
53
+ end
54
+ project = project_generator.call
55
+ result = project.run_command_within("bundle exec cucumber")
56
+ result.should be_success
57
+ end
58
+ end
59
+
60
+ context 'when Bundler is autorequiring RR' do
61
+ def configure_project_generator(project_generator)
62
+ super
63
+ project_generator.configure do |project|
64
+ project.autorequire_gems = true
65
+ end
66
+ end
67
+
68
+ def adapters_that_should_be_loaded
69
+ [:TestUnit200]
70
+ end
71
+
72
+ including_the_adapter_manually_works
73
+ using_rr_with_cucumber_works
74
+ end
75
+
76
+ context 'when RR is being required manually' do
77
+ def configure_project_generator(project_generator)
78
+ super
79
+ project_generator.configure do |project|
80
+ project.autorequire_gems = false
81
+ end
82
+ end
83
+
84
+ def adapters_that_should_be_loaded
85
+ [:TestUnit200, :TestUnit200ActiveSupport]
86
+ end
87
+
88
+ rr_hooks_into_the_test_framework_automatically
89
+ including_the_adapter_manually_works
90
+ using_rr_with_cucumber_works
91
+
92
+ specify "when RR raises an error it raises a failure not an exception" do
93
+ project = generate_project
94
+ project.add_test_file do |file|
95
+ file.add_test_case do |test_case|
96
+ test_case.add_test <<-EOT
97
+ object = Object.new
98
+ mock(object).foo
99
+ EOT
100
+ end
101
+ end
102
+ result = project.run_tests
103
+ result.should fail_with_output(/1 failure/)
104
+ end
105
+
106
+ specify "the database is properly rolled back after an RR error" do
107
+ project = generate_project do |project|
108
+ project.add_model_and_migration(:person, :people, :name => :string)
109
+ end
110
+ project.add_test_file do |file|
111
+ file.add_test_case do |test_case|
112
+ test_case.add_test <<-EOT
113
+ Person.create!(:name => 'Joe Blow')
114
+ object = Object.new
115
+ mock(object).foo
116
+ EOT
117
+ end
118
+ end
119
+ expect {
120
+ result = project.run_tests
121
+ result.should have_errors_or_failures
122
+ }.to leave_database_table_clear(project, :people)
123
+ end
124
+
125
+ specify "throwing an error in teardown doesn't mess things up" do
126
+ project = generate_project
127
+ project.add_test_file do |file|
128
+ file.add_test_case do |test_case|
129
+ test_case.add_to_body <<-EOT
130
+ def teardown
131
+ raise 'hell'
132
+ end
133
+ EOT
134
+ test_case.add_test("") # doesn't matter
135
+ end
136
+ end
137
+ result = project.run_tests
138
+ result.should fail_with_output(/1 error/)
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,148 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe 'Integration with Test::Unit >= 2.5 and Rails 3' do
4
+ include IntegrationTests::RailsTestUnit
5
+
6
+ def configure_rails_project_generator(project_generator)
7
+ super
8
+ project_generator.configure do |project|
9
+ project.rails_version = 3
10
+ end
11
+ end
12
+
13
+ def configure_project_generator(project_generator)
14
+ super
15
+ project_generator.configure do |project|
16
+ project.test_unit_gem_version = '>= 2.5'
17
+ end
18
+ end
19
+
20
+ def self.including_the_adapter_manually_works
21
+ specify "including the adapter manually works" do
22
+ project = generate_project do |project|
23
+ project.add_to_prelude <<-EOT
24
+ class ActiveSupport::TestCase
25
+ include RR::Adapters::TestUnit
26
+ end
27
+ EOT
28
+ end
29
+ project.add_test_file do |file|
30
+ file.add_working_test_case_with_adapter_tests do |test_case|
31
+ test_case.add_to_body <<-EOT
32
+ def test_the_correct_adapters_are_loaded
33
+ assert_adapters_loaded #{adapters_that_should_be_loaded.inspect}
34
+ end
35
+ EOT
36
+ end
37
+ end
38
+ result = project.run_tests
39
+ result.should be_success
40
+ result.should_not have_errors_or_failures
41
+ end
42
+ end
43
+
44
+ def self.rr_hooks_into_the_test_framework_automatically
45
+ specify "RR hooks into the test framework automatically" do
46
+ project = generate_project
47
+ project.add_test_file do |file|
48
+ file.add_working_test_case
49
+ end
50
+ result = project.run_tests
51
+ result.should be_success
52
+ result.should_not have_errors_or_failures
53
+ end
54
+ end
55
+
56
+ def self.using_rr_with_cucumber_works
57
+ specify "using RR with Cucumber works" do
58
+ project_generator = build_rails_project_generator do |project_generator|
59
+ project_generator.mixin Project::Cucumber
60
+ end
61
+ project = project_generator.call
62
+ result = project.run_command_within("bundle exec cucumber")
63
+ result.should be_success
64
+ end
65
+ end
66
+
67
+ context 'when Bundler is autorequiring RR' do
68
+ def configure_project_generator(project_generator)
69
+ super
70
+ project_generator.configure do |project|
71
+ project.autorequire_gems = true
72
+ end
73
+ end
74
+
75
+ def adapters_that_should_be_loaded
76
+ [:TestUnit2]
77
+ end
78
+
79
+ including_the_adapter_manually_works
80
+ using_rr_with_cucumber_works
81
+ end
82
+
83
+ context 'when RR is being required manually' do
84
+ def configure_project_generator(project_generator)
85
+ super
86
+ project_generator.configure do |project|
87
+ project.autorequire_gems = false
88
+ end
89
+ end
90
+
91
+ def adapters_that_should_be_loaded
92
+ [:TestUnit2, :TestUnit2ActiveSupport]
93
+ end
94
+
95
+ rr_hooks_into_the_test_framework_automatically
96
+ including_the_adapter_manually_works
97
+ using_rr_with_cucumber_works
98
+
99
+ specify "when RR raises an error it raises a failure not an exception" do
100
+ project = generate_project
101
+ project.add_test_file do |file|
102
+ file.add_test_case do |test_case|
103
+ test_case.add_test <<-EOT
104
+ object = Object.new
105
+ mock(object).foo
106
+ EOT
107
+ end
108
+ end
109
+ result = project.run_tests
110
+ result.should fail_with_output(/1 failure/)
111
+ end
112
+
113
+ specify "the database is properly rolled back after an RR error" do
114
+ project = generate_project do |project|
115
+ project.add_model_and_migration(:person, :people, :name => :string)
116
+ end
117
+ project.add_test_file do |file|
118
+ file.add_test_case do |test_case|
119
+ test_case.add_test <<-EOT
120
+ Person.create!(:name => 'Joe Blow')
121
+ object = Object.new
122
+ mock(object).foo
123
+ EOT
124
+ end
125
+ end
126
+ expect {
127
+ result = project.run_tests
128
+ result.should have_errors_or_failures
129
+ }.to leave_database_table_clear(project, :people)
130
+ end
131
+
132
+ specify "throwing an error in teardown doesn't mess things up" do
133
+ project = generate_project
134
+ project.add_test_file do |file|
135
+ file.add_test_case do |test_case|
136
+ test_case.add_to_body <<-EOT
137
+ def teardown
138
+ raise 'hell'
139
+ end
140
+ EOT
141
+ test_case.add_test("") # doesn't matter
142
+ end
143
+ end
144
+ result = project.run_tests
145
+ result.should fail_with_output(/1 error/)
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,3 @@
1
+ require File.expand_path('../../../global_helper', __FILE__)
2
+ RR::Test.setup_test_suite(:rspec_2_rails_3)
3
+ require File.expand_path('../../rspec_2/helper', __FILE__)
@@ -0,0 +1,142 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe 'Integration with straight ActiveSupport::TestCase and Rails 4' do
4
+ include IntegrationTests::RailsTestUnitLike
5
+
6
+ def configure_rails_project_generator(project_generator)
7
+ super
8
+ project_generator.configure do |project|
9
+ project.rails_version = 4
10
+ end
11
+ end
12
+
13
+ def self.including_the_adapter_manually_works
14
+ specify "including the adapter manually works" do
15
+ project = generate_project do |project|
16
+ project.add_to_prelude <<-EOT
17
+ class ActiveSupport::TestCase
18
+ include RR::Adapters::TestUnit
19
+ end
20
+ EOT
21
+ end
22
+ project.add_test_file do |file|
23
+ file.add_working_test_case_with_adapter_tests do |test_case|
24
+ test_case.add_to_body <<-EOT
25
+ def test_the_correct_adapters_are_loaded
26
+ assert_adapters_loaded #{adapters_that_should_be_loaded.inspect}
27
+ end
28
+ EOT
29
+ end
30
+ end
31
+ result = project.run_tests
32
+ result.should be_success
33
+ result.should_not have_errors_or_failures
34
+ end
35
+ end
36
+
37
+ def self.rr_hooks_into_the_test_framework_automatically
38
+ specify "RR hooks into the test framework automatically" do
39
+ project = generate_project
40
+ project.add_test_file do |file|
41
+ file.add_working_test_case
42
+ end
43
+ result = project.run_tests
44
+ result.should be_success
45
+ result.should_not have_errors_or_failures
46
+ end
47
+ end
48
+
49
+ def self.using_rr_with_cucumber_works
50
+ specify "using RR with Cucumber works" do
51
+ pending "Cucumber doesn't work with Rails 4 just yet"
52
+ project_generator = build_rails_project_generator do |project_generator|
53
+ project_generator.mixin Project::Cucumber
54
+ end
55
+ project = project_generator.call
56
+ result = project.run_command_within("bundle exec cucumber")
57
+ result.should be_success
58
+ end
59
+ end
60
+
61
+ context 'when Bundler is autorequiring RR' do
62
+ def configure_project_generator(project_generator)
63
+ super
64
+ project_generator.configure do |project|
65
+ project.autorequire_gems = true
66
+ end
67
+ end
68
+
69
+ def adapters_that_should_be_loaded
70
+ [:MiniTest4]
71
+ end
72
+
73
+ including_the_adapter_manually_works
74
+ using_rr_with_cucumber_works
75
+ end
76
+
77
+ context 'when RR is being required manually' do
78
+ def configure_project_generator(project_generator)
79
+ super
80
+ project_generator.configure do |project|
81
+ project.autorequire_gems = false
82
+ end
83
+ end
84
+
85
+ def adapters_that_should_be_loaded
86
+ [:MiniTest4, :MiniTest4ActiveSupport]
87
+ end
88
+
89
+ rr_hooks_into_the_test_framework_automatically
90
+ including_the_adapter_manually_works
91
+ using_rr_with_cucumber_works
92
+
93
+ specify "when RR raises an error it raises a failure not an exception" do
94
+ project = generate_project
95
+ project.add_test_file do |file|
96
+ file.add_test_case do |test_case|
97
+ test_case.add_test <<-EOT
98
+ object = Object.new
99
+ mock(object).foo
100
+ EOT
101
+ end
102
+ end
103
+ result = project.run_tests
104
+ result.should fail_with_output(/1 failure/)
105
+ end
106
+
107
+ specify "the database is properly rolled back after an RR error" do
108
+ project = generate_project do |project|
109
+ project.add_model_and_migration(:person, :people, :name => :string)
110
+ end
111
+ project.add_test_file do |file|
112
+ file.add_test_case do |test_case|
113
+ test_case.add_test <<-EOT
114
+ Person.create!(:name => 'Joe Blow')
115
+ object = Object.new
116
+ mock(object).foo
117
+ EOT
118
+ end
119
+ end
120
+ expect {
121
+ result = project.run_tests
122
+ result.should have_errors_or_failures
123
+ }.to leave_database_table_clear(project, :people)
124
+ end
125
+
126
+ specify "throwing an error in teardown doesn't mess things up" do
127
+ project = generate_project
128
+ project.add_test_file do |file|
129
+ file.add_test_case do |test_case|
130
+ test_case.add_to_body <<-EOT
131
+ def teardown
132
+ raise 'hell'
133
+ end
134
+ EOT
135
+ test_case.add_test("") # doesn't matter
136
+ end
137
+ end
138
+ result = project.run_tests
139
+ result.should fail_with_output(/1 error/)
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,149 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe 'Integration with MiniTest 4 and Rails 4' do
4
+ include IntegrationTests::RailsMinitest
5
+
6
+ def configure_rails_project_generator(project_generator)
7
+ super
8
+ project_generator.configure do |project|
9
+ project.rails_version = 4
10
+ end
11
+ end
12
+
13
+ def configure_project_generator(project_generator)
14
+ super
15
+ project_generator.configure do |project|
16
+ project.minitest_version = 4
17
+ end
18
+ end
19
+
20
+ def self.including_the_adapter_manually_works
21
+ specify "including the adapter manually works" do
22
+ project = generate_project do |project|
23
+ project.add_to_prelude <<-EOT
24
+ class ActiveSupport::TestCase
25
+ include RR::Adapters::MiniTest
26
+ end
27
+ EOT
28
+ end
29
+ project.add_test_file do |file|
30
+ file.add_working_test_case_with_adapter_tests do |test_case|
31
+ test_case.add_to_body <<-EOT
32
+ def test_the_correct_adapters_are_loaded
33
+ assert_adapters_loaded #{adapters_that_should_be_loaded.inspect}
34
+ end
35
+ EOT
36
+ end
37
+ end
38
+ result = project.run_tests
39
+ result.should be_success
40
+ result.should_not have_errors_or_failures
41
+ end
42
+ end
43
+
44
+ def self.rr_hooks_into_the_test_framework_automatically
45
+ specify "RR hooks into the test framework automatically" do
46
+ project = generate_project
47
+ project.add_test_file do |file|
48
+ file.add_working_test_case
49
+ end
50
+ result = project.run_tests
51
+ result.should be_success
52
+ result.should_not have_errors_or_failures
53
+ end
54
+ end
55
+
56
+ def self.using_rr_with_cucumber_works
57
+ specify "using RR with Cucumber works" do
58
+ pending "Cucumber doesn't work with Rails 4 just yet"
59
+ project_generator = build_rails_project_generator do |project_generator|
60
+ project_generator.mixin Project::Cucumber
61
+ end
62
+ project = project_generator.call
63
+ result = project.run_command_within("bundle exec cucumber")
64
+ result.should be_success
65
+ end
66
+ end
67
+
68
+ context 'when Bundler is autorequiring RR' do
69
+ def configure_project_generator(project_generator)
70
+ super
71
+ project_generator.configure do |project|
72
+ project.autorequire_gems = true
73
+ end
74
+ end
75
+
76
+ def adapters_that_should_be_loaded
77
+ [:MiniTest4]
78
+ end
79
+
80
+ including_the_adapter_manually_works
81
+ using_rr_with_cucumber_works
82
+ end
83
+
84
+ context 'when RR is being required manually' do
85
+ def configure_project_generator(project_generator)
86
+ super
87
+ project_generator.configure do |project|
88
+ project.autorequire_gems = false
89
+ end
90
+ end
91
+
92
+ def adapters_that_should_be_loaded
93
+ [:MiniTest4, :MiniTest4ActiveSupport]
94
+ end
95
+
96
+ rr_hooks_into_the_test_framework_automatically
97
+ including_the_adapter_manually_works
98
+ using_rr_with_cucumber_works
99
+
100
+ specify "when RR raises an error it raises a failure not an exception" do
101
+ project = generate_project
102
+ project.add_test_file do |file|
103
+ file.add_test_case do |test_case|
104
+ test_case.add_test <<-EOT
105
+ object = Object.new
106
+ mock(object).foo
107
+ EOT
108
+ end
109
+ end
110
+ result = project.run_tests
111
+ result.should fail_with_output(/1 failure/)
112
+ end
113
+
114
+ specify "the database is properly rolled back after an RR error" do
115
+ project = generate_project do |project|
116
+ project.add_model_and_migration(:person, :people, :name => :string)
117
+ end
118
+ project.add_test_file do |file|
119
+ file.add_test_case do |test_case|
120
+ test_case.add_test <<-EOT
121
+ Person.create!(:name => 'Joe Blow')
122
+ object = Object.new
123
+ mock(object).foo
124
+ EOT
125
+ end
126
+ end
127
+ expect {
128
+ result = project.run_tests
129
+ result.should have_errors_or_failures
130
+ }.to leave_database_table_clear(project, :people)
131
+ end
132
+
133
+ specify "throwing an error in teardown doesn't mess things up" do
134
+ project = generate_project
135
+ project.add_test_file do |file|
136
+ file.add_test_case do |test_case|
137
+ test_case.add_to_body <<-EOT
138
+ def teardown
139
+ raise 'hell'
140
+ end
141
+ EOT
142
+ test_case.add_test("") # doesn't matter
143
+ end
144
+ end
145
+ result = project.run_tests
146
+ result.should fail_with_output(/1 error/)
147
+ end
148
+ end
149
+ end