ceedling 0.13.0 → 0.15.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 (308) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +18 -14
  4. data/README.md +6 -4
  5. data/assets/project_as_gem.yml +1 -1
  6. data/assets/rakefile_as_gem.rb +2 -0
  7. data/assets/rakefile_with_guts.rb +3 -1
  8. data/ceedling.gemspec +1 -0
  9. data/examples/blinky/rakefile.rb +2 -2
  10. data/examples/temp_sensor/rakefile.rb +1 -1
  11. data/examples/temp_sensor/src/TemperatureFilter.c +1 -2
  12. data/examples/temp_sensor/test/TestTemperatureCalculator.c +1 -1
  13. data/examples/temp_sensor/test/TestTemperatureFilter.c +12 -2
  14. data/lib/ceedling.rb +94 -22
  15. data/lib/{build_invoker_utils.rb → ceedling/build_invoker_utils.rb} +27 -27
  16. data/lib/{cacheinator.rb → ceedling/cacheinator.rb} +42 -42
  17. data/lib/{cacheinator_helper.rb → ceedling/cacheinator_helper.rb} +12 -12
  18. data/lib/{cmock_builder.rb → ceedling/cmock_builder.rb} +15 -15
  19. data/lib/{configurator.rb → ceedling/configurator.rb} +333 -329
  20. data/lib/{configurator_builder.rb → ceedling/configurator_builder.rb} +437 -437
  21. data/lib/{configurator_plugins.rb → ceedling/configurator_plugins.rb} +124 -124
  22. data/lib/{configurator_setup.rb → ceedling/configurator_setup.rb} +124 -124
  23. data/lib/{configurator_validator.rb → ceedling/configurator_validator.rb} +184 -184
  24. data/lib/{constants.rb → ceedling/constants.rb} +20 -17
  25. data/lib/{defaults.rb → ceedling/defaults.rb} +19 -18
  26. data/lib/{dependinator.rb → ceedling/dependinator.rb} +92 -92
  27. data/lib/{erb_wrapper.rb → ceedling/erb_wrapper.rb} +8 -8
  28. data/lib/{file_finder.rb → ceedling/file_finder.rb} +132 -132
  29. data/lib/{file_finder_helper.rb → ceedling/file_finder_helper.rb} +54 -54
  30. data/lib/{file_path_utils.rb → ceedling/file_path_utils.rb} +189 -189
  31. data/lib/{file_system_utils.rb → ceedling/file_system_utils.rb} +69 -69
  32. data/lib/{file_system_wrapper.rb → ceedling/file_system_wrapper.rb} +9 -9
  33. data/lib/{file_wrapper.rb → ceedling/file_wrapper.rb} +79 -79
  34. data/lib/{flaginator.rb → ceedling/flaginator.rb} +54 -54
  35. data/lib/{generator.rb → ceedling/generator.rb} +164 -164
  36. data/lib/{generator_helper.rb → ceedling/generator_helper.rb} +40 -40
  37. data/lib/{generator_test_results.rb → ceedling/generator_test_results.rb} +86 -89
  38. data/lib/{generator_test_results_sanity_checker.rb → ceedling/generator_test_results_sanity_checker.rb} +64 -62
  39. data/lib/{generator_test_runner.rb → ceedling/generator_test_runner.rb} +63 -63
  40. data/lib/{loginator.rb → ceedling/loginator.rb} +31 -31
  41. data/lib/{makefile.rb → ceedling/makefile.rb} +0 -0
  42. data/lib/{objects.yml → ceedling/objects.yml} +0 -0
  43. data/lib/{par_map.rb → ceedling/par_map.rb} +0 -0
  44. data/lib/{plugin.rb → ceedling/plugin.rb} +80 -80
  45. data/lib/{plugin_builder.rb → ceedling/plugin_builder.rb} +52 -52
  46. data/lib/{plugin_manager.rb → ceedling/plugin_manager.rb} +107 -107
  47. data/lib/{plugin_manager_helper.rb → ceedling/plugin_manager_helper.rb} +19 -19
  48. data/lib/{plugin_reportinator.rb → ceedling/plugin_reportinator.rb} +2 -2
  49. data/lib/{plugin_reportinator_helper.rb → ceedling/plugin_reportinator_helper.rb} +1 -1
  50. data/lib/{preprocessinator.rb → ceedling/preprocessinator.rb} +43 -43
  51. data/lib/{preprocessinator_extractor.rb → ceedling/preprocessinator_extractor.rb} +30 -30
  52. data/lib/{preprocessinator_file_handler.rb → ceedling/preprocessinator_file_handler.rb} +21 -21
  53. data/lib/{preprocessinator_helper.rb → ceedling/preprocessinator_helper.rb} +46 -46
  54. data/lib/ceedling/preprocessinator_includes_handler.rb +82 -0
  55. data/lib/{project_config_manager.rb → ceedling/project_config_manager.rb} +38 -38
  56. data/lib/{project_file_loader.rb → ceedling/project_file_loader.rb} +64 -64
  57. data/lib/{rake_utils.rb → ceedling/rake_utils.rb} +17 -17
  58. data/lib/{rake_wrapper.rb → ceedling/rake_wrapper.rb} +33 -33
  59. data/lib/{rakefile.rb → ceedling/rakefile.rb} +78 -74
  60. data/lib/{release_invoker.rb → ceedling/release_invoker.rb} +58 -58
  61. data/lib/{release_invoker_helper.rb → ceedling/release_invoker_helper.rb} +16 -16
  62. data/lib/{reportinator.rb → ceedling/reportinator.rb} +9 -9
  63. data/lib/{rules_cmock.rake → ceedling/rules_cmock.rake} +9 -9
  64. data/lib/{rules_preprocess.rake → ceedling/rules_preprocess.rake} +26 -26
  65. data/lib/{rules_release.rake → ceedling/rules_release.rake} +79 -79
  66. data/lib/{rules_release_deep_dependencies.rake → ceedling/rules_release_deep_dependencies.rake} +15 -15
  67. data/lib/{rules_tests.rake → ceedling/rules_tests.rake} +59 -59
  68. data/lib/{rules_tests_deep_dependencies.rake → ceedling/rules_tests_deep_dependencies.rake} +15 -15
  69. data/lib/{setupinator.rb → ceedling/setupinator.rb} +51 -51
  70. data/lib/{stream_wrapper.rb → ceedling/stream_wrapper.rb} +20 -20
  71. data/lib/{streaminator.rb → ceedling/streaminator.rb} +40 -41
  72. data/lib/{streaminator_helper.rb → ceedling/streaminator_helper.rb} +15 -15
  73. data/lib/{system_utils.rb → ceedling/system_utils.rb} +0 -0
  74. data/lib/{system_wrapper.rb → ceedling/system_wrapper.rb} +76 -76
  75. data/lib/{target_loader.rb → ceedling/target_loader.rb} +0 -0
  76. data/lib/{task_invoker.rb → ceedling/task_invoker.rb} +89 -89
  77. data/lib/{tasks_base.rake → ceedling/tasks_base.rake} +104 -104
  78. data/lib/{tasks_filesystem.rake → ceedling/tasks_filesystem.rake} +91 -91
  79. data/lib/{tasks_release.rake → ceedling/tasks_release.rake} +28 -28
  80. data/lib/{tasks_release_deep_dependencies.rake → ceedling/tasks_release_deep_dependencies.rake} +9 -9
  81. data/lib/{tasks_tests.rake → ceedling/tasks_tests.rake} +52 -52
  82. data/lib/{tasks_tests_deep_dependencies.rake → ceedling/tasks_tests_deep_dependencies.rake} +9 -9
  83. data/lib/{tasks_vendor.rake → ceedling/tasks_vendor.rake} +36 -36
  84. data/lib/{test_includes_extractor.rb → ceedling/test_includes_extractor.rb} +81 -81
  85. data/lib/{test_invoker.rb → ceedling/test_invoker.rb} +97 -97
  86. data/lib/{test_invoker_helper.rb → ceedling/test_invoker_helper.rb} +28 -28
  87. data/lib/{tool_executor.rb → ceedling/tool_executor.rb} +215 -212
  88. data/lib/{tool_executor_helper.rb → ceedling/tool_executor_helper.rb} +115 -115
  89. data/lib/{verbosinator.rb → ceedling/verbosinator.rb} +10 -10
  90. data/lib/ceedling/version.rb +1 -1
  91. data/lib/{yaml_wrapper.rb → ceedling/yaml_wrapper.rb} +17 -16
  92. data/license.txt +31 -0
  93. data/plugins/bullseye/lib/bullseye.rb +2 -2
  94. data/plugins/gcov/gcov.rb +2 -2
  95. data/plugins/module_generator/lib/module_generator.rb +4 -3
  96. data/plugins/stdout_ide_tests_report/lib/stdout_ide_tests_report.rb +8 -8
  97. data/plugins/stdout_pretty_tests_report/lib/stdout_pretty_tests_report.rb +3 -3
  98. data/plugins/teamcity_tests_report/config/teamcity_tests_report.yml +4 -0
  99. data/plugins/teamcity_tests_report/lib/teamcity_tests_report.rb +57 -0
  100. data/plugins/xml_tests_report/xml_tests_report.rb +4 -4
  101. data/release/version.info +1 -1
  102. data/spec/ceedling_spec.rb +154 -0
  103. data/spec/par_map_spec.rb +1 -1
  104. data/spec/preprocessinator_extractor_spec.rb +26 -27
  105. data/spec/preprocessinator_includes_handler_spec.rb +175 -0
  106. data/spec/spec_helper.rb +8 -27
  107. data/test_graveyard/integration/paths_test.rb +2 -2
  108. data/test_graveyard/unit/busted/configurator_builder_test.rb +2 -2
  109. data/test_graveyard/unit/busted/configurator_test.rb +1 -1
  110. data/test_graveyard/unit/busted/configurator_validator_test.rb +1 -1
  111. data/test_graveyard/unit/busted/dependinator_test.rb +1 -1
  112. data/test_graveyard/unit/busted/file_finder_helper_test.rb +1 -1
  113. data/test_graveyard/unit/busted/file_finder_test.rb +1 -1
  114. data/test_graveyard/unit/busted/file_path_utils_test.rb +1 -1
  115. data/test_graveyard/unit/busted/file_system_utils_test.rb +1 -1
  116. data/test_graveyard/unit/busted/generator_test.rb +1 -1
  117. data/test_graveyard/unit/busted/generator_test_results_test.rb +1 -1
  118. data/test_graveyard/unit/busted/generator_test_runner_test.rb +1 -1
  119. data/test_graveyard/unit/busted/preprocessinator_file_handler_test.rb +1 -1
  120. data/test_graveyard/unit/busted/preprocessinator_helper_test.rb +1 -1
  121. data/test_graveyard/unit/busted/preprocessinator_includes_handler_test.rb +1 -1
  122. data/test_graveyard/unit/busted/preprocessinator_test.rb +1 -1
  123. data/test_graveyard/unit/busted/project_file_loader_test.rb +1 -1
  124. data/test_graveyard/unit/busted/setupinator_test.rb +1 -1
  125. data/test_graveyard/unit/busted/streaminator_test.rb +2 -2
  126. data/test_graveyard/unit/busted/task_invoker_test.rb +1 -1
  127. data/test_graveyard/unit/busted/test_includes_extractor_test.rb +1 -1
  128. data/test_graveyard/unit/busted/test_invoker_helper_test.rb +1 -1
  129. data/test_graveyard/unit/busted/test_invoker_test.rb +1 -1
  130. data/test_graveyard/unit/busted/tool_executor_helper_test.rb +1 -1
  131. data/test_graveyard/unit/busted/tool_executor_test.rb +1 -1
  132. data/test_graveyard/unit/busted/verbosinator_test.rb +1 -1
  133. data/test_graveyard/unit/preprocessinator_extractor_test.rb +1 -1
  134. data/vendor/c_exception/Gemfile +4 -0
  135. data/vendor/c_exception/lib/CException.h +1 -1
  136. data/vendor/c_exception/test/TestException.c +25 -14
  137. data/vendor/c_exception/test/TestException_Runner.c +74 -57
  138. data/vendor/cmock/Gemfile +11 -0
  139. data/vendor/cmock/lib/cmock_generator.rb +13 -12
  140. data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +44 -0
  141. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +74 -0
  142. data/vendor/cmock/lib/cmock_generator_utils.rb +67 -42
  143. data/vendor/cmock/src/cmock.c +20 -30
  144. data/vendor/cmock/src/cmock.h +1 -0
  145. data/vendor/cmock/src/cmock_internals.h +43 -0
  146. data/vendor/cmock/test/c/TestCMockC.c +79 -36
  147. data/vendor/cmock/test/c/TestCMockC_Runner.c +2 -0
  148. data/vendor/cmock/test/spec/cmock_file_writer_spec.rb +21 -1
  149. data/vendor/cmock/test/spec/cmock_generator_plugin_array_spec.rb +52 -0
  150. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +2 -0
  151. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +235 -0
  152. data/vendor/cmock/test/test_helper.rb +10 -5
  153. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +38 -0
  154. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +116 -0
  155. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +134 -0
  156. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +58 -33
  157. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  158. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  159. data/vendor/cmock/vendor/c_exception/docs/license.txt +30 -0
  160. data/vendor/cmock/vendor/c_exception/docs/readme.txt +236 -0
  161. data/vendor/cmock/vendor/c_exception/lib/CException.c +39 -0
  162. data/vendor/cmock/vendor/c_exception/lib/CException.h +70 -0
  163. data/vendor/cmock/vendor/c_exception/makefile +24 -0
  164. data/vendor/cmock/vendor/c_exception/rakefile.rb +41 -0
  165. data/vendor/cmock/vendor/c_exception/release/build.info +2 -0
  166. data/vendor/cmock/vendor/c_exception/release/version.info +2 -0
  167. data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +27 -0
  168. data/vendor/cmock/vendor/c_exception/test/TestException.c +291 -0
  169. data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +62 -0
  170. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +94 -0
  171. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -0
  172. data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -0
  173. data/vendor/cmock/vendor/unity/auto/generate_module.rb +202 -0
  174. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +313 -0
  175. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +23 -0
  176. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +139 -0
  177. data/vendor/cmock/vendor/unity/docs/Unity Summary.odt +0 -0
  178. data/vendor/cmock/vendor/unity/docs/Unity Summary.pdf +0 -0
  179. data/vendor/cmock/vendor/unity/docs/Unity Summary.txt +217 -0
  180. data/vendor/cmock/vendor/unity/docs/license.txt +31 -0
  181. data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.c +10 -0
  182. data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.h +12 -0
  183. data/vendor/cmock/vendor/unity/examples/makefile +40 -0
  184. data/vendor/cmock/vendor/unity/examples/rakefile.rb +32 -0
  185. data/vendor/cmock/vendor/unity/examples/rakefile_helper.rb +256 -0
  186. data/vendor/cmock/vendor/unity/examples/readme.txt +18 -0
  187. data/vendor/cmock/vendor/unity/examples/src/ProductionCode.c +24 -0
  188. data/vendor/cmock/vendor/unity/examples/src/ProductionCode.h +3 -0
  189. data/vendor/cmock/vendor/unity/examples/src/ProductionCode2.c +9 -0
  190. data/vendor/cmock/vendor/unity/examples/src/ProductionCode2.h +2 -0
  191. data/vendor/cmock/vendor/unity/examples/test/TestProductionCode.c +62 -0
  192. data/vendor/cmock/vendor/unity/examples/test/TestProductionCode2.c +31 -0
  193. data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  194. data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +50 -0
  195. data/vendor/{unity → cmock/vendor/unity}/extras/fixture/build/MakefileWorker.mk +0 -0
  196. data/vendor/{unity → cmock/vendor/unity}/extras/fixture/build/filterGcov.sh +0 -0
  197. data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +37 -0
  198. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
  199. data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +9 -0
  200. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +381 -0
  201. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +81 -0
  202. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  203. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  204. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  205. data/vendor/cmock/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  206. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +321 -0
  207. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +40 -0
  208. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  209. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  210. data/vendor/cmock/vendor/unity/makefile +35 -0
  211. data/vendor/cmock/vendor/unity/rakefile.rb +48 -0
  212. data/vendor/cmock/vendor/unity/rakefile_helper.rb +240 -0
  213. data/vendor/cmock/vendor/unity/release/build.info +2 -0
  214. data/vendor/cmock/vendor/unity/release/version.info +2 -0
  215. data/vendor/cmock/vendor/unity/src/unity.c +979 -0
  216. data/vendor/cmock/vendor/unity/src/unity.h +232 -0
  217. data/vendor/cmock/vendor/unity/src/unity_internals.h +424 -0
  218. data/vendor/cmock/vendor/unity/targets/gcc.yml +43 -0
  219. data/vendor/cmock/vendor/unity/targets/gcc_64.yml +44 -0
  220. data/vendor/cmock/vendor/unity/targets/hitech_picc18.yml +101 -0
  221. data/vendor/cmock/vendor/unity/targets/iar_arm_v4.yml +89 -0
  222. data/vendor/cmock/vendor/unity/targets/iar_arm_v5.yml +79 -0
  223. data/vendor/cmock/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  224. data/vendor/cmock/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  225. data/vendor/cmock/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  226. data/vendor/cmock/vendor/unity/targets/iar_msp430.yml +94 -0
  227. data/vendor/cmock/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  228. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +54 -0
  229. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +50 -0
  230. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +76 -0
  231. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +72 -0
  232. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +85 -0
  233. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +85 -0
  234. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +73 -0
  235. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +85 -0
  236. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +85 -0
  237. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +86 -0
  238. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +60 -0
  239. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +63 -0
  240. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +51 -0
  241. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +60 -0
  242. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +63 -0
  243. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +64 -0
  244. data/vendor/cmock/vendor/unity/test/test_generate_test_runner.rb +94 -0
  245. data/vendor/cmock/vendor/unity/test/testdata/mocksample.c +51 -0
  246. data/vendor/cmock/vendor/unity/test/testdata/sample.yml +9 -0
  247. data/vendor/cmock/vendor/unity/test/testdata/testsample.c +51 -0
  248. data/vendor/cmock/vendor/unity/test/testparameterized.c +101 -0
  249. data/vendor/cmock/vendor/unity/test/testunity.c +2024 -0
  250. data/vendor/unity/Gemfile +4 -0
  251. data/vendor/unity/auto/generate_test_runner.rb +6 -3
  252. data/vendor/unity/examples/makefile +2 -2
  253. data/vendor/unity/examples/rakefile.rb +13 -2
  254. data/vendor/unity/extras/fixture/rakefile.rb +1 -1
  255. data/vendor/unity/extras/fixture/rakefile_helper.rb +4 -3
  256. data/vendor/unity/extras/fixture/src/unity_fixture.c +15 -12
  257. data/vendor/unity/extras/fixture/src/unity_fixture.h +5 -5
  258. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +1 -1
  259. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +6 -3
  260. data/vendor/unity/makefile +2 -2
  261. data/vendor/unity/src/unity.c +183 -16
  262. data/vendor/unity/src/unity.h +18 -5
  263. data/vendor/unity/src/unity_internals.h +57 -23
  264. data/vendor/unity/targets/gcc_64.yml +45 -0
  265. data/vendor/unity/test/testunity.c +436 -28
  266. metadata +200 -137
  267. data/ceedling-0.13.0.rc4.gem +0 -0
  268. data/ceedling.sublime-project +0 -8
  269. data/ceedling.sublime-workspace +0 -365
  270. data/lib/preprocessinator_includes_handler.rb +0 -55
  271. data/tags +0 -977
  272. data/vendor/cmock/vendor/hardmock/CHANGES +0 -78
  273. data/vendor/cmock/vendor/hardmock/LICENSE +0 -7
  274. data/vendor/cmock/vendor/hardmock/README +0 -70
  275. data/vendor/cmock/vendor/hardmock/Rakefile +0 -8
  276. data/vendor/cmock/vendor/hardmock/config/environment.rb +0 -12
  277. data/vendor/cmock/vendor/hardmock/lib/assert_error.rb +0 -23
  278. data/vendor/cmock/vendor/hardmock/lib/extend_test_unit.rb +0 -14
  279. data/vendor/cmock/vendor/hardmock/lib/hardmock.rb +0 -86
  280. data/vendor/cmock/vendor/hardmock/lib/hardmock/errors.rb +0 -22
  281. data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation.rb +0 -229
  282. data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation_builder.rb +0 -9
  283. data/vendor/cmock/vendor/hardmock/lib/hardmock/expector.rb +0 -26
  284. data/vendor/cmock/vendor/hardmock/lib/hardmock/method_cleanout.rb +0 -33
  285. data/vendor/cmock/vendor/hardmock/lib/hardmock/mock.rb +0 -180
  286. data/vendor/cmock/vendor/hardmock/lib/hardmock/mock_control.rb +0 -53
  287. data/vendor/cmock/vendor/hardmock/lib/hardmock/stubbing.rb +0 -210
  288. data/vendor/cmock/vendor/hardmock/lib/hardmock/trapper.rb +0 -31
  289. data/vendor/cmock/vendor/hardmock/lib/hardmock/utils.rb +0 -9
  290. data/vendor/cmock/vendor/hardmock/lib/test_unit_before_after.rb +0 -169
  291. data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc.rake +0 -19
  292. data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc_options.rb +0 -4
  293. data/vendor/cmock/vendor/hardmock/rake_tasks/test.rake +0 -22
  294. data/vendor/cmock/vendor/hardmock/test/functional/assert_error_test.rb +0 -52
  295. data/vendor/cmock/vendor/hardmock/test/functional/auto_verify_test.rb +0 -178
  296. data/vendor/cmock/vendor/hardmock/test/functional/direct_mock_usage_test.rb +0 -396
  297. data/vendor/cmock/vendor/hardmock/test/functional/hardmock_test.rb +0 -434
  298. data/vendor/cmock/vendor/hardmock/test/functional/stubbing_test.rb +0 -479
  299. data/vendor/cmock/vendor/hardmock/test/test_helper.rb +0 -43
  300. data/vendor/cmock/vendor/hardmock/test/unit/expectation_builder_test.rb +0 -19
  301. data/vendor/cmock/vendor/hardmock/test/unit/expectation_test.rb +0 -372
  302. data/vendor/cmock/vendor/hardmock/test/unit/expector_test.rb +0 -57
  303. data/vendor/cmock/vendor/hardmock/test/unit/method_cleanout_test.rb +0 -36
  304. data/vendor/cmock/vendor/hardmock/test/unit/mock_control_test.rb +0 -175
  305. data/vendor/cmock/vendor/hardmock/test/unit/mock_test.rb +0 -279
  306. data/vendor/cmock/vendor/hardmock/test/unit/test_unit_before_after_test.rb +0 -452
  307. data/vendor/cmock/vendor/hardmock/test/unit/trapper_test.rb +0 -62
  308. data/vendor/cmock/vendor/hardmock/test/unit/verify_error_test.rb +0 -40
