rr 1.1.1 → 3.0.0

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 (223) hide show
  1. checksums.yaml +5 -5
  2. data/Appraisals +6 -0
  3. data/CHANGES.md +102 -1
  4. data/CREDITS.md +5 -0
  5. data/Gemfile +3 -0
  6. data/README.md +91 -110
  7. data/Rakefile +43 -0
  8. data/doc/02_syntax_comparison.md +1 -0
  9. data/gemfiles/ruby_19_rspec_2.gemfile +14 -0
  10. data/gemfiles/ruby_19_rspec_2.gemfile.lock +49 -0
  11. data/gemfiles/ruby_19_rspec_2_rails_4.gemfile +15 -0
  12. data/gemfiles/ruby_19_rspec_2_rails_4.gemfile.lock +119 -0
  13. data/lib/rr/class_instance_method_defined.rb +1 -1
  14. data/lib/rr/core_ext/array.rb +2 -0
  15. data/lib/rr/core_ext/hash.rb +2 -0
  16. data/lib/rr/deprecations.rb +97 -0
  17. data/lib/rr/double.rb +28 -10
  18. data/lib/rr/double_definitions/double_definition.rb +39 -16
  19. data/lib/rr/double_definitions/double_definition_create.rb +5 -5
  20. data/lib/rr/double_definitions/double_definition_create_blank_slate.rb +10 -4
  21. data/lib/rr/double_definitions/double_injections/any_instance_of.rb +1 -1
  22. data/lib/rr/double_definitions/double_injections/instance.rb +2 -2
  23. data/lib/rr/double_definitions/strategies/strategy.rb +27 -8
  24. data/lib/rr/double_definitions/strategies/verification/mock.rb +8 -2
  25. data/lib/rr/double_matches.rb +4 -3
  26. data/lib/rr/dsl.rb +152 -0
  27. data/lib/rr/expectations/any_argument_expectation.rb +4 -4
  28. data/lib/rr/expectations/argument_equality_expectation.rb +43 -5
  29. data/lib/rr/injections/double_injection.rb +67 -19
  30. data/lib/rr/injections/method_missing_injection.rb +37 -6
  31. data/lib/rr/integrations.rb +13 -12
  32. data/lib/rr/integrations/decorator.rb +4 -1
  33. data/lib/rr/integrations/minitest_4.rb +1 -1
  34. data/lib/rr/integrations/minitest_4_active_support.rb +1 -1
  35. data/lib/rr/integrations/rspec/invocation_matcher.rb +0 -8
  36. data/lib/rr/integrations/rspec_2.rb +28 -3
  37. data/lib/rr/keyword_arguments.rb +15 -0
  38. data/lib/rr/method_dispatches/base_method_dispatch.rb +22 -5
  39. data/lib/rr/method_dispatches/method_dispatch.rb +21 -10
  40. data/lib/rr/method_dispatches/method_missing_dispatch.rb +14 -5
  41. data/lib/rr/recorded_call.rb +35 -0
  42. data/lib/rr/recorded_calls.rb +23 -9
  43. data/lib/rr/space.rb +15 -5
  44. data/lib/rr/spy_verification.rb +13 -5
  45. data/lib/rr/version.rb +1 -2
  46. data/lib/rr/wildcard_matchers.rb +10 -10
  47. data/lib/rr/without_autohook.rb +7 -14
  48. data/rr.gemspec +14 -5
  49. data/spec/custom_formatter_for_rspec.rb +18 -0
  50. data/spec/custom_formatter_for_rspec_2.rb +40 -0
  51. data/spec/defines_spec_suite_tasks.rb +57 -0
  52. data/spec/fixtures/rubygems_patch_for_187.rb +598 -0
  53. data/spec/global_helper.rb +38 -0
  54. data/spec/spec.opts +3 -0
  55. data/spec/spec_suite_configuration.rb +126 -0
  56. data/spec/spec_suite_runner.rb +47 -0
  57. data/spec/suites.yml +10 -0
  58. data/spec/suites/rspec_2/functional/any_instance_of_spec.rb +147 -0
  59. data/spec/suites/rspec_2/functional/dont_allow_spec.rb +17 -0
  60. data/spec/suites/rspec_2/functional/mock_bang_spec.rb +20 -0
  61. data/spec/suites/rspec_2/functional/mock_instance_of_spec.rb +14 -0
  62. data/spec/suites/rspec_2/functional/mock_instance_of_strong_spec.rb +15 -0
  63. data/spec/suites/rspec_2/functional/mock_proxy_instance_of_spec.rb +15 -0
  64. data/spec/suites/rspec_2/functional/mock_proxy_spec.rb +14 -0
  65. data/spec/suites/rspec_2/functional/mock_spec.rb +17 -0
  66. data/spec/suites/rspec_2/functional/mock_strong_spec.rb +14 -0
  67. data/spec/suites/rspec_2/functional/received_spec.rb +16 -0
  68. data/spec/suites/rspec_2/functional/spy_spec.rb +102 -0
  69. data/spec/suites/rspec_2/functional/stub_bang_spec.rb +20 -0
  70. data/spec/suites/rspec_2/functional/stub_instance_of_spec.rb +15 -0
  71. data/spec/suites/rspec_2/functional/stub_instance_of_strong_spec.rb +15 -0
  72. data/spec/suites/rspec_2/functional/stub_proxy_instance_of_spec.rb +16 -0
  73. data/spec/suites/rspec_2/functional/stub_proxy_spec.rb +45 -0
  74. data/spec/suites/rspec_2/functional/stub_spec.rb +71 -0
  75. data/spec/suites/rspec_2/functional/stub_strong_spec.rb +15 -0
  76. data/spec/suites/rspec_2/functional/wildcard_matchers_spec.rb +128 -0
  77. data/spec/suites/rspec_2/helper.rb +28 -0
  78. data/spec/suites/rspec_2/integration/minitest_4_spec.rb +109 -0
  79. data/spec/suites/rspec_2/integration/minitest_spec.rb +109 -0
  80. data/spec/suites/rspec_2/spec_helper.rb +3 -0
  81. data/spec/suites/rspec_2/support/matchers/wildcard_matcher_matchers.rb +32 -0
  82. data/spec/suites/rspec_2/support/mixins/double_definition_creator_helpers.rb +173 -0
  83. data/spec/suites/rspec_2/support/mixins/mock_definition_creator_helpers.rb +45 -0
  84. data/spec/suites/rspec_2/support/mixins/proxy_definition_creator_helpers.rb +33 -0
  85. data/spec/suites/rspec_2/support/mixins/stub_creator_helpers.rb +43 -0
  86. data/spec/suites/rspec_2/support/mixins/stub_definition_creator_helpers.rb +45 -0
  87. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_never_called_qualifier.rb +39 -0
  88. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_times_called_qualifier.rb +50 -0
  89. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_without_qualifiers.rb +131 -0
  90. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/dont_allow.rb +148 -0
  91. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of.rb +26 -0
  92. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of_strong.rb +28 -0
  93. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_proxy.rb +11 -0
  94. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_strong.rb +37 -0
  95. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mocking.rb +107 -0
  96. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of.rb +32 -0
  97. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of_strong.rb +39 -0
  98. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_proxy.rb +11 -0
  99. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_strong.rb +37 -0
  100. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stubbing.rb +57 -0
  101. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/array_flatten_bug.rb +35 -0
  102. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/block_form.rb +31 -0
  103. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/comparing_arity.rb +63 -0
  104. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/object_is_proxy.rb +43 -0
  105. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/sequential_invocations.rb +26 -0
  106. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/setting_implementation.rb +51 -0
  107. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/yields.rb +81 -0
  108. data/spec/suites/rspec_2/support/shared_examples/space.rb +13 -0
  109. data/spec/suites/rspec_2/support/shared_examples/times_called_expectation.rb +9 -0
  110. data/spec/suites/rspec_2/unit/core_ext/array_spec.rb +39 -0
  111. data/spec/suites/rspec_2/unit/core_ext/enumerable_spec.rb +53 -0
  112. data/spec/suites/rspec_2/unit/core_ext/hash_spec.rb +55 -0
  113. data/spec/suites/rspec_2/unit/core_ext/range_spec.rb +41 -0
  114. data/spec/suites/rspec_2/unit/core_ext/regexp_spec.rb +41 -0
  115. data/spec/suites/rspec_2/unit/deprecations_spec.rb +27 -0
  116. data/spec/suites/rspec_2/unit/double_definitions/child_double_definition_create_spec.rb +114 -0
  117. data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_blank_slate_spec.rb +93 -0
  118. data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_spec.rb +446 -0
  119. data/spec/suites/rspec_2/unit/dsl/double_creators_spec.rb +133 -0
  120. data/spec/suites/rspec_2/unit/dsl/space_spec.rb +99 -0
  121. data/spec/suites/rspec_2/unit/dsl/wildcard_matchers_spec.rb +67 -0
  122. data/spec/suites/rspec_2/unit/errors/rr_error_spec.rb +67 -0
  123. data/spec/suites/rspec_2/unit/expectations/any_argument_expectation_spec.rb +48 -0
  124. data/spec/suites/rspec_2/unit/expectations/anything_argument_equality_expectation_spec.rb +14 -0
  125. data/spec/suites/rspec_2/unit/expectations/argument_equality_expectation_spec.rb +135 -0
  126. data/spec/suites/rspec_2/unit/expectations/boolean_argument_equality_expectation_spec.rb +30 -0
  127. data/spec/suites/rspec_2/unit/expectations/hash_including_argument_equality_expectation_spec.rb +92 -0
  128. data/spec/suites/rspec_2/unit/expectations/satisfy_argument_equality_expectation_spec.rb +61 -0
  129. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/any_times_matcher_spec.rb +22 -0
  130. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/at_least_matcher_spec.rb +37 -0
  131. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/at_most_matcher_spec.rb +43 -0
  132. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/integer_matcher_spec.rb +58 -0
  133. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/proc_matcher_spec.rb +35 -0
  134. data/spec/suites/rspec_2/unit/expectations/times_called_expectation/range_matcher_spec.rb +39 -0
  135. data/spec/suites/rspec_2/unit/hash_with_object_id_key_spec.rb +88 -0
  136. data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_spec.rb +533 -0
  137. data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_verify_spec.rb +32 -0
  138. data/spec/suites/rspec_2/unit/integrations/rspec/invocation_matcher_spec.rb +297 -0
  139. data/spec/suites/rspec_2/unit/integrations/rspec_spec.rb +70 -0
  140. data/spec/suites/rspec_2/unit/rr_spec.rb +28 -0
  141. data/spec/suites/rspec_2/unit/space_spec.rb +598 -0
  142. data/spec/suites/rspec_2/unit/spy_verification_spec.rb +133 -0
  143. data/spec/suites/rspec_2/unit/times_called_matchers/any_times_matcher_spec.rb +46 -0
  144. data/spec/suites/rspec_2/unit/times_called_matchers/at_least_matcher_spec.rb +54 -0
  145. data/spec/suites/rspec_2/unit/times_called_matchers/at_most_matcher_spec.rb +69 -0
  146. data/spec/suites/rspec_2/unit/times_called_matchers/integer_matcher_spec.rb +69 -0
  147. data/spec/suites/rspec_2/unit/times_called_matchers/proc_matcher_spec.rb +54 -0
  148. data/spec/suites/rspec_2/unit/times_called_matchers/range_matcher_spec.rb +75 -0
  149. data/spec/suites/rspec_2/unit/times_called_matchers/times_called_matcher_spec.rb +117 -0
  150. data/spec/suites/rspec_2/unit/wildcard_matchers/anything_spec.rb +33 -0
  151. data/spec/suites/rspec_2/unit/wildcard_matchers/boolean_spec.rb +45 -0
  152. data/spec/suites/rspec_2/unit/wildcard_matchers/duck_type_spec.rb +64 -0
  153. data/spec/suites/rspec_2/unit/wildcard_matchers/hash_including_spec.rb +64 -0
  154. data/spec/suites/rspec_2/unit/wildcard_matchers/is_a_spec.rb +55 -0
  155. data/spec/suites/rspec_2/unit/wildcard_matchers/numeric_spec.rb +46 -0
  156. data/spec/suites/rspec_2/unit/wildcard_matchers/satisfy_spec.rb +57 -0
  157. data/spec/support/adapter.rb +22 -0
  158. data/spec/support/adapter_tests/base.rb +45 -0
  159. data/spec/support/adapter_tests/minitest.rb +7 -0
  160. data/spec/support/adapter_tests/rspec.rb +70 -0
  161. data/spec/support/adapter_tests/test_unit.rb +47 -0
  162. data/spec/support/command_runner.rb +105 -0
  163. data/spec/support/generator.rb +56 -0
  164. data/spec/support/integration_tests/base.rb +64 -0
  165. data/spec/support/integration_tests/rails.rb +60 -0
  166. data/spec/support/integration_tests/rails_minitest.rb +13 -0
  167. data/spec/support/integration_tests/rails_rspec.rb +13 -0
  168. data/spec/support/integration_tests/rails_test_unit.rb +13 -0
  169. data/spec/support/integration_tests/rails_test_unit_like.rb +13 -0
  170. data/spec/support/integration_tests/ruby.rb +7 -0
  171. data/spec/support/integration_tests/ruby_minitest.rb +13 -0
  172. data/spec/support/integration_tests/ruby_rspec.rb +13 -0
  173. data/spec/support/integration_tests/ruby_test_unit.rb +13 -0
  174. data/spec/support/matchers/be_a_subset_of_matcher.rb +24 -0
  175. data/spec/support/project/cucumber.rb +50 -0
  176. data/spec/support/project/generator.rb +348 -0
  177. data/spec/support/project/minitest.rb +39 -0
  178. data/spec/support/project/rails.rb +199 -0
  179. data/spec/support/project/rails_minitest.rb +17 -0
  180. data/spec/support/project/rails_rspec.rb +50 -0
  181. data/spec/support/project/rails_test_unit.rb +17 -0
  182. data/spec/support/project/rails_test_unit_like.rb +17 -0
  183. data/spec/support/project/rspec.rb +69 -0
  184. data/spec/support/project/ruby.rb +34 -0
  185. data/spec/support/project/ruby_minitest.rb +11 -0
  186. data/spec/support/project/ruby_rspec.rb +29 -0
  187. data/spec/support/project/ruby_test_unit.rb +11 -0
  188. data/spec/support/project/ruby_test_unit_like.rb +21 -0
  189. data/spec/support/project/test_unit.rb +29 -0
  190. data/spec/support/project/test_unit_like.rb +7 -0
  191. data/spec/support/project/tests_runner.rb +22 -0
  192. data/spec/support/test.sqlite3 +0 -0
  193. data/spec/support/test_case/generator.rb +53 -0
  194. data/spec/support/test_case/minitest.rb +13 -0
  195. data/spec/support/test_case/rspec.rb +19 -0
  196. data/spec/support/test_case/test_unit.rb +21 -0
  197. data/spec/support/test_file/generator.rb +120 -0
  198. data/spec/support/test_file/minitest.rb +19 -0
  199. data/spec/support/test_file/rails_minitest.rb +7 -0
  200. data/spec/support/test_file/rails_rspec.rb +12 -0
  201. data/spec/support/test_file/rails_test_unit.rb +25 -0
  202. data/spec/support/test_file/rspec.rb +33 -0
  203. data/spec/support/test_file/test_unit.rb +36 -0
  204. data/spec/support/test_helper/generator.rb +27 -0
  205. data/spec/support/test_helper/minitest.rb +7 -0
  206. data/spec/support/test_helper/rails.rb +31 -0
  207. data/spec/support/test_helper/rails_minitest.rb +7 -0
  208. data/spec/support/test_helper/rails_rspec.rb +25 -0
  209. data/spec/support/test_helper/rails_test_unit.rb +23 -0
  210. data/spec/support/test_helper/rspec.rb +7 -0
  211. data/spec/support/test_helper/ruby.rb +31 -0
  212. data/spec/support/test_helper/test_unit.rb +7 -0
  213. metadata +240 -19
  214. data/VERSION +0 -1
  215. data/lib/rr/adapters.rb +0 -44
  216. data/lib/rr/adapters/rr_methods.rb +0 -142
  217. data/lib/rr/integrations/rspec_1.rb +0 -46
  218. data/lib/rr/integrations/test_unit_1.rb +0 -63
  219. data/lib/rr/integrations/test_unit_2.rb +0 -15
  220. data/lib/rr/integrations/test_unit_200.rb +0 -27
  221. data/lib/rr/integrations/test_unit_200_active_support.rb +0 -25
  222. data/lib/rr/integrations/test_unit_2_active_support.rb +0 -38
  223. data/lib/rr/proc_from_block.rb +0 -11