@@ -1,396 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
- require 'hardmock'
3
-
4
- class DirectMockUsageTest < Test::Unit::TestCase
5
-
6
- def setup
7
- @bird = Mock.new('bird')
8
- end
9
-
10
- def teardown
11
- end
12
-
13
- #
14
- # TESTS
15
- #
16
-
17
- it "raises VerifyError if expected method not called" do
18
- @bird.expects.flap_flap
19
-
20
- err = assert_raise VerifyError do
21
- @bird._verify
22
- end
23
- assert_match(/unmet expectations/i, err.message)
24
- end
25
-
26
- should "not raise when expected calls are made in order" do
27
- @bird.expects.flap_flap
28
- @bird.expects.bang
29
- @bird.expects.plop
30
-
31
- @bird.flap_flap
32
- @bird.bang
33
- @bird.plop
34
-
35
- @bird._verify
36
- end
37
-
38
- it "raises ExpectationError when unexpected method are called" do
39
- @bird.expects.flap_flap
40
-
41
- err = assert_raise ExpectationError do
42
- @bird.shoot
43
- end
44
- assert_match(/wrong method/i, err.message)
45
- end
46
-
47
- it "raises ExpectationError on bad arguments" do
48
- @bird.expects.flap_flap(:swoosh)
49
-
50
- err = assert_raise ExpectationError do
51
- @bird.flap_flap(:rip)
52
- end
53
- assert_match(/wrong arguments/i, err.message)
54
- end
55
-
56
- it "raises VerifyError when not all expected methods are called" do
57
- @bird.expects.flap_flap
58
- @bird.expects.bang
59
- @bird.expects.plop
60
-
61
- @bird.flap_flap
62
-
63
- err = assert_raise VerifyError do
64
- @bird._verify
65
- end
66
- assert_match(/unmet expectations/i, err.message)
67
- end
68
-
69
- it "raises ExpectationError when calls are made out of order" do
70
- @bird.expects.flap_flap
71
- @bird.expects.bang
72
- @bird.expects.plop
73
-
74
- @bird.flap_flap
75
- err = assert_raise ExpectationError do
76
- @bird.plop
77
- end
78
- assert_match(/wrong method/i, err.message)
79
- end
80
-
81
- it "returns the configured value" do
82
- @bird.expects.plop.returns(':P')
83
- assert_equal ':P', @bird.plop
84
- @bird._verify
85
-
86
- @bird.expects.plop.returns(':x')
87
- assert_equal ':x', @bird.plop
88
- @bird._verify
89
- end
90
-
91
- it "returns nil when no return is specified" do
92
- @bird.expects.plop
93
- assert_nil @bird.plop
94
- @bird._verify
95
- end
96
-
97
- it "raises the configured exception" do
98
- err = RuntimeError.new('shaq')
99
- @bird.expects.plop.raises(err)
100
- actual_err = assert_raise RuntimeError do
101
- @bird.plop
102
- end
103
- assert_same err, actual_err, 'should be the same error'
104
- @bird._verify
105
- end
106
-
107
- it "raises a RuntimeError when told to 'raise' a string" do
108
- @bird.expects.plop.raises('shaq')
109
- err = assert_raise RuntimeError do
110
- @bird.plop
111
- end
112
- assert_match(/shaq/i, err.message)
113
- @bird._verify
114
- end
115
-
116
- it "raises a default RuntimeError" do
117
- @bird.expects.plop.raises
118
- err = assert_raise RuntimeError do
119
- @bird.plop
120
- end
121
- assert_match(/error/i, err.message)
122
- @bird._verify
123
- end
124
-
125
- it "is quiet when correct arguments given" do
126
- thing = Object.new
127
- @bird.expects.plop(:big,'one',thing)
128
- @bird.plop(:big,'one',thing)
129
- @bird._verify
130
- end
131
-
132
- it "raises ExpectationError when wrong number of arguments specified" do
133
- thing = Object.new
134
- @bird.expects.plop(:big,'one',thing)
135
- err = assert_raise ExpectationError do
136
- # more
137
- @bird.plop(:big,'one',thing,:other)
138
- end
139
- assert_match(/wrong arguments/i, err.message)
140
- @bird._verify
141
-
142
- @bird.expects.plop(:big,'one',thing)
143
- err = assert_raise ExpectationError do
144
- # less
145
- @bird.plop(:big,'one')
146
- end
147
- assert_match(/wrong arguments/i, err.message)
148
- @bird._verify
149
-
150
- @bird.expects.plop
151
- err = assert_raise ExpectationError do
152
- # less
153
- @bird.plop(:big)
154
- end
155
- assert_match(/wrong arguments/i, err.message)
156
- @bird._verify
157
- end
158
-
159
- it "raises ExpectationError when arguments don't match" do
160
- thing = Object.new
161
- @bird.expects.plop(:big,'one',thing)
162
- err = assert_raise ExpectationError do
163
- @bird.plop(:big,'two',thing,:other)
164
- end
165
- assert_match(/wrong arguments/i, err.message)
166
- @bird._verify
167
- end
168
-
169
- it "can use a block for custom reactions" do
170
- mitt = nil
171
- @bird.expects.plop { mitt = :ball }
172
- assert_nil mitt
173
- @bird.plop
174
- assert_equal :ball, mitt, 'didnt catch the ball'
175
- @bird._verify
176
-
177
- @bird.expects.plop { raise 'ball' }
178
- err = assert_raise RuntimeError do
179
- @bird.plop
180
- end
181
- assert_match(/ball/i, err.message)
182
- @bird._verify
183
- end
184
-
185
- it "passes mock-call arguments to the expectation block" do
186
- ball = nil
187
- mitt = nil
188
- @bird.expects.plop {|arg1,arg2|
189
- ball = arg1
190
- mitt = arg2
191
- }
192
- assert_nil ball
193
- assert_nil mitt
194
- @bird.plop(:ball,:mitt)
195
- assert_equal :ball, ball
196
- assert_equal :mitt, mitt
197
- @bird._verify
198
- end
199
-
200
- it "validates arguments if specified in addition to a block" do
201
- ball = nil
202
- mitt = nil
203
- @bird.expects.plop(:ball,:mitt) {|arg1,arg2|
204
- ball = arg1
205
- mitt = arg2
206
- }
207
- assert_nil ball
208
- assert_nil mitt
209
- @bird.plop(:ball,:mitt)
210
- assert_equal :ball, ball
211
- assert_equal :mitt, mitt
212
- @bird._verify
213
-
214
- ball = nil
215
- mitt = nil
216
- @bird.expects.plop(:bad,:stupid) {|arg1,arg2|
217
- ball = arg1
218
- mitt = arg2
219
- }
220
- assert_nil ball
221
- assert_nil mitt
222
- err = assert_raise ExpectationError do
223
- @bird.plop(:ball,:mitt)
224
- end
225
- assert_match(/wrong arguments/i, err.message)
226
- assert_nil ball
227
- assert_nil mitt
228
- @bird._verify
229
-
230
- ball = nil
231
- mitt = nil
232
- @bird.expects.plop(:ball,:mitt) {|arg1,arg2|
233
- ball = arg1
234
- mitt = arg2
235
- }
236
- assert_nil ball
237
- assert_nil mitt
238
- err = assert_raise ExpectationError do
239
- @bird.plop(:ball)
240
- end
241
- assert_match(/wrong arguments/i, err.message)
242
- assert_nil ball
243
- assert_nil mitt
244
- @bird._verify
245
- end
246
-
247
- it "passes runtime blocks to the expectation block as the final argument" do
248
- runtime_block_called = false
249
- got_arg = nil
250
-
251
- # Eg, bird expects someone to subscribe to :tweet using the 'when' method
252
- @bird.expects.when(:tweet) { |arg1, block|
253
- got_arg = arg1
254
- block.call
255
- }
256
-
257
- @bird.when(:tweet) do
258
- runtime_block_called = true
259
- end
260
-
261
- assert_equal :tweet, got_arg, "Wrong arg"
262
- assert runtime_block_called, "The runtime block should have been invoked by the user block"
263
-
264
- @bird.expects.when(:warnk) { |e,blk| }
265
-
266
- err = assert_raise ExpectationError do
267
- @bird.when(:honk) { }
268
- end
269
- assert_match(/wrong arguments/i, err.message)
270
-
271
- @bird._verify
272
- end
273
-
274
- it "passes the runtime block to the expectation block as sole argument if no other args come into play" do
275
- runtime_block_called = false
276
- @bird.expects.subscribe { |block| block.call }
277
- @bird.subscribe do
278
- runtime_block_called = true
279
- end
280
- assert runtime_block_called, "The runtime block should have been invoked by the user block"
281
- end
282
-
283
- it "provides nil as final argument if expectation block seems to want a block" do
284
- invoked = false
285
- @bird.expects.kablam(:scatter) { |shot,block|
286
- assert_equal :scatter, shot, "Wrong shot"
287
- assert_nil block, "The expectation block should get a nil block when user neglects to pass one"
288
- invoked = true
289
- }
290
- @bird.kablam :scatter
291
- assert invoked, "Expectation block not invoked"
292
-
293
- @bird._verify
294
- end
295
-
296
- it "can set explicit return after an expectation block" do
297
- got = nil
298
- @bird.expects.kablam(:scatter) { |shot|
299
- got = shot
300
- }.returns(:death)
301
-
302
- val = @bird.kablam :scatter
303
- assert_equal :death, val, "Wrong return value"
304
- assert_equal :scatter, got, "Wrong argument"
305
- @bird._verify
306
- end
307
-
308
- it "can raise after an expectation block" do
309
- got = nil
310
- @bird.expects.kablam(:scatter) do |shot|
311
- got = shot
312
- end.raises "hell"
313
-
314
- err = assert_raise RuntimeError do
315
- @bird.kablam :scatter
316
- end
317
- assert_match(/hell/i, err.message)
318
-
319
- @bird._verify
320
- end
321
-
322
- it "stores the semantic value of the expectation block after it executes" do
323
- expectation = @bird.expects.kablam(:slug) { |shot|
324
- "The shot was #{shot}"
325
- }
326
-
327
- assert_not_nil expectation, "Expectation nil"
328
- assert_nil expectation.block_value, "Block value should start out nil"
329
-
330
- ret_val = @bird.kablam :slug
331
-
332
- assert_equal "The shot was slug", expectation.block_value
333
- assert_equal "The shot was slug", ret_val, "Block value should also be used for return"
334
-
335
- @bird._verify
336
- end
337
-
338
-
339
- it "uses the value of the expectation block as the default return value" do
340
- @bird.expects.kablam(:scatter) { |shot|
341
- "The shot was #{shot}"
342
- }
343
- val = @bird.kablam :scatter
344
- assert_equal "The shot was scatter", val, "Wrong return value"
345
- @bird._verify
346
- end
347
-
348
- it "returns the Expectation even if 'returns' is used" do
349
- expectation = @bird.expects.kablam(:slug) { |shot|
350
- "The shot was #{shot}"
351
- }.returns :hosed
352
-
353
- assert_not_nil expectation, "Expectation nil"
354
- assert_nil expectation.block_value, "Block value should start out nil"
355
-
356
- ret_val = @bird.kablam :slug
357
-
358
- assert_equal "The shot was slug", expectation.block_value
359
- assert_equal :hosed, ret_val, "Block value should also be used for return"
360
-
361
- @bird._verify
362
- end
363
-
364
- it "returns the Expectation even if 'raises' is used" do
365
- expectation = @bird.expects.kablam(:slug) { |shot|
366
- "The shot was #{shot}"
367
- }.raises "aiee!"
368
-
369
- assert_not_nil expectation, "Expectation nil"
370
- assert_nil expectation.block_value, "Block value should start out nil"
371
-
372
- err = assert_raise RuntimeError do
373
- @bird.kablam :slug
374
- end
375
- assert_match(/aiee!/i, err.message)
376
- assert_equal "The shot was slug", expectation.block_value
377
- @bird._verify
378
- end
379
-
380
-
381
- it "supports assignment-style methods" do
382
- @bird.expects.size = "large"
383
- @bird.size = "large"
384
- @bird._verify
385
- end
386
-
387
- it "supports assignments and raising (using explicit-method syntax)" do
388
- @bird.expects('size=','large').raises "boom"
389
-
390
- err = assert_raise RuntimeError do
391
- @bird.size = "large"
392
- end
393
- assert_match(/boom/i, err.message)
394
- end
395
-
396
- end
@@ -1,434 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
- require 'hardmock'
3
- require 'assert_error'
4
-
5
- class HardmockTest < Test::Unit::TestCase
6
-
7
- #
8
- # TESTS
9
- #
10
-
11
- it "conveniently creates mocks using create_mock and create_mocks" do
12
-
13
- h = create_mock :donkey
14
- assert_equal [ :donkey ], h.keys
15
-
16
- assert_mock_exists :donkey
17
- assert_same @donkey, h[:donkey]
18
-
19
- assert_equal [ :donkey ], @all_mocks.keys, "Wrong keyset for @all_mocks"
20
-
21
- h2 = create_mocks :cat, 'dog' # symbol/string indifference at this level
22
- assert_equal [:cat,:dog].to_set, h2.keys.to_set, "Wrong keyset for second hash"
23
- assert_equal [:cat,:dog,:donkey].to_set, @all_mocks.keys.to_set, "@all_mocks wrong"
24
-
25
- assert_mock_exists :cat
26
- assert_same @cat, h2[:cat]
27
- assert_mock_exists :dog
28
- assert_same @dog, h2[:dog]
29
-
30
- assert_mock_exists :donkey
31
- end
32
-
33
- it "provides literal 'expects' syntax" do
34
- assert_nil @order, "Should be no @order yet"
35
- create_mock :order
36
- assert_not_nil @order, "@order should be built"
37
-
38
- # Setup an expectation
39
- @order.expects.update_stuff :key1 => 'val1', :key2 => 'val2'
40
-
41
- # Use the mock
42
- @order.update_stuff :key1 => 'val1', :key2 => 'val2'
43
-
44
- # Verify
45
- verify_mocks
46
-
47
- # See that it's ok to do it again
48
- verify_mocks
49
- end
50
-
51
- it "supports 'with' for specifying argument expectations" do
52
- create_mocks :car
53
- @car.expects(:fill).with('gas','booze')
54
- @car.fill('gas', 'booze')
55
- verify_mocks
56
- end
57
-
58
- it "supports several mocks at once" do
59
- create_mocks :order_builder, :order, :customer
60
-
61
- @order_builder.expects.create_new_order.returns @order
62
- @customer.expects.account_number.returns(1234)
63
- @order.expects.account_no = 1234
64
- @order.expects.save!
65
-
66
- # Run "the code"
67
- o = @order_builder.create_new_order
68
- o.account_no = @customer.account_number
69
- o.save!
70
-
71
- verify_mocks
72
- end
73
-
74
- it "enforces inter-mock call ordering" do
75
- create_mocks :order_builder, :order, :customer
76
-
77
- @order_builder.expects.create_new_order.returns @order
78
- @customer.expects.account_number.returns(1234)
79
- @order.expects.account_no = 1234
80
- @order.expects.save!
81
-
82
- # Run "the code"
83
- o = @order_builder.create_new_order
84
- err = assert_raise ExpectationError do
85
- o.save!
86
- end
87
- assert_match(/wrong object/i, err.message)
88
- assert_match(/order.save!/i, err.message)
89
- assert_match(/customer.account_number/i, err.message)
90
-
91
- assert_error VerifyError, /unmet expectations/i do
92
- verify_mocks
93
- end
94
- end
95
-
96
- class UserPresenter
97
- def initialize(args)
98
- view = args[:view]
99
- model = args[:model]
100
- model.when :data_changes do
101
- view.user_name = model.user_name
102
- end
103
- view.when :user_edited do
104
- model.user_name = view.user_name
105
- end
106
- end
107
- end
108
-
109
- it "makes MVP testing simple" do
110
- mox = create_mocks :model, :view
111
-
112
- data_change = @model.expects.when(:data_changes) { |evt,block| block }
113
- user_edit = @view.expects.when(:user_edited) { |evt,block| block }
114
-
115
- UserPresenter.new mox
116
-
117
- # Expect user name transfer from model to view
118
- @model.expects.user_name.returns 'Da Croz'
119
- @view.expects.user_name = 'Da Croz'
120
- # Trigger data change event in model
121
- data_change.block_value.call
122
-
123
- # Expect user name transfer from view to model
124
- @view.expects.user_name.returns '6:8'
125
- @model.expects.user_name = '6:8'
126
- # Trigger edit event in view
127
- user_edit.block_value.call
128
-
129
- verify_mocks
130
- end
131
-
132
- it "continues to function after verify, if verification error is controlled" do
133
- mox = create_mocks :model, :view
134
- data_change = @model.expects.when(:data_changes) { |evt,block| block }
135
- user_edit = @view.expects.when(:user_edited) { |evt,block| block }
136
- UserPresenter.new mox
137
-
138
- # Expect user name transfer from model to view
139
- @model.expects.user_name.returns 'Da Croz'
140
- @view.expects.user_name = 'Da Croz'
141
-
142
- assert_error ExpectationError, /model.monkey_wrench/i do
143
- @model.monkey_wrench
144
- end
145
-
146
- # This should raise because of unmet expectations
147
- assert_error VerifyError, /unmet expectations/i, /user_name/i do
148
- verify_mocks
149
- end
150
-
151
- # See that the non-forced verification remains quiet
152
- assert_nothing_raised VerifyError do
153
- verify_mocks(false)
154
- end
155
-
156
- @model.expects.never_gonna_happen
157
-
158
- assert_error VerifyError, /unmet expectations/i, /never_gonna_happen/i do
159
- verify_mocks
160
- end
161
- end
162
-
163
- class UserPresenterBroken
164
- def initialize(args)
165
- view = args[:view]
166
- model = args[:model]
167
- model.when :data_changes do
168
- view.user_name = model.user_name
169
- end
170
- # no view stuff, will break appropriately
171
- end
172
- end
173
-
174
- it "flunks for typical Presenter constructor wiring failure" do
175
- mox = create_mocks :model, :view
176
-
177
- data_change = @model.expects.when(:data_changes) { |evt,block| block }
178
- user_edit = @view.expects.when(:user_edited) { |evt,block| block }
179
-
180
- UserPresenterBroken.new mox
181
-
182
- err = assert_raise VerifyError do
183
- verify_mocks
184
- end
185
- assert_match(/unmet expectations/i, err.message)
186
- assert_match(/view.when\(:user_edited\)/i, err.message)
187
-
188
- end
189
-
190
- it "provides convenient event-subscription trap syntax for MVP testing" do
191
- mox = create_mocks :model, :view
192
-
193
- data_change = @model.trap.when(:data_changes)
194
- user_edit = @view.trap.when(:user_edited)
195
-
196
- UserPresenter.new mox
197
-
198
- # Expect user name transfer from model to view
199
- @model.expects.user_name.returns 'Da Croz'
200
- @view.expects.user_name = 'Da Croz'
201
- # Trigger data change event in model
202
- data_change.trigger
203
-
204
- # Expect user name transfer from view to model
205
- @view.expects.user_name.returns '6:8'
206
- @model.expects.user_name = '6:8'
207
- # Trigger edit event in view
208
- user_edit.trigger
209
-
210
- verify_mocks
211
- end
212
-
213
- it "raises if you try to pass an expectation block to 'trap'" do
214
- create_mock :model
215
- assert_error Hardmock::ExpectationError, /blocks/i, /trap/i do
216
- @model.trap.when(:some_event) do raise "huh?" end
217
- end
218
- end
219
-
220
- class Grinder
221
- def initialize(objects)
222
- @chute = objects[:chute]
223
- @bucket = objects[:bucket]
224
- @blade = objects[:blade]
225
- end
226
-
227
- def grind(slot)
228
- @chute.each_bean(slot) do |bean|
229
- @bucket << @blade.chop(bean)
230
- end
231
- end
232
- end
233
-
234
- it "lets you write clear iteration-oriented expectations" do
235
- grinder = Grinder.new create_mocks(:blade, :chute, :bucket)
236
-
237
- # Style 1: assertions on method args is done explicitly in block
238
- @chute.expects.each_bean { |slot,block|
239
- assert_equal :side_slot, slot, "Wrong slot"
240
- block.call :bean1
241
- block.call :bean2
242
- }
243
-
244
- @blade.expects.chop(:bean1).returns(:grounds1)
245
- @bucket.expects('<<', :grounds1)
246
-
247
- @blade.expects.chop(:bean2).returns(:grounds2)
248
- @bucket.expects('<<', :grounds2)
249
-
250
- # Run "the code"
251
- grinder.grind(:side_slot)
252
-
253
- verify_mocks
254
-
255
- # Style 2: assertions on method arguments done implicitly in the expectation code
256
- @chute.expects.each_bean(:main_slot) { |slot,block|
257
- block.call :bean3
258
- }
259
- @blade.expects.chop(:bean3).returns(:grounds3)
260
- @bucket.expects('<<', :grounds3)
261
- grinder.grind :main_slot
262
- verify_mocks
263
- end
264
-
265
- it "further supports iteration testing using 'yield'" do
266
- grinder = Grinder.new create_mocks(:blade, :chute, :bucket)
267
-
268
- @chute.expects.each_bean(:side_slot).yields :bean1, :bean2
269
-
270
- @blade.expects.chop(:bean1).returns(:grounds1)
271
- @bucket.expects('<<', :grounds1)
272
-
273
- @blade.expects.chop(:bean2).returns(:grounds2)
274
- @bucket.expects('<<', :grounds2)
275
-
276
- grinder.grind :side_slot
277
-
278
- verify_mocks
279
- end
280
-
281
- class HurtLocker
282
- attr_reader :caught
283
- def initialize(opts)
284
- @locker = opts[:locker]
285
- @store = opts[:store]
286
- end
287
-
288
- def do_the_thing(area,data)
289
- @locker.with_lock(area) do
290
- @store.eat(data)
291
- end
292
- rescue => oops
293
- @caught = oops
294
- end
295
- end
296
-
297
- it "makes mutex-style locking scenarios easy to test" do
298
- hurt = HurtLocker.new create_mocks(:locker, :store)
299
-
300
- @locker.expects.with_lock(:main).yields
301
- @store.expects.eat("some info")
302
-
303
- hurt.do_the_thing(:main, "some info")
304
-
305
- verify_mocks
306
- end
307
-
308
- it "makes it easy to simulate error in mutex-style locking scenarios" do
309
- hurt = HurtLocker.new create_mocks(:locker, :store)
310
- err = StandardError.new('fmshooop')
311
- @locker.expects.with_lock(:main).yields
312
- @store.expects.eat("some info").raises(err)
313
-
314
- hurt.do_the_thing(:main, "some info")
315
-
316
- assert_same err, hurt.caught, "Expected that error to be handled internally"
317
- verify_mocks
318
- end
319
-
320
- it "actually returns 'false' instead of nil when mocking boolean return values" do
321
- create_mock :car
322
- @car.expects.ignition_on?.returns(true)
323
- assert_equal true, @car.ignition_on?, "Should be true"
324
- @car.expects.ignition_on?.returns(false)
325
- assert_equal false, @car.ignition_on?, "Should be false"
326
- end
327
-
328
- it "can mock most methods inherited from object using literal syntax" do
329
- target_methods = %w|id clone display dup eql? ==|
330
- create_mock :foo
331
- target_methods.each do |m|
332
- eval %{@foo.expects(m, "some stuff")}
333
- eval %{@foo.#{m} "some stuff"}
334
- end
335
- end
336
-
337
- it "provides 'expect' as an alias for 'expects'" do
338
- create_mock :foo
339
- @foo.expect.boomboom
340
- @foo.boomboom
341
- verify_mocks
342
- end
343
-
344
- it "provides 'should_receive' as an alias for 'expects'" do
345
- create_mock :foo
346
- @foo.should_receive.boomboom
347
- @foo.boomboom
348
- verify_mocks
349
- end
350
-
351
- it "provides 'and_return' as an alias for 'returns'" do
352
- create_mock :foo
353
- @foo.expects(:boomboom).and_return :brick
354
- assert_equal :brick, @foo.boomboom
355
- verify_mocks
356
- end
357
-
358
- it "does not interfere with a core subset of Object methods" do
359
- create_mock :foo
360
- @foo.method(:inspect)
361
- @foo.inspect
362
- @foo.to_s
363
- @foo.instance_variables
364
- @foo.instance_eval("")
365
- verify_mocks
366
- end
367
-
368
- it "can raise errors from within an expectation block" do
369
- create_mock :cat
370
- @cat.expects.meow do |arg|
371
- assert_equal "mix", arg
372
- raise 'HAIRBALL'
373
- end
374
- assert_error RuntimeError, 'HAIRBALL' do
375
- @cat.meow("mix")
376
- end
377
- end
378
-
379
- it "can raise errors AFTER an expectation block" do
380
- create_mock :cat
381
- @cat.expects.meow do |arg|
382
- assert_equal "mix", arg
383
- end.raises('HAIRBALL')
384
- assert_error RuntimeError, 'HAIRBALL' do
385
- @cat.meow("mix")
386
- end
387
- end
388
-
389
- it "raises an immediate error if a mock is created with a nil name (common mistake: create_mock @cat)" do
390
- # I make this mistake all the time: Typing in an instance var name instead of a symbol in create_mocks.
391
- # When you do that, you're effectively passing nil(s) in as mock names.
392
- assert_error ArgumentError, /'nil' is not a valid name for a mock/ do
393
- create_mocks @apples, @oranges
394
- end
395
- end
396
-
397
- it "overrides 'inspect' to make nice output" do
398
- create_mock :hay_bailer
399
- assert_equal "<Mock hay_bailer>", @hay_bailer.inspect, "Wrong output from 'inspect'"
400
- end
401
-
402
- it "raises if prepare_hardmock_control is invoked after create_mocks, or more than once" do
403
- create_mock :hi_there
404
- create_mocks :another, :one
405
- assert_error RuntimeError, /already setup/ do
406
- prepare_hardmock_control
407
- end
408
- end
409
-
410
- should "support alias verify_hardmocks" do
411
- create_mock :tree
412
- @tree.expects(:grow)
413
- assert_error VerifyError, /unmet/i do
414
- verify_hardmocks
415
- end
416
- end
417
-
418
- #
419
- # HELPERS
420
- #
421
-
422
- def assert_mock_exists(name)
423
- assert_not_nil @all_mocks, "@all_mocks not here yet"
424
- mo = @all_mocks[name]
425
- assert_not_nil mo, "Mock '#{name}' not in @all_mocks"
426
- assert_kind_of Mock, mo, "Wrong type of object, wanted a Mock"
427
- assert_equal name.to_s, mo._name, "Mock '#{name}' had wrong name"
428
- ivar = self.instance_variable_get("@#{name}")
429
- assert_not_nil ivar, "Mock '#{name}' not set as ivar"
430
- assert_same mo, ivar, "Mock '#{name}' ivar not same as instance in @all_mocks"
431
- assert_same @main_mock_control, mo._control, "Mock '#{name}' doesn't share the main mock control"
432
- end
433
- end
434
-