@@ -0,0 +1,11 @@
1
+ require File.expand_path('../ruby', __FILE__)
2
+ require File.expand_path('../minitest', __FILE__)
3
+ require File.expand_path('../ruby_test_unit_like', __FILE__)
4
+
5
+ module Project
6
+ module RubyMinitest
7
+ include Ruby
8
+ include Minitest
9
+ include RubyTestUnitLike
10
+ end
11
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path('../ruby', __FILE__)
2
+ require File.expand_path('../rspec', __FILE__)
3
+
4
+ module Project
5
+ module RubyRSpec
6
+ include Ruby
7
+ include RSpec
8
+
9
+ def configure
10
+ super
11
+ if rspec_version == 1
12
+ add_file 'Rakefile', <<-EOT
13
+ require 'spec/rake/spectask'
14
+ Spec::Rake::SpecTask.new(:spec)
15
+ EOT
16
+ else
17
+ add_file 'Rakefile', <<-EOT
18
+ require 'rspec/core/rake_task'
19
+ RSpec::Core::RakeTask.new(:spec)
20
+ EOT
21
+ end
22
+ end
23
+
24
+ def generate_skeleton
25
+ super
26
+ FileUtils.mkdir_p File.join(directory, 'spec')
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,11 @@
1
+ require File.expand_path('../ruby_test_unit_like', __FILE__)
2
+ require File.expand_path('../test_unit', __FILE__)
3
+ require File.expand_path('../ruby', __FILE__)
4
+
5
+ module Project
6
+ module RubyTestUnit
7
+ include RubyTestUnitLike
8
+ include TestUnit
9
+ include Ruby
10
+ end
11
+ end
@@ -0,0 +1,21 @@
1
+ module Project
2
+ module RubyTestUnitLike
3
+ def setup
4
+ super
5
+
6
+ add_file 'Rakefile', <<-EOT
7
+ require 'rake/testtask'
8
+
9
+ Rake::TestTask.new do |t|
10
+ t.libs << 'test'
11
+ t.test_files = FileList['test/*_test.rb']
12
+ end
13
+ EOT
14
+ end
15
+
16
+ def generate_skeleton
17
+ super
18
+ FileUtils.mkdir_p File.join(directory, 'test')
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path('../test_unit_like', __FILE__)
2
+ require File.expand_path('../../test_file/test_unit', __FILE__)
3
+ require File.expand_path('../../test_helper/test_unit', __FILE__)
4
+
5
+ module Project
6
+ module TestUnit
7
+ include TestUnitLike
8
+
9
+ attr_accessor :test_unit_gem_version
10
+
11
+ def configure
12
+ super
13
+ if test_unit_gem_version
14
+ gem_dependencies << gem_dependency(
15
+ :name => 'test-unit',
16
+ :version => test_unit_gem_version
17
+ )
18
+ end
19
+
20
+ add_to_test_requires 'test/unit'#, :using_gem_original_require => test_unit_gem_version.nil?
21
+ end
22
+
23
+ def setup
24
+ super
25
+ test_file_generator.mixin TestFile::TestUnit
26
+ test_helper_generator.mixin TestHelper::TestUnit
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,7 @@
1
+ module Project
2
+ module TestUnitLike
3
+ def test_runner_command
4
+ ruby_command('rake test')
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,22 @@
1
+ module Project
2
+ class TestsRunner
3
+ def self.call(project)
4
+ runner = new(project)
5
+ yield runner if block_given?
6
+ runner.call
7
+ end
8
+
9
+ attr_reader :project
10
+ attr_accessor :command
11
+
12
+ def initialize(project)
13
+ @project = project
14
+ self.command = project.test_runner_command
15
+ end
16
+
17
+ def call
18
+ match = command.match(/^((?:\w+=[^ ]+ )*)(.+)$/)
19
+ project.run_command_within(match[2], :env => match[1])
20
+ end
21
+ end
22
+ end
File without changes
@@ -0,0 +1,53 @@
1
+ require File.expand_path('../../generator', __FILE__)
2
+
3
+ module TestCase
4
+ class Generator
5
+ include ::Generator
6
+
7
+ attr_reader :test_file, :string
8
+
9
+ def setup(test_file)
10
+ super
11
+ @test_file = test_file
12
+ @prelude = ""
13
+ @before_tests = ""
14
+ @body = ""
15
+ @number_of_tests = 0
16
+ end
17
+
18
+ def add_to_prelude(string)
19
+ @prelude << string + "\n"
20
+ end
21
+
22
+ def add_to_before_tests(content)
23
+ @before_tests << content + "\n"
24
+ end
25
+
26
+ def add_to_body(content)
27
+ @body << content + "\n"
28
+ end
29
+
30
+ def add_test(body)
31
+ @body << build_test(@number_of_tests, body) + "\n"
32
+ @number_of_tests += 1
33
+ end
34
+
35
+ def add_working_test
36
+ add_test <<-EOT
37
+ object = Object.new
38
+ mock(object).foo
39
+ object.foo
40
+ EOT
41
+ end
42
+
43
+ def call
44
+ lines = []
45
+ lines << @prelude
46
+ lines << start_of_test_case
47
+ lines << @before_tests
48
+ lines << @body
49
+ lines << "end"
50
+ @string = lines.map { |line| line + "\n" }.join
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,13 @@
1
+ require File.expand_path('../test_unit', __FILE__)
2
+
3
+ module TestCase
4
+ module Minitest
5
+ include TestUnit
6
+
7
+ def include_adapter_tests
8
+ add_to_before_tests <<-EOT
9
+ include AdapterTests::Minitest
10
+ EOT
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ module TestCase
2
+ module RSpec
3
+ def include_adapter_tests
4
+ add_to_before_tests <<-EOT
5
+ include AdapterTests::RSpec
6
+ EOT
7
+ end
8
+
9
+ private
10
+
11
+ def start_of_test_case
12
+ "describe 'A test case' do"
13
+ end
14
+
15
+ def build_test(index, body)
16
+ ["it 'is test ##{index}' do", body, "end"].map { |line| line + "\n" }.join
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ module TestCase
2
+ module TestUnit
3
+ attr_accessor :superclass
4
+
5
+ def include_adapter_tests
6
+ add_to_before_tests <<-EOT
7
+ include AdapterTests::TestUnit
8
+ EOT
9
+ end
10
+
11
+ private
12
+
13
+ def start_of_test_case
14
+ "class FooTest < #{superclass}"
15
+ end
16
+
17
+ def build_test(index, body)
18
+ ["def test_#{index}", body, "end"].map { |line| line + "\n" }.join
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,120 @@
1
+ require File.expand_path('../../generator', __FILE__)
2
+ require File.expand_path('../../test_case/generator', __FILE__)
3
+
4
+ module TestFile
5
+ class Generator
6
+ include ::Generator
7
+
8
+ attr_accessor \
9
+ :include_rr_before_test_framework,
10
+ :autorequire_gems,
11
+ :directory
12
+
13
+ attr_reader :project, :index, :prelude, :requires
14
+
15
+ def setup(project, index)
16
+ super
17
+ @project = project
18
+ self.include_rr_before_test_framework = project.include_rr_before_test_framework
19
+ self.autorequire_gems = project.autorequire_gems
20
+ @requires = []
21
+ @prelude = ""
22
+ @index = index
23
+ @body = ""
24
+ end
25
+
26
+ def add_to_requires(path)
27
+ @requires << path
28
+ end
29
+
30
+ def add_to_prelude(string)
31
+ @prelude << string + "\n"
32
+ end
33
+
34
+ def add_to_body(string)
35
+ @body << string + "\n"
36
+ end
37
+
38
+ def add_test_case(content=nil, &block)
39
+ if content.nil?
40
+ test_case = test_case_generator.call(self, &block)
41
+ content = test_case.string
42
+ end
43
+ @body << content + "\n"
44
+ end
45
+
46
+ def add_working_test_case
47
+ add_test_case do |test_case|
48
+ test_case.add_test <<-EOT
49
+ object = Object.new
50
+ mock(object).foo
51
+ object.foo
52
+ EOT
53
+ yield test_case if block_given?
54
+ end
55
+ end
56
+
57
+ def call
58
+ path = File.join(directory, "#{filename_prefix}.rb")
59
+ if RR.debug?
60
+ puts "Test file path: #{path}"
61
+ end
62
+ File.open(path, 'w') do |f|
63
+ if RR.debug?
64
+ puts "~ Test file contents ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
65
+ puts content
66
+ puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
67
+ end
68
+ f.write(content)
69
+ end
70
+ end
71
+
72
+ def test_case_generator
73
+ @test_case_generator ||= TestCase::Generator.factory
74
+ end
75
+
76
+ def add_test_case_with_adapter_tests
77
+ add_test_case do |test_case|
78
+ test_case.include_adapter_tests
79
+ yield test_case if block_given?
80
+ end
81
+ end
82
+
83
+ def add_working_test_case
84
+ add_test_case do |test_case|
85
+ test_case.add_working_test
86
+ yield test_case if block_given?
87
+ end
88
+ end
89
+
90
+ def add_working_test_case_with_adapter_tests
91
+ add_working_test_case do |test_case|
92
+ test_case.include_adapter_tests
93
+ yield test_case if block_given?
94
+ end
95
+ end
96
+
97
+ private
98
+
99
+ def all_requires
100
+ project.requires_with_rr(requires)
101
+ end
102
+
103
+ def content
104
+ prelude_lines = []
105
+
106
+ if @prelude
107
+ prelude_lines << @prelude
108
+ end
109
+
110
+ require_lines = project.require_lines(all_requires)
111
+ prelude_lines.concat(require_lines)
112
+
113
+ join_lines(prelude_lines) + @body
114
+ end
115
+
116
+ def join_lines(lines)
117
+ lines.map { |line| line + "\n" }.join
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,19 @@
1
+ require File.expand_path('../test_unit', __FILE__)
2
+
3
+ module TestFile
4
+ module Minitest
5
+ include TestUnit
6
+
7
+ def setup(project, index)
8
+ super
9
+ test_case_generator.configure do |test_case|
10
+ test_case.superclass =
11
+ if project.minitest_version == 5
12
+ 'Minitest::Test'
13
+ else
14
+ 'MiniTest::Unit::TestCase'
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ require File.expand_path('../rails_test_unit', __FILE__)
2
+
3
+ module TestFile
4
+ module RailsMinitest
5
+ include RailsTestUnit
6
+ end
7
+ end
@@ -0,0 +1,12 @@
1
+ require File.expand_path('../rspec', __FILE__)
2
+
3
+ module TestFile
4
+ module RailsRSpec
5
+ include RSpec
6
+
7
+ # Don't require anything; this will happen in the spec helper
8
+ def all_requires
9
+ []
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path('../test_unit', __FILE__)
2
+
3
+ module TestFile
4
+ module RailsTestUnit
5
+ include TestUnit
6
+
7
+ def setup(project, index)
8
+ super
9
+ self.directory =
10
+ if project.rails_version == 4
11
+ File.join(project.directory, 'test', 'models')
12
+ else
13
+ File.join(project.directory, 'test', 'unit')
14
+ end
15
+ test_case_generator.configure do |test_case|
16
+ test_case.superclass = 'ActiveSupport::TestCase'
17
+ end
18
+ end
19
+
20
+ # Don't require anything; this will happen in the test helper
21
+ def all_requires
22
+ []
23
+ end
24
+ end
25
+ end