ceedling 0.28.3 → 0.29.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 (1101) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +16 -16
  3. data/Gemfile.lock +17 -16
  4. data/README.md +107 -66
  5. data/Rakefile +11 -11
  6. data/assets/ceedling +3 -3
  7. data/assets/ceedling.cmd +1 -1
  8. data/assets/default_gitignore +5 -5
  9. data/assets/example_file.c +5 -5
  10. data/assets/example_file.h +6 -6
  11. data/assets/project_as_gem.yml +100 -90
  12. data/assets/project_with_guts.yml +101 -91
  13. data/assets/project_with_guts_gcov.yml +101 -91
  14. data/assets/test_example_file.c +13 -13
  15. data/assets/test_example_file_boom.c +13 -13
  16. data/assets/test_example_file_success.c +14 -14
  17. data/assets/test_example_file_verbose.c +12 -12
  18. data/bin/ceedling +337 -316
  19. data/ceedling.gemspec +36 -39
  20. data/ceedling.sublime-project +25 -0
  21. data/ceedling.sublime-workspace +1276 -0
  22. data/config/test_environment.rb +11 -11
  23. data/docs/CeedlingPacket.md +2119 -2060
  24. data/docs/ThrowTheSwitchCodingStandard.md +207 -207
  25. data/examples/blinky/project.yml +99 -98
  26. data/examples/blinky/rakefile.rb +31 -31
  27. data/examples/blinky/src/BlinkTask.c +21 -21
  28. data/examples/blinky/src/BlinkTask.h +6 -6
  29. data/examples/blinky/src/Configure.c +36 -36
  30. data/examples/blinky/src/Configure.h +6 -6
  31. data/examples/blinky/src/main.c +51 -51
  32. data/examples/blinky/src/main.h +9 -9
  33. data/examples/blinky/test/support/stub_interrupt.h +347 -347
  34. data/examples/blinky/test/support/stub_io.h +421 -421
  35. data/examples/blinky/test/support/stub_iom328p.h +883 -883
  36. data/examples/blinky/test/support/stub_sfr_defs.h +269 -269
  37. data/examples/blinky/test/test_BlinkTask.c +42 -42
  38. data/examples/blinky/test/test_Configure.c +29 -29
  39. data/examples/blinky/test/test_main.c +60 -60
  40. data/examples/temp_sensor/project.yml +76 -76
  41. data/examples/temp_sensor/rakefile.rb +6 -6
  42. data/examples/temp_sensor/src/AdcConductor.c +42 -42
  43. data/examples/temp_sensor/src/AdcConductor.h +13 -13
  44. data/examples/temp_sensor/src/AdcHardware.c +27 -27
  45. data/examples/temp_sensor/src/AdcHardware.h +11 -11
  46. data/examples/temp_sensor/src/AdcHardwareConfigurator.c +18 -18
  47. data/examples/temp_sensor/src/AdcHardwareConfigurator.h +10 -10
  48. data/examples/temp_sensor/src/AdcModel.c +33 -33
  49. data/examples/temp_sensor/src/AdcModel.h +13 -13
  50. data/examples/temp_sensor/src/AdcTemperatureSensor.c +51 -51
  51. data/examples/temp_sensor/src/AdcTemperatureSensor.h +10 -10
  52. data/examples/temp_sensor/src/Executor.c +25 -25
  53. data/examples/temp_sensor/src/Executor.h +9 -9
  54. data/examples/temp_sensor/src/IntrinsicsWrapper.c +18 -18
  55. data/examples/temp_sensor/src/IntrinsicsWrapper.h +7 -7
  56. data/examples/temp_sensor/src/Main.c +46 -46
  57. data/examples/temp_sensor/src/Main.h +7 -7
  58. data/examples/temp_sensor/src/Model.c +10 -10
  59. data/examples/temp_sensor/src/Model.h +8 -8
  60. data/examples/temp_sensor/src/ModelConfig.h +7 -7
  61. data/examples/temp_sensor/src/TaskScheduler.c +72 -72
  62. data/examples/temp_sensor/src/TaskScheduler.h +11 -11
  63. data/examples/temp_sensor/src/TemperatureCalculator.c +27 -27
  64. data/examples/temp_sensor/src/TemperatureCalculator.h +8 -8
  65. data/examples/temp_sensor/src/TemperatureFilter.c +38 -38
  66. data/examples/temp_sensor/src/TemperatureFilter.h +10 -10
  67. data/examples/temp_sensor/src/TimerConductor.c +15 -15
  68. data/examples/temp_sensor/src/TimerConductor.h +9 -9
  69. data/examples/temp_sensor/src/TimerConfigurator.c +51 -51
  70. data/examples/temp_sensor/src/TimerConfigurator.h +15 -15
  71. data/examples/temp_sensor/src/TimerHardware.c +15 -15
  72. data/examples/temp_sensor/src/TimerHardware.h +8 -8
  73. data/examples/temp_sensor/src/TimerInterruptConfigurator.c +55 -55
  74. data/examples/temp_sensor/src/TimerInterruptConfigurator.h +13 -13
  75. data/examples/temp_sensor/src/TimerInterruptHandler.c +25 -25
  76. data/examples/temp_sensor/src/TimerInterruptHandler.h +10 -10
  77. data/examples/temp_sensor/src/TimerModel.c +9 -9
  78. data/examples/temp_sensor/src/TimerModel.h +8 -8
  79. data/examples/temp_sensor/src/Types.h +90 -90
  80. data/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.c +18 -18
  81. data/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.h +8 -8
  82. data/examples/temp_sensor/src/UsartConductor.c +21 -21
  83. data/examples/temp_sensor/src/UsartConductor.h +7 -7
  84. data/examples/temp_sensor/src/UsartConfigurator.c +39 -39
  85. data/examples/temp_sensor/src/UsartConfigurator.h +13 -13
  86. data/examples/temp_sensor/src/UsartHardware.c +22 -22
  87. data/examples/temp_sensor/src/UsartHardware.h +9 -9
  88. data/examples/temp_sensor/src/UsartModel.c +34 -34
  89. data/examples/temp_sensor/src/UsartModel.h +10 -10
  90. data/examples/temp_sensor/src/UsartPutChar.c +16 -16
  91. data/examples/temp_sensor/src/UsartPutChar.h +8 -8
  92. data/examples/temp_sensor/src/UsartTransmitBufferStatus.c +7 -7
  93. data/examples/temp_sensor/src/UsartTransmitBufferStatus.h +8 -8
  94. data/examples/temp_sensor/test/TestAdcConductor.c +121 -121
  95. data/examples/temp_sensor/test/TestAdcHardware.c +44 -44
  96. data/examples/temp_sensor/test/TestAdcModel.c +33 -33
  97. data/examples/temp_sensor/test/TestExecutor.c +36 -36
  98. data/examples/temp_sensor/test/TestMain.c +24 -24
  99. data/examples/temp_sensor/test/TestModel.c +20 -20
  100. data/examples/temp_sensor/test/TestTaskScheduler.c +104 -104
  101. data/examples/temp_sensor/test/TestTemperatureCalculator.c +36 -36
  102. data/examples/temp_sensor/test/TestTemperatureFilter.c +79 -79
  103. data/examples/temp_sensor/test/TestTimerConductor.c +32 -32
  104. data/examples/temp_sensor/test/TestTimerHardware.c +26 -26
  105. data/examples/temp_sensor/test/TestTimerModel.c +18 -18
  106. data/examples/temp_sensor/test/TestUsartBaudRateRegisterCalculator.c +21 -21
  107. data/examples/temp_sensor/test/TestUsartConductor.c +40 -40
  108. data/examples/temp_sensor/test/TestUsartHardware.c +36 -36
  109. data/examples/temp_sensor/test/TestUsartModel.c +40 -40
  110. data/examples/temp_sensor/test/support/UnityHelper.c +12 -12
  111. data/examples/temp_sensor/test/support/UnityHelper.h +12 -12
  112. data/lib/ceedling.rb +99 -99
  113. data/lib/ceedling/build_invoker_utils.rb +39 -39
  114. data/lib/ceedling/cacheinator.rb +47 -42
  115. data/lib/ceedling/cacheinator_helper.rb +31 -12
  116. data/lib/ceedling/cmock_builder.rb +15 -15
  117. data/lib/ceedling/configurator.rb +363 -356
  118. data/lib/ceedling/configurator_builder.rb +458 -451
  119. data/lib/ceedling/configurator_plugins.rb +111 -111
  120. data/lib/ceedling/configurator_setup.rb +127 -127
  121. data/lib/ceedling/configurator_validator.rb +193 -193
  122. data/lib/ceedling/constants.rb +97 -97
  123. data/lib/ceedling/defaults.rb +418 -418
  124. data/lib/ceedling/dependinator.rb +98 -91
  125. data/lib/ceedling/erb_wrapper.rb +8 -8
  126. data/lib/ceedling/file_finder.rb +149 -149
  127. data/lib/ceedling/file_finder_helper.rb +54 -54
  128. data/lib/ceedling/file_path_utils.rb +200 -200
  129. data/lib/ceedling/file_system_utils.rb +69 -69
  130. data/lib/ceedling/file_system_wrapper.rb +9 -9
  131. data/lib/ceedling/file_wrapper.rb +83 -83
  132. data/lib/ceedling/flaginator.rb +74 -74
  133. data/lib/ceedling/generator.rb +183 -176
  134. data/lib/ceedling/generator_helper.rb +40 -40
  135. data/lib/ceedling/generator_test_results.rb +89 -89
  136. data/lib/ceedling/generator_test_results_sanity_checker.rb +65 -65
  137. data/lib/ceedling/generator_test_runner.rb +56 -52
  138. data/lib/ceedling/loginator.rb +31 -31
  139. data/lib/ceedling/makefile.rb +46 -46
  140. data/lib/ceedling/objects.yml +310 -307
  141. data/lib/ceedling/par_map.rb +19 -19
  142. data/lib/ceedling/plugin.rb +80 -80
  143. data/lib/ceedling/plugin_builder.rb +52 -52
  144. data/lib/ceedling/plugin_manager.rb +107 -107
  145. data/lib/ceedling/plugin_manager_helper.rb +19 -19
  146. data/lib/ceedling/plugin_reportinator.rb +76 -76
  147. data/lib/ceedling/plugin_reportinator_helper.rb +51 -51
  148. data/lib/ceedling/preprocessinator.rb +42 -43
  149. data/lib/ceedling/preprocessinator_extractor.rb +30 -30
  150. data/lib/ceedling/preprocessinator_file_handler.rb +21 -21
  151. data/lib/ceedling/preprocessinator_helper.rb +46 -46
  152. data/lib/ceedling/preprocessinator_includes_handler.rb +181 -96
  153. data/lib/ceedling/project_config_manager.rb +46 -37
  154. data/lib/ceedling/project_file_loader.rb +99 -99
  155. data/lib/ceedling/rake_utils.rb +17 -17
  156. data/lib/ceedling/rake_wrapper.rb +33 -33
  157. data/lib/ceedling/rakefile.rb +86 -86
  158. data/lib/ceedling/release_invoker.rb +73 -73
  159. data/lib/ceedling/release_invoker_helper.rb +19 -19
  160. data/lib/ceedling/reportinator.rb +26 -26
  161. data/lib/ceedling/rules_cmock.rake +9 -9
  162. data/lib/ceedling/rules_preprocess.rake +26 -26
  163. data/lib/ceedling/rules_release.rake +86 -86
  164. data/lib/ceedling/rules_release_deep_dependencies.rake +15 -15
  165. data/lib/ceedling/rules_tests.rake +74 -74
  166. data/lib/ceedling/rules_tests_deep_dependencies.rake +15 -15
  167. data/lib/ceedling/setupinator.rb +53 -53
  168. data/lib/ceedling/stream_wrapper.rb +28 -20
  169. data/lib/ceedling/streaminator.rb +40 -40
  170. data/lib/ceedling/streaminator_helper.rb +15 -15
  171. data/lib/ceedling/system_utils.rb +37 -37
  172. data/lib/ceedling/system_wrapper.rb +80 -80
  173. data/lib/ceedling/target_loader.rb +38 -38
  174. data/lib/ceedling/task_invoker.rb +117 -101
  175. data/lib/ceedling/tasks_base.rake +111 -112
  176. data/lib/ceedling/tasks_filesystem.rake +103 -100
  177. data/lib/ceedling/tasks_release.rake +30 -30
  178. data/lib/ceedling/tasks_release_deep_dependencies.rake +9 -9
  179. data/lib/ceedling/tasks_tests.rake +60 -55
  180. data/lib/ceedling/tasks_tests_deep_dependencies.rake +9 -9
  181. data/lib/ceedling/tasks_vendor.rake +35 -35
  182. data/lib/ceedling/test_includes_extractor.rb +85 -85
  183. data/lib/ceedling/test_invoker.rb +188 -164
  184. data/lib/ceedling/test_invoker_helper.rb +32 -32
  185. data/lib/ceedling/tool_executor.rb +229 -223
  186. data/lib/ceedling/tool_executor_helper.rb +164 -164
  187. data/lib/ceedling/verbosinator.rb +10 -10
  188. data/lib/ceedling/version.rb +36 -15
  189. data/lib/ceedling/yaml_wrapper.rb +17 -17
  190. data/license.txt +31 -31
  191. data/out.fail +22 -21
  192. data/plugins/beep/README.md +22 -22
  193. data/plugins/beep/lib/beep.rb +40 -40
  194. data/plugins/bullseye/assets/template.erb +15 -15
  195. data/plugins/bullseye/bullseye.rake +169 -169
  196. data/plugins/bullseye/config/defaults.yml +57 -57
  197. data/plugins/bullseye/lib/bullseye.rb +194 -194
  198. data/plugins/colour_report/lib/colour_report.rb +16 -0
  199. data/plugins/command_hooks/README.md +53 -52
  200. data/plugins/command_hooks/lib/command_hooks.rb +92 -75
  201. data/plugins/fake_function_framework/README.md +250 -250
  202. data/plugins/fake_function_framework/Rakefile +18 -18
  203. data/plugins/fake_function_framework/examples/fff_example/project.yml +71 -71
  204. data/plugins/fake_function_framework/examples/fff_example/rakefile.rb +7 -7
  205. data/plugins/fake_function_framework/examples/fff_example/src/bar.c +1 -1
  206. data/plugins/fake_function_framework/examples/fff_example/src/bar.h +14 -14
  207. data/plugins/fake_function_framework/examples/fff_example/src/custom_types.h +6 -6
  208. data/plugins/fake_function_framework/examples/fff_example/src/display.c +6 -6
  209. data/plugins/fake_function_framework/examples/fff_example/src/display.h +16 -16
  210. data/plugins/fake_function_framework/examples/fff_example/src/event_processor.c +93 -93
  211. data/plugins/fake_function_framework/examples/fff_example/src/event_processor.h +11 -11
  212. data/plugins/fake_function_framework/examples/fff_example/src/foo.c +16 -16
  213. data/plugins/fake_function_framework/examples/fff_example/src/foo.h +8 -8
  214. data/plugins/fake_function_framework/examples/fff_example/src/subfolder/zzz.c +1 -1
  215. data/plugins/fake_function_framework/examples/fff_example/src/subfolder/zzz.h +6 -6
  216. data/plugins/fake_function_framework/examples/fff_example/test/test_event_processor.c +155 -155
  217. data/plugins/fake_function_framework/examples/fff_example/test/test_foo.c +47 -47
  218. data/plugins/fake_function_framework/lib/fake_function_framework.rb +87 -87
  219. data/plugins/fake_function_framework/lib/fff_mock_generator.rb +163 -163
  220. data/plugins/fake_function_framework/spec/fff_mock_header_generator_spec.rb +304 -304
  221. data/plugins/fake_function_framework/spec/fff_mock_source_generator_spec.rb +148 -148
  222. data/plugins/fake_function_framework/spec/header_generator.rb +50 -50
  223. data/plugins/fake_function_framework/spec/spec_helper.rb +96 -96
  224. data/plugins/fake_function_framework/src/fff_unity_helper.h +32 -32
  225. data/plugins/gcov/README.md +101 -42
  226. data/plugins/gcov/assets/template.erb +15 -15
  227. data/plugins/gcov/config/defaults.yml +73 -66
  228. data/plugins/gcov/gcov.rake +220 -180
  229. data/plugins/gcov/lib/gcov.rb +113 -106
  230. data/plugins/gcov/lib/gcov_constants.rb +19 -18
  231. data/plugins/junit_tests_report/README.md +36 -0
  232. data/plugins/junit_tests_report/lib/junit_tests_report.rb +129 -118
  233. data/plugins/module_generator/config/module_generator.yml +3 -3
  234. data/plugins/module_generator/lib/module_generator.rb +70 -51
  235. data/plugins/module_generator/module_generator.rake +47 -43
  236. data/plugins/raw_output_report/lib/raw_output_report.rb +41 -41
  237. data/plugins/stdout_gtestlike_tests_report/assets/template.erb +84 -84
  238. data/plugins/stdout_gtestlike_tests_report/assets/template.erb copy +59 -59
  239. data/plugins/stdout_gtestlike_tests_report/config/stdout_gtestlike_tests_report.yml +4 -4
  240. data/plugins/stdout_gtestlike_tests_report/lib/stdout_gtestlike_tests_report.rb +43 -43
  241. data/plugins/stdout_ide_tests_report/config/stdout_ide_tests_report.yml +4 -4
  242. data/plugins/stdout_ide_tests_report/lib/stdout_ide_tests_report.rb +44 -44
  243. data/plugins/stdout_pretty_tests_report/assets/template.erb +59 -59
  244. data/plugins/stdout_pretty_tests_report/config/stdout_pretty_tests_report.yml +4 -4
  245. data/plugins/stdout_pretty_tests_report/lib/stdout_pretty_tests_report.rb +47 -47
  246. data/plugins/subprojects/README.md +63 -63
  247. data/plugins/subprojects/config/defaults.yml +33 -33
  248. data/plugins/subprojects/lib/subprojects.rb +92 -92
  249. data/plugins/subprojects/subprojects.rake +78 -78
  250. data/plugins/teamcity_tests_report/config/teamcity_tests_report.yml +4 -4
  251. data/plugins/teamcity_tests_report/lib/teamcity_tests_report.rb +57 -57
  252. data/plugins/warnings_report/lib/warnings_report.rb +69 -69
  253. data/plugins/xml_tests_report/README.md +36 -0
  254. data/plugins/xml_tests_report/lib/xml_tests_report.rb +110 -108
  255. data/spec/build_invoker_utils_spec.rb +54 -54
  256. data/spec/ceedling_spec.rb +154 -154
  257. data/spec/configurator_builder_spec.rb +6 -6
  258. data/spec/configurator_helper_spec.rb +4 -4
  259. data/spec/configurator_spec.rb +9 -9
  260. data/spec/file_finder_helper_spec.rb +53 -53
  261. data/spec/gcov/gcov_deployment_spec.rb +70 -70
  262. data/spec/gcov/gcov_test_cases_spec.rb +91 -91
  263. data/spec/generator_test_results_sanity_checker_spec.rb +88 -88
  264. data/spec/generator_test_results_spec.rb +107 -107
  265. data/spec/par_map_spec.rb +57 -57
  266. data/spec/preprocessinator_extractor_spec.rb +45 -45
  267. data/spec/preprocessinator_includes_handler_spec.rb +202 -186
  268. data/spec/reportinator_spec.rb +19 -19
  269. data/spec/spec_helper.rb +27 -27
  270. data/spec/spec_system_helper.rb +575 -481
  271. data/spec/support/test_example.fail +22 -22
  272. data/spec/support/test_example.pass +22 -22
  273. data/spec/support/test_example_empty.pass +14 -14
  274. data/spec/support/test_example_ignore.pass +22 -22
  275. data/spec/support/test_example_mangled.pass +20 -20
  276. data/spec/support/test_example_with_time.pass +22 -22
  277. data/spec/system/deployment_spec.rb +219 -197
  278. data/spec/system_utils_spec.rb +56 -56
  279. data/spec/target_loader_spec.rb +30 -30
  280. data/spec/tool_executor_helper_spec.rb +310 -310
  281. data/spec/uncatagorized_specs_spec.rb +8 -8
  282. data/vendor/behaviors/Manifest.txt +9 -9
  283. data/vendor/behaviors/Rakefile +19 -19
  284. data/vendor/behaviors/lib/behaviors.rb +76 -76
  285. data/vendor/behaviors/lib/behaviors/reporttask.rb +158 -158
  286. data/vendor/behaviors/test/behaviors_tasks_test.rb +73 -73
  287. data/vendor/behaviors/test/behaviors_test.rb +50 -50
  288. data/vendor/behaviors/test/tasks_test/Rakefile +19 -19
  289. data/vendor/behaviors/test/tasks_test/lib/user.rb +2 -2
  290. data/vendor/behaviors/test/tasks_test/test/user_test.rb +17 -17
  291. data/vendor/c_exception/Gemfile +4 -4
  292. data/vendor/c_exception/Gemfile.lock +12 -12
  293. data/vendor/c_exception/LICENSE.txt +30 -30
  294. data/vendor/c_exception/README.md +162 -162
  295. data/vendor/c_exception/Rakefile +42 -42
  296. data/vendor/c_exception/docs/CException.md +292 -292
  297. data/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -207
  298. data/vendor/c_exception/lib/CException.c +46 -46
  299. data/vendor/c_exception/lib/CException.h +115 -110
  300. data/vendor/c_exception/makefile +23 -23
  301. data/vendor/c_exception/test/CExceptionConfig.h +46 -46
  302. data/vendor/c_exception/test/TestException.c +391 -391
  303. data/vendor/c_exception/test/TestException_Runner.c +67 -67
  304. data/vendor/c_exception/vendor/unity/README.md +220 -0
  305. data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +118 -0
  306. data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +39 -0
  307. data/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -0
  308. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +308 -0
  309. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +437 -0
  310. data/vendor/c_exception/vendor/unity/auto/parse_output.rb +220 -0
  311. data/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +252 -0
  312. data/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +25 -0
  313. data/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +6 -0
  314. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +139 -0
  315. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +136 -0
  316. data/vendor/c_exception/vendor/unity/auto/unity_to_junit.py +146 -0
  317. data/vendor/c_exception/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -0
  318. data/vendor/c_exception/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  319. data/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.md +716 -0
  320. data/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.md +398 -0
  321. data/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.md +191 -0
  322. data/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -0
  323. data/vendor/{cmock → c_exception}/vendor/unity/docs/license.txt +21 -21
  324. data/vendor/c_exception/vendor/unity/examples/example_1/makefile +71 -0
  325. data/vendor/c_exception/vendor/unity/examples/example_1/readme.txt +5 -0
  326. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.c +24 -0
  327. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.h +3 -0
  328. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -0
  329. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -0
  330. data/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -0
  331. data/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -0
  332. data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
  333. data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
  334. data/vendor/c_exception/vendor/unity/examples/example_2/makefile +70 -0
  335. data/vendor/c_exception/vendor/unity/examples/example_2/readme.txt +5 -0
  336. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.c +24 -0
  337. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.h +3 -0
  338. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -0
  339. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -0
  340. data/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -0
  341. data/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -0
  342. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  343. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  344. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  345. data/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -0
  346. data/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -0
  347. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +43 -0
  348. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +249 -0
  349. data/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +13 -0
  350. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.c +24 -0
  351. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.h +3 -0
  352. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -0
  353. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -0
  354. data/vendor/c_exception/vendor/unity/examples/example_3/target_gcc_32.yml +46 -0
  355. data/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -0
  356. data/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -0
  357. data/vendor/c_exception/vendor/unity/examples/unity_config.h +237 -0
  358. data/vendor/c_exception/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  359. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +48 -0
  360. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
  361. data/vendor/{cmock → c_exception}/vendor/unity/extras/fixture/readme.txt +8 -8
  362. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +432 -0
  363. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +83 -0
  364. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +51 -0
  365. data/vendor/{unity → c_exception/vendor/unity}/extras/fixture/src/unity_fixture_malloc_overrides.h +47 -47
  366. data/vendor/c_exception/vendor/unity/extras/fixture/test/Makefile +74 -0
  367. data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +22 -0
  368. data/vendor/c_exception/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -0
  369. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +543 -0
  370. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +57 -0
  371. data/vendor/{cmock → c_exception}/vendor/unity/extras/fixture/test/unity_output_Spy.c +57 -57
  372. data/vendor/{cmock → c_exception}/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -17
  373. data/vendor/c_exception/vendor/unity/release/build.info +2 -0
  374. data/vendor/c_exception/vendor/unity/release/version.info +2 -0
  375. data/vendor/c_exception/vendor/unity/src/unity.c +1517 -0
  376. data/vendor/c_exception/vendor/unity/src/unity.h +339 -0
  377. data/vendor/c_exception/vendor/unity/src/unity_internals.h +784 -0
  378. data/vendor/c_exception/vendor/unity/test/Makefile +63 -0
  379. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +61 -0
  380. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +57 -0
  381. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.c +55 -0
  382. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.h +15 -0
  383. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -0
  384. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +76 -0
  385. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  386. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -0
  387. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -0
  388. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -0
  389. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +77 -0
  390. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -0
  391. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -0
  392. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -0
  393. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +67 -0
  394. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +70 -0
  395. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +58 -0
  396. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +67 -0
  397. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +70 -0
  398. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +71 -0
  399. data/vendor/c_exception/vendor/unity/test/rakefile +125 -0
  400. data/vendor/c_exception/vendor/unity/test/rakefile_helper.rb +260 -0
  401. data/vendor/c_exception/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  402. data/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +78 -0
  403. data/vendor/c_exception/vendor/unity/test/targets/clang_strict.yml +78 -0
  404. data/vendor/c_exception/vendor/unity/test/targets/gcc_32.yml +49 -0
  405. data/vendor/c_exception/vendor/unity/test/targets/gcc_64.yml +50 -0
  406. data/vendor/c_exception/vendor/unity/test/targets/gcc_auto_limits.yml +47 -0
  407. data/vendor/c_exception/vendor/unity/test/targets/gcc_auto_stdint.yml +59 -0
  408. data/vendor/c_exception/vendor/unity/test/targets/gcc_manual_math.yml +47 -0
  409. data/vendor/c_exception/vendor/unity/test/targets/hitech_picc18.yml +101 -0
  410. data/vendor/c_exception/vendor/unity/test/targets/iar_arm_v4.yml +90 -0
  411. data/vendor/c_exception/vendor/unity/test/targets/iar_arm_v5.yml +80 -0
  412. data/vendor/c_exception/vendor/unity/test/targets/iar_arm_v5_3.yml +80 -0
  413. data/vendor/c_exception/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +94 -0
  414. data/vendor/c_exception/vendor/unity/test/targets/iar_cortexm3_v5.yml +84 -0
  415. data/vendor/c_exception/vendor/unity/test/targets/iar_msp430.yml +95 -0
  416. data/vendor/c_exception/vendor/unity/test/targets/iar_sh2a_v6.yml +86 -0
  417. data/vendor/c_exception/vendor/unity/test/testdata/CException.h +11 -0
  418. data/vendor/c_exception/vendor/unity/test/testdata/Defs.h +8 -0
  419. data/vendor/c_exception/vendor/unity/test/testdata/cmock.h +14 -0
  420. data/vendor/c_exception/vendor/unity/test/testdata/mockMock.h +13 -0
  421. data/vendor/c_exception/vendor/unity/test/testdata/testRunnerGenerator.c +183 -0
  422. data/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +67 -0
  423. data/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +192 -0
  424. data/vendor/c_exception/vendor/unity/test/tests/test_generate_test_runner.rb +1252 -0
  425. data/vendor/c_exception/vendor/unity/test/tests/testparameterized.c +110 -0
  426. data/vendor/c_exception/vendor/unity/test/tests/testunity.c +4993 -0
  427. data/vendor/cmock/Gemfile +9 -9
  428. data/vendor/cmock/{docs/license.txt → LICENSE.txt} +18 -18
  429. data/vendor/cmock/README.md +34 -34
  430. data/vendor/cmock/config/production_environment.rb +14 -14
  431. data/vendor/cmock/config/test_environment.rb +16 -16
  432. data/vendor/cmock/docs/CMock_Summary.md +689 -603
  433. data/vendor/cmock/docs/ThrowTheSwitchCodingStandard.md +207 -207
  434. data/vendor/cmock/examples/make_example/Makefile +30 -30
  435. data/vendor/cmock/examples/make_example/src/foo.c +5 -5
  436. data/vendor/cmock/examples/make_example/src/foo.h +5 -5
  437. data/vendor/cmock/examples/make_example/src/main.c +15 -15
  438. data/vendor/cmock/examples/make_example/test/test_foo.c +17 -17
  439. data/vendor/cmock/examples/make_example/test/test_main.c +15 -15
  440. data/vendor/cmock/examples/temp_sensor/gcc.yml +44 -44
  441. data/vendor/cmock/examples/temp_sensor/iar_v4.yml +92 -92
  442. data/vendor/cmock/examples/temp_sensor/iar_v5.yml +81 -81
  443. data/vendor/cmock/examples/temp_sensor/rakefile.rb +42 -42
  444. data/vendor/cmock/examples/temp_sensor/rakefile_helper.rb +272 -272
  445. data/vendor/cmock/examples/temp_sensor/src/AT91SAM7X256.h +2556 -2556
  446. data/vendor/cmock/examples/temp_sensor/src/AdcConductor.c +42 -42
  447. data/vendor/cmock/examples/temp_sensor/src/AdcConductor.h +11 -11
  448. data/vendor/cmock/examples/temp_sensor/src/AdcHardware.c +27 -27
  449. data/vendor/cmock/examples/temp_sensor/src/AdcHardware.h +9 -9
  450. data/vendor/cmock/examples/temp_sensor/src/AdcHardwareConfigurator.c +18 -18
  451. data/vendor/cmock/examples/temp_sensor/src/AdcHardwareConfigurator.h +10 -10
  452. data/vendor/cmock/examples/temp_sensor/src/AdcModel.c +33 -33
  453. data/vendor/cmock/examples/temp_sensor/src/AdcModel.h +13 -13
  454. data/vendor/cmock/examples/temp_sensor/src/AdcTemperatureSensor.c +51 -51
  455. data/vendor/cmock/examples/temp_sensor/src/AdcTemperatureSensor.h +10 -10
  456. data/vendor/cmock/examples/temp_sensor/src/Executor.c +25 -25
  457. data/vendor/cmock/examples/temp_sensor/src/Executor.h +9 -9
  458. data/vendor/cmock/examples/temp_sensor/src/IntrinsicsWrapper.c +18 -18
  459. data/vendor/cmock/examples/temp_sensor/src/IntrinsicsWrapper.h +7 -7
  460. data/vendor/cmock/examples/temp_sensor/src/Main.c +46 -46
  461. data/vendor/cmock/examples/temp_sensor/src/Main.h +7 -7
  462. data/vendor/cmock/examples/temp_sensor/src/Model.c +10 -10
  463. data/vendor/cmock/examples/temp_sensor/src/Model.h +8 -8
  464. data/vendor/cmock/examples/temp_sensor/src/ModelConfig.h +7 -7
  465. data/vendor/cmock/examples/temp_sensor/src/TaskScheduler.c +72 -72
  466. data/vendor/cmock/examples/temp_sensor/src/TaskScheduler.h +11 -11
  467. data/vendor/cmock/examples/temp_sensor/src/TemperatureCalculator.c +27 -27
  468. data/vendor/cmock/examples/temp_sensor/src/TemperatureCalculator.h +6 -6
  469. data/vendor/cmock/examples/temp_sensor/src/TemperatureFilter.c +39 -39
  470. data/vendor/cmock/examples/temp_sensor/src/TemperatureFilter.h +10 -10
  471. data/vendor/cmock/examples/temp_sensor/src/TimerConductor.c +15 -15
  472. data/vendor/cmock/examples/temp_sensor/src/TimerConductor.h +9 -9
  473. data/vendor/cmock/examples/temp_sensor/src/TimerConfigurator.c +51 -51
  474. data/vendor/cmock/examples/temp_sensor/src/TimerConfigurator.h +15 -15
  475. data/vendor/cmock/examples/temp_sensor/src/TimerHardware.c +15 -15
  476. data/vendor/cmock/examples/temp_sensor/src/TimerHardware.h +8 -8
  477. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptConfigurator.c +55 -55
  478. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptConfigurator.h +13 -13
  479. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptHandler.c +25 -25
  480. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptHandler.h +10 -10
  481. data/vendor/cmock/examples/temp_sensor/src/TimerModel.c +9 -9
  482. data/vendor/cmock/examples/temp_sensor/src/TimerModel.h +8 -8
  483. data/vendor/cmock/examples/temp_sensor/src/Types.h +103 -103
  484. data/vendor/cmock/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.c +18 -18
  485. data/vendor/cmock/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.h +6 -6
  486. data/vendor/cmock/examples/temp_sensor/src/UsartConductor.c +21 -21
  487. data/vendor/cmock/examples/temp_sensor/src/UsartConductor.h +7 -7
  488. data/vendor/cmock/examples/temp_sensor/src/UsartConfigurator.c +39 -39
  489. data/vendor/cmock/examples/temp_sensor/src/UsartConfigurator.h +13 -13
  490. data/vendor/cmock/examples/temp_sensor/src/UsartHardware.c +22 -22
  491. data/vendor/cmock/examples/temp_sensor/src/UsartHardware.h +9 -9
  492. data/vendor/cmock/examples/temp_sensor/src/UsartModel.c +34 -34
  493. data/vendor/cmock/examples/temp_sensor/src/UsartModel.h +10 -10
  494. data/vendor/cmock/examples/temp_sensor/src/UsartPutChar.c +16 -16
  495. data/vendor/cmock/examples/temp_sensor/src/UsartPutChar.h +8 -8
  496. data/vendor/cmock/examples/temp_sensor/src/UsartTransmitBufferStatus.c +7 -7
  497. data/vendor/cmock/examples/temp_sensor/src/UsartTransmitBufferStatus.h +8 -8
  498. data/vendor/cmock/examples/temp_sensor/test/TestAdcConductor.c +121 -121
  499. data/vendor/cmock/examples/temp_sensor/test/TestAdcHardware.c +44 -44
  500. data/vendor/cmock/examples/temp_sensor/test/TestAdcHardwareConfigurator.c +43 -43
  501. data/vendor/cmock/examples/temp_sensor/test/TestAdcModel.c +33 -33
  502. data/vendor/cmock/examples/temp_sensor/test/TestAdcTemperatureSensor.c +47 -47
  503. data/vendor/cmock/examples/temp_sensor/test/TestExecutor.c +36 -36
  504. data/vendor/cmock/examples/temp_sensor/test/TestMain.c +24 -24
  505. data/vendor/cmock/examples/temp_sensor/test/TestModel.c +20 -20
  506. data/vendor/cmock/examples/temp_sensor/test/TestTaskScheduler.c +104 -104
  507. data/vendor/cmock/examples/temp_sensor/test/TestTemperatureCalculator.c +33 -33
  508. data/vendor/cmock/examples/temp_sensor/test/TestTemperatureFilter.c +69 -69
  509. data/vendor/cmock/examples/temp_sensor/test/TestTimerConductor.c +32 -32
  510. data/vendor/cmock/examples/temp_sensor/test/TestTimerConfigurator.c +112 -112
  511. data/vendor/cmock/examples/temp_sensor/test/TestTimerHardware.c +26 -26
  512. data/vendor/cmock/examples/temp_sensor/test/TestTimerInterruptConfigurator.c +78 -78
  513. data/vendor/cmock/examples/temp_sensor/test/TestTimerInterruptHandler.c +66 -66
  514. data/vendor/cmock/examples/temp_sensor/test/TestTimerModel.c +18 -18
  515. data/vendor/cmock/examples/temp_sensor/test/TestUsartBaudRateRegisterCalculator.c +21 -21
  516. data/vendor/cmock/examples/temp_sensor/test/TestUsartConductor.c +40 -40
  517. data/vendor/cmock/examples/temp_sensor/test/TestUsartConfigurator.c +77 -77
  518. data/vendor/cmock/examples/temp_sensor/test/TestUsartHardware.c +37 -37
  519. data/vendor/cmock/examples/temp_sensor/test/TestUsartModel.c +40 -40
  520. data/vendor/cmock/examples/temp_sensor/test/TestUsartPutChar.c +43 -43
  521. data/vendor/cmock/examples/temp_sensor/test/TestUsartTransmitBufferStatus.c +22 -22
  522. data/vendor/cmock/lib/cmock.rb +86 -86
  523. data/vendor/cmock/lib/cmock_config.rb +153 -145
  524. data/vendor/cmock/lib/cmock_file_writer.rb +44 -44
  525. data/vendor/cmock/lib/cmock_generator.rb +268 -264
  526. data/vendor/cmock/lib/cmock_generator_plugin_array.rb +63 -63
  527. data/vendor/cmock/lib/cmock_generator_plugin_callback.rb +88 -98
  528. data/vendor/cmock/lib/cmock_generator_plugin_cexception.rb +51 -51
  529. data/vendor/cmock/lib/cmock_generator_plugin_expect.rb +103 -104
  530. data/vendor/cmock/lib/cmock_generator_plugin_expect_any_args.rb +53 -54
  531. data/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +75 -75
  532. data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +42 -42
  533. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +79 -73
  534. data/vendor/cmock/lib/cmock_generator_utils.rb +253 -240
  535. data/vendor/cmock/lib/cmock_header_parser.rb +364 -337
  536. data/vendor/cmock/lib/cmock_plugin_manager.rb +55 -55
  537. data/vendor/cmock/lib/cmock_unityhelper_parser.rb +75 -75
  538. data/vendor/cmock/meson.build +72 -0
  539. data/vendor/cmock/scripts/create_makefile.rb +202 -202
  540. data/vendor/cmock/scripts/create_mock.rb +8 -8
  541. data/vendor/cmock/scripts/create_runner.rb +20 -20
  542. data/vendor/cmock/scripts/test_summary.rb +19 -19
  543. data/vendor/cmock/src/cmock.c +216 -210
  544. data/vendor/cmock/src/cmock.h +40 -38
  545. data/vendor/cmock/src/cmock_internals.h +91 -89
  546. data/vendor/cmock/src/meson.build +17 -0
  547. data/vendor/cmock/test/c/TestCMockC.c +333 -323
  548. data/vendor/cmock/test/c/TestCMockC.yml +14 -13
  549. data/vendor/cmock/test/c/TestCMockCDynamic.c +186 -186
  550. data/vendor/cmock/test/c/TestCMockCDynamic.yml +12 -12
  551. data/vendor/cmock/test/c/TestCMockCDynamic_Runner.c +36 -36
  552. data/vendor/cmock/test/c/TestCMockC_Runner.c +41 -39
  553. data/vendor/cmock/test/iar/iar_v4/Resource/at91SAM7X256_FLASH.xcl +185 -185
  554. data/vendor/cmock/test/iar/iar_v4/Resource/at91SAM7X256_RAM.xcl +185 -185
  555. data/vendor/cmock/test/iar/iar_v4/Resource/ioat91sam7x256.ddf +2259 -2259
  556. data/vendor/cmock/test/iar/iar_v4/cmock_demo.dep +3691 -3691
  557. data/vendor/cmock/test/iar/iar_v4/cmock_demo.ewp +2581 -2581
  558. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X-EK.h +61 -61
  559. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256.inc +2314 -2314
  560. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256.rdf +4704 -4704
  561. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256.tcl +3407 -3407
  562. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256_inc.h +2268 -2268
  563. data/vendor/cmock/test/iar/iar_v4/incIAR/ioat91sam7x256.h +4380 -4380
  564. data/vendor/cmock/test/iar/iar_v4/incIAR/lib_AT91SAM7X256.h +4211 -4211
  565. data/vendor/cmock/test/iar/iar_v4/settings/cmock_demo.cspy.bat +32 -32
  566. data/vendor/cmock/test/iar/iar_v4/srcIAR/Cstartup.s79 +265 -265
  567. data/vendor/cmock/test/iar/iar_v4/srcIAR/Cstartup_SAM7.c +98 -98
  568. data/vendor/cmock/test/iar/iar_v5/Resource/at91SAM7X256_FLASH.icf +43 -43
  569. data/vendor/cmock/test/iar/iar_v5/Resource/at91SAM7X256_RAM.icf +42 -42
  570. data/vendor/cmock/test/iar/iar_v5/cmock_demo.dep +4204 -4204
  571. data/vendor/cmock/test/iar/iar_v5/cmock_demo.ewp +2426 -2426
  572. data/vendor/cmock/test/iar/iar_v5/incIAR/AT91SAM7X-EK.h +61 -61
  573. data/vendor/cmock/test/iar/iar_v5/incIAR/AT91SAM7X256_inc.h +2268 -2268
  574. data/vendor/cmock/test/iar/iar_v5/incIAR/lib_AT91SAM7X256.h +4211 -4211
  575. data/vendor/cmock/test/iar/iar_v5/incIAR/project.h +30 -30
  576. data/vendor/cmock/test/iar/iar_v5/settings/BasicInterrupt_SAM7X.cspy.bat +33 -33
  577. data/vendor/cmock/test/iar/iar_v5/settings/BasicInterrupt_SAM7X_FLASH_Debug.jlink +12 -12
  578. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo.cspy.bat +33 -33
  579. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo_Binary.jlink +12 -12
  580. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo_FLASH_Debug.jlink +12 -12
  581. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo_RAM_Debug.jlink +12 -12
  582. data/vendor/cmock/test/iar/iar_v5/srcIAR/Cstartup.s +299 -299
  583. data/vendor/cmock/test/iar/iar_v5/srcIAR/Cstartup_SAM7.c +98 -98
  584. data/vendor/cmock/test/rakefile +106 -106
  585. data/vendor/cmock/test/rakefile_helper.rb +382 -381
  586. data/vendor/cmock/test/system/systest_generator.rb +193 -194
  587. data/vendor/cmock/test/system/test_compilation/callingconv.h +11 -11
  588. data/vendor/cmock/test/system/test_compilation/config.yml +9 -9
  589. data/vendor/cmock/test/system/test_compilation/const.h +37 -37
  590. data/vendor/cmock/test/system/test_compilation/osek.h +275 -275
  591. data/vendor/cmock/test/system/test_compilation/parsing.h +89 -52
  592. data/vendor/cmock/test/system/test_interactions/all_plugins_but_other_limits.yml +375 -375
  593. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +459 -459
  594. data/vendor/cmock/test/system/test_interactions/array_and_pointer_handling.yml +446 -446
  595. data/vendor/cmock/test/system/test_interactions/basic_expect_and_return.yml +124 -124
  596. data/vendor/cmock/test/system/test_interactions/const_primitives_handling.yml +87 -87
  597. data/vendor/cmock/test/system/test_interactions/doesnt_leave_details_behind.yml +308 -308
  598. data/vendor/cmock/test/system/test_interactions/enforce_strict_ordering.yml +247 -247
  599. data/vendor/cmock/test/system/test_interactions/expect_and_return_custom_types.yml +108 -108
  600. data/vendor/cmock/test/system/test_interactions/expect_and_return_treat_as.yml +173 -173
  601. data/vendor/cmock/test/system/test_interactions/expect_and_throw.yml +170 -170
  602. data/vendor/cmock/test/system/test_interactions/expect_any_args.yml +238 -238
  603. data/vendor/cmock/test/system/test_interactions/fancy_pointer_handling.yml +210 -210
  604. data/vendor/cmock/test/system/test_interactions/function_pointer_handling.yml +82 -82
  605. data/vendor/cmock/test/system/test_interactions/ignore_and_return.yml +329 -329
  606. data/vendor/cmock/test/system/test_interactions/ignore_strict_mock_calling.yml +37 -37
  607. data/vendor/cmock/test/system/test_interactions/newer_standards_stuff1.yml +52 -52
  608. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_1.yml +91 -91
  609. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_2.yml +59 -59
  610. data/vendor/cmock/test/system/test_interactions/out_of_memory.yml +65 -65
  611. data/vendor/cmock/test/system/test_interactions/parsing_challenges.yml +242 -242
  612. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_and_expect_any_args.yml +235 -235
  613. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +231 -231
  614. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return.yml +277 -277
  615. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return_with_plugins.yml +280 -280
  616. data/vendor/cmock/test/system/test_interactions/stubs_with_callbacks.yml +221 -221
  617. data/vendor/cmock/test/system/test_interactions/unity_64bit_support.yml +77 -77
  618. data/vendor/cmock/test/system/test_interactions/unity_ignores.yml +139 -139
  619. data/vendor/cmock/test/system/test_interactions/unity_void_pointer_compare.yml +91 -0
  620. data/vendor/cmock/test/targets/clang_strict.yml +90 -90
  621. data/vendor/cmock/test/targets/gcc.yml +58 -58
  622. data/vendor/cmock/test/targets/gcc_64.yml +58 -58
  623. data/vendor/cmock/test/targets/gcc_tiny.yml +80 -80
  624. data/vendor/cmock/test/targets/iar_arm_v4.yml +110 -110
  625. data/vendor/cmock/test/targets/iar_arm_v5.yml +95 -95
  626. data/vendor/cmock/test/test_helper.rb +44 -44
  627. data/vendor/cmock/test/unit/cmock_config_test.rb +120 -120
  628. data/vendor/cmock/test/unit/cmock_config_test.yml +5 -5
  629. data/vendor/cmock/test/unit/cmock_file_writer_test.rb +27 -27
  630. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +548 -542
  631. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +141 -141
  632. data/vendor/cmock/test/unit/cmock_generator_plugin_callback_test.rb +281 -259
  633. data/vendor/cmock/test/unit/cmock_generator_plugin_cexception_test.rb +96 -96
  634. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_a_test.rb +183 -186
  635. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_any_args_test.rb +67 -60
  636. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_b_test.rb +200 -203
  637. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +116 -116
  638. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +105 -105
  639. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +136 -136
  640. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +415 -394
  641. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +1728 -1699
  642. data/vendor/cmock/test/unit/cmock_plugin_manager_test.rb +100 -91
  643. data/vendor/cmock/test/unit/cmock_unityhelper_parser_test.rb +223 -223
  644. data/vendor/cmock/vendor/behaviors/Manifest.txt +9 -9
  645. data/vendor/cmock/vendor/behaviors/Rakefile +19 -19
  646. data/vendor/cmock/vendor/behaviors/lib/behaviors.rb +76 -76
  647. data/vendor/cmock/vendor/behaviors/lib/behaviors/reporttask.rb +158 -158
  648. data/vendor/cmock/vendor/behaviors/test/behaviors_tasks_test.rb +73 -73
  649. data/vendor/cmock/vendor/behaviors/test/behaviors_test.rb +50 -50
  650. data/vendor/cmock/vendor/behaviors/test/tasks_test/Rakefile +19 -19
  651. data/vendor/cmock/vendor/behaviors/test/tasks_test/lib/user.rb +2 -2
  652. data/vendor/cmock/vendor/behaviors/test/tasks_test/test/user_test.rb +17 -17
  653. data/vendor/cmock/vendor/c_exception/Gemfile +4 -4
  654. data/vendor/cmock/vendor/c_exception/Gemfile.lock +12 -12
  655. data/vendor/cmock/vendor/c_exception/LICENSE.txt +30 -30
  656. data/vendor/cmock/vendor/c_exception/README.md +162 -162
  657. data/vendor/cmock/vendor/c_exception/Rakefile +42 -42
  658. data/vendor/cmock/vendor/c_exception/docs/CException.md +292 -292
  659. data/vendor/cmock/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -207
  660. data/vendor/cmock/vendor/c_exception/lib/CException.c +46 -46
  661. data/vendor/cmock/vendor/c_exception/lib/CException.h +115 -110
  662. data/vendor/cmock/vendor/c_exception/makefile +23 -23
  663. data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +46 -46
  664. data/vendor/cmock/vendor/c_exception/test/TestException.c +391 -391
  665. data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +67 -67
  666. data/vendor/cmock/vendor/unity/CMakeLists.txt +31 -0
  667. data/vendor/{unity/docs/license.txt → cmock/vendor/unity/LICENSE.txt} +21 -21
  668. data/vendor/cmock/vendor/unity/README.md +191 -231
  669. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +119 -118
  670. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -39
  671. data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -36
  672. data/vendor/cmock/vendor/unity/auto/generate_module.rb +309 -308
  673. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +495 -457
  674. data/vendor/cmock/vendor/unity/auto/parse_output.rb +322 -323
  675. data/vendor/cmock/vendor/unity/auto/run_test.erb +36 -0
  676. data/vendor/cmock/vendor/unity/auto/stylize_as_junit.rb +251 -252
  677. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +25 -25
  678. data/vendor/cmock/vendor/unity/auto/type_sanitizer.rb +6 -6
  679. data/vendor/cmock/vendor/unity/auto/unity_test_summary.py +139 -139
  680. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +135 -136
  681. data/vendor/cmock/vendor/unity/auto/unity_to_junit.py +146 -146
  682. data/vendor/cmock/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +206 -206
  683. data/vendor/cmock/vendor/unity/docs/UnityAssertionsReference.md +850 -779
  684. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +541 -433
  685. data/vendor/cmock/vendor/unity/docs/UnityGettingStartedGuide.md +251 -192
  686. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +266 -260
  687. data/vendor/cmock/vendor/unity/examples/example_1/makefile +72 -71
  688. data/vendor/cmock/vendor/unity/examples/example_1/readme.txt +4 -4
  689. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.c +24 -24
  690. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.h +3 -3
  691. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -11
  692. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -2
  693. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -62
  694. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -31
  695. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -53
  696. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -57
  697. data/vendor/cmock/vendor/unity/examples/example_2/makefile +71 -70
  698. data/vendor/cmock/vendor/unity/examples/example_2/readme.txt +4 -4
  699. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.c +24 -24
  700. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.h +3 -3
  701. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -11
  702. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -2
  703. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -64
  704. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -33
  705. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +8 -8
  706. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +10 -10
  707. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -12
  708. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -10
  709. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -12
  710. data/vendor/cmock/vendor/unity/examples/example_3/rakefile.rb +38 -43
  711. data/vendor/cmock/vendor/unity/examples/example_3/rakefile_helper.rb +250 -249
  712. data/vendor/cmock/vendor/unity/examples/example_3/readme.txt +13 -13
  713. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.c +24 -24
  714. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.h +3 -3
  715. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -11
  716. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -2
  717. data/vendor/cmock/vendor/unity/examples/example_3/target_gcc_32.yml +47 -46
  718. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -62
  719. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -31
  720. data/vendor/cmock/vendor/unity/examples/example_4/meson.build +17 -0
  721. data/vendor/cmock/vendor/unity/examples/example_4/readme.txt +15 -0
  722. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode.c +24 -0
  723. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode.h +3 -0
  724. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode2.c +11 -0
  725. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode2.h +2 -0
  726. data/vendor/cmock/vendor/unity/examples/example_4/src/meson.build +21 -0
  727. data/vendor/cmock/vendor/unity/examples/example_4/subprojects/unity.wrap +4 -0
  728. data/vendor/cmock/vendor/unity/examples/example_4/test/TestProductionCode.c +63 -0
  729. data/vendor/cmock/vendor/unity/examples/example_4/test/TestProductionCode2.c +35 -0
  730. data/vendor/cmock/vendor/unity/examples/example_4/test/meson.build +12 -0
  731. data/vendor/cmock/vendor/unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +53 -0
  732. data/vendor/cmock/vendor/unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +57 -0
  733. data/vendor/cmock/vendor/unity/examples/example_4/test/test_runners/meson.build +16 -0
  734. data/vendor/cmock/vendor/unity/examples/unity_config.h +263 -247
  735. data/vendor/cmock/vendor/unity/extras/eclipse/error_parsers.txt +26 -26
  736. data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +44 -48
  737. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +183 -178
  738. data/vendor/cmock/vendor/unity/extras/fixture/readme.md +17 -0
  739. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +275 -436
  740. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +83 -83
  741. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +50 -51
  742. data/vendor/cmock/vendor/unity/extras/fixture/test/Makefile +72 -75
  743. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +20 -22
  744. data/vendor/cmock/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -39
  745. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +245 -543
  746. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +32 -57
  747. data/vendor/cmock/vendor/unity/extras/memory/rakefile.rb +45 -0
  748. data/vendor/cmock/vendor/unity/extras/memory/rakefile_helper.rb +187 -0
  749. data/vendor/cmock/vendor/unity/extras/memory/readme.md +49 -0
  750. data/vendor/cmock/vendor/unity/extras/memory/src/unity_memory.c +202 -0
  751. data/vendor/cmock/vendor/unity/extras/{fixture/src/unity_fixture_malloc_overrides.h → memory/src/unity_memory.h} +60 -47
  752. data/vendor/cmock/vendor/unity/extras/memory/test/Makefile +78 -0
  753. data/vendor/cmock/vendor/unity/extras/memory/test/unity_memory_Test.c +325 -0
  754. data/vendor/cmock/vendor/unity/extras/memory/test/unity_memory_TestRunner.c +49 -0
  755. data/vendor/{unity/extras/fixture → cmock/vendor/unity/extras/memory}/test/unity_output_Spy.c +56 -57
  756. data/vendor/{unity/extras/fixture → cmock/vendor/unity/extras/memory}/test/unity_output_Spy.h +16 -17
  757. data/vendor/cmock/vendor/unity/meson.build +69 -0
  758. data/vendor/cmock/vendor/unity/src/CMakeLists.txt +22 -0
  759. data/vendor/cmock/vendor/unity/src/meson.build +16 -0
  760. data/vendor/cmock/vendor/unity/src/unity.c +2085 -1572
  761. data/vendor/cmock/vendor/unity/src/unity.h +617 -503
  762. data/vendor/cmock/vendor/unity/src/unity_internals.h +1002 -924
  763. data/vendor/cmock/vendor/unity/test/Makefile +67 -68
  764. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +61 -61
  765. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +57 -57
  766. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.c +55 -55
  767. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.h +15 -15
  768. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -80
  769. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +76 -76
  770. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -75
  771. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -13
  772. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -89
  773. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -89
  774. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +77 -77
  775. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -89
  776. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -89
  777. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -90
  778. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +67 -67
  779. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +70 -70
  780. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +58 -58
  781. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +67 -67
  782. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +70 -70
  783. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +71 -71
  784. data/vendor/cmock/vendor/unity/test/rakefile +124 -125
  785. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +269 -260
  786. data/vendor/cmock/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -158
  787. data/vendor/cmock/vendor/unity/test/targets/ansi.yml +49 -0
  788. data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +78 -78
  789. data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +78 -78
  790. data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +49 -49
  791. data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +50 -50
  792. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_limits.yml +47 -47
  793. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_stdint.yml +59 -59
  794. data/vendor/cmock/vendor/unity/test/targets/gcc_manual_math.yml +47 -47
  795. data/vendor/cmock/vendor/unity/test/targets/hitech_picc18.yml +101 -101
  796. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v4.yml +90 -90
  797. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5.yml +80 -80
  798. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5_3.yml +80 -80
  799. data/vendor/cmock/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +94 -94
  800. data/vendor/cmock/vendor/unity/test/targets/iar_cortexm3_v5.yml +84 -84
  801. data/vendor/cmock/vendor/unity/test/targets/iar_msp430.yml +95 -95
  802. data/vendor/cmock/vendor/unity/test/targets/iar_sh2a_v6.yml +86 -86
  803. data/vendor/cmock/vendor/unity/test/testdata/CException.h +11 -11
  804. data/vendor/cmock/vendor/unity/test/testdata/Defs.h +8 -8
  805. data/vendor/cmock/vendor/unity/test/testdata/cmock.h +14 -14
  806. data/vendor/cmock/vendor/unity/test/testdata/mockMock.h +13 -13
  807. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGenerator.c +189 -186
  808. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +70 -70
  809. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +197 -195
  810. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +1268 -1252
  811. data/vendor/cmock/vendor/unity/test/tests/testparameterized.c +171 -113
  812. data/vendor/cmock/vendor/unity/test/tests/testunity.c +8168 -5371
  813. data/vendor/deep_merge/MIT-LICENSE +20 -20
  814. data/vendor/deep_merge/README +94 -94
  815. data/vendor/deep_merge/Rakefile +28 -28
  816. data/vendor/deep_merge/lib/deep_merge.rb +211 -211
  817. data/vendor/deep_merge/test/test_deep_merge.rb +553 -553
  818. data/vendor/diy/History.txt +28 -28
  819. data/vendor/diy/README.rdoc +233 -233
  820. data/vendor/diy/Rakefile +33 -33
  821. data/vendor/diy/TODO.txt +9 -9
  822. data/vendor/diy/diy.gemspec +131 -131
  823. data/vendor/diy/lib/diy.rb +403 -403
  824. data/vendor/diy/lib/diy/factory.rb +36 -36
  825. data/vendor/diy/sample_code/car.rb +7 -7
  826. data/vendor/diy/sample_code/chassis.rb +5 -5
  827. data/vendor/diy/sample_code/diy_example.rb +26 -26
  828. data/vendor/diy/sample_code/engine.rb +5 -5
  829. data/vendor/diy/sample_code/objects.yml +10 -10
  830. data/vendor/diy/test/constructor.rb +119 -119
  831. data/vendor/diy/test/diy_test.rb +608 -608
  832. data/vendor/diy/test/factory_test.rb +79 -79
  833. data/vendor/diy/test/files/broken_construction.yml +7 -7
  834. data/vendor/diy/test/files/cat/cat.rb +3 -3
  835. data/vendor/diy/test/files/cat/extra_conflict.yml +5 -5
  836. data/vendor/diy/test/files/cat/heritage.rb +2 -2
  837. data/vendor/diy/test/files/cat/needs_input.yml +3 -3
  838. data/vendor/diy/test/files/cat/the_cat_lineage.rb +1 -1
  839. data/vendor/diy/test/files/dog/dog_model.rb +3 -3
  840. data/vendor/diy/test/files/dog/dog_presenter.rb +3 -3
  841. data/vendor/diy/test/files/dog/dog_view.rb +2 -2
  842. data/vendor/diy/test/files/dog/file_resolver.rb +2 -2
  843. data/vendor/diy/test/files/dog/other_thing.rb +2 -2
  844. data/vendor/diy/test/files/dog/simple.yml +11 -11
  845. data/vendor/diy/test/files/donkey/foo.rb +8 -8
  846. data/vendor/diy/test/files/donkey/foo/bar/qux.rb +7 -7
  847. data/vendor/diy/test/files/factory/beef.rb +5 -5
  848. data/vendor/diy/test/files/factory/dog.rb +6 -6
  849. data/vendor/diy/test/files/factory/factory.yml +19 -19
  850. data/vendor/diy/test/files/factory/farm/llama.rb +7 -7
  851. data/vendor/diy/test/files/factory/farm/pork.rb +7 -7
  852. data/vendor/diy/test/files/factory/kitten.rb +13 -13
  853. data/vendor/diy/test/files/fud/objects.yml +13 -13
  854. data/vendor/diy/test/files/fud/toy.rb +14 -14
  855. data/vendor/diy/test/files/functions/attached_things_builder.rb +1 -1
  856. data/vendor/diy/test/files/functions/invalid_method.yml +4 -4
  857. data/vendor/diy/test/files/functions/method_extractor.rb +2 -2
  858. data/vendor/diy/test/files/functions/nonsingleton_objects.yml +5 -5
  859. data/vendor/diy/test/files/functions/objects.yml +21 -21
  860. data/vendor/diy/test/files/functions/thing.rb +2 -2
  861. data/vendor/diy/test/files/functions/thing_builder.rb +24 -24
  862. data/vendor/diy/test/files/functions/things_builder.rb +2 -2
  863. data/vendor/diy/test/files/gnu/objects.yml +14 -14
  864. data/vendor/diy/test/files/gnu/thinger.rb +7 -7
  865. data/vendor/diy/test/files/goat/base.rb +8 -8
  866. data/vendor/diy/test/files/goat/can.rb +6 -6
  867. data/vendor/diy/test/files/goat/goat.rb +6 -6
  868. data/vendor/diy/test/files/goat/objects.yml +12 -12
  869. data/vendor/diy/test/files/goat/paper.rb +6 -6
  870. data/vendor/diy/test/files/goat/plane.rb +7 -7
  871. data/vendor/diy/test/files/goat/shirt.rb +6 -6
  872. data/vendor/diy/test/files/goat/wings.rb +8 -8
  873. data/vendor/diy/test/files/horse/holder_thing.rb +3 -3
  874. data/vendor/diy/test/files/horse/objects.yml +7 -7
  875. data/vendor/diy/test/files/namespace/animal/bird.rb +5 -5
  876. data/vendor/diy/test/files/namespace/animal/cat.rb +5 -5
  877. data/vendor/diy/test/files/namespace/animal/reptile/hardshell/turtle.rb +8 -8
  878. data/vendor/diy/test/files/namespace/animal/reptile/lizard.rb +7 -7
  879. data/vendor/diy/test/files/namespace/bad_module_specified.yml +8 -8
  880. data/vendor/diy/test/files/namespace/class_name_combine.yml +8 -8
  881. data/vendor/diy/test/files/namespace/no_module_specified.yml +8 -8
  882. data/vendor/diy/test/files/namespace/objects.yml +21 -21
  883. data/vendor/diy/test/files/namespace/road.rb +2 -2
  884. data/vendor/diy/test/files/namespace/sky.rb +2 -2
  885. data/vendor/diy/test/files/namespace/subcontext.yml +22 -22
  886. data/vendor/diy/test/files/non_singleton/air.rb +2 -2
  887. data/vendor/diy/test/files/non_singleton/fat_cat.rb +3 -3
  888. data/vendor/diy/test/files/non_singleton/objects.yml +19 -19
  889. data/vendor/diy/test/files/non_singleton/pig.rb +3 -3
  890. data/vendor/diy/test/files/non_singleton/thread_spinner.rb +3 -3
  891. data/vendor/diy/test/files/non_singleton/tick.rb +3 -3
  892. data/vendor/diy/test/files/non_singleton/yard.rb +2 -2
  893. data/vendor/diy/test/files/yak/core_model.rb +3 -3
  894. data/vendor/diy/test/files/yak/core_presenter.rb +3 -3
  895. data/vendor/diy/test/files/yak/core_view.rb +1 -1
  896. data/vendor/diy/test/files/yak/data_source.rb +1 -1
  897. data/vendor/diy/test/files/yak/fringe_model.rb +3 -3
  898. data/vendor/diy/test/files/yak/fringe_presenter.rb +3 -3
  899. data/vendor/diy/test/files/yak/fringe_view.rb +1 -1
  900. data/vendor/diy/test/files/yak/giant_squid.rb +3 -3
  901. data/vendor/diy/test/files/yak/krill.rb +2 -2
  902. data/vendor/diy/test/files/yak/my_objects.yml +21 -21
  903. data/vendor/diy/test/files/yak/sub_sub_context_test.yml +27 -27
  904. data/vendor/diy/test/test_helper.rb +55 -55
  905. data/vendor/hardmock/CHANGES +78 -78
  906. data/vendor/hardmock/LICENSE +7 -7
  907. data/vendor/hardmock/README +70 -70
  908. data/vendor/hardmock/Rakefile +8 -8
  909. data/vendor/hardmock/config/environment.rb +12 -12
  910. data/vendor/hardmock/lib/assert_error.rb +23 -23
  911. data/vendor/hardmock/lib/extend_test_unit.rb +14 -14
  912. data/vendor/hardmock/lib/hardmock.rb +86 -86
  913. data/vendor/hardmock/lib/hardmock/errors.rb +22 -22
  914. data/vendor/hardmock/lib/hardmock/expectation.rb +229 -229
  915. data/vendor/hardmock/lib/hardmock/expectation_builder.rb +9 -9
  916. data/vendor/hardmock/lib/hardmock/expector.rb +26 -26
  917. data/vendor/hardmock/lib/hardmock/method_cleanout.rb +33 -33
  918. data/vendor/hardmock/lib/hardmock/mock.rb +180 -180
  919. data/vendor/hardmock/lib/hardmock/mock_control.rb +53 -53
  920. data/vendor/hardmock/lib/hardmock/stubbing.rb +210 -210
  921. data/vendor/hardmock/lib/hardmock/trapper.rb +31 -31
  922. data/vendor/hardmock/lib/hardmock/utils.rb +9 -9
  923. data/vendor/hardmock/lib/test_unit_before_after.rb +169 -169
  924. data/vendor/hardmock/rake_tasks/rdoc.rake +19 -19
  925. data/vendor/hardmock/rake_tasks/rdoc_options.rb +4 -4
  926. data/vendor/hardmock/rake_tasks/test.rake +22 -22
  927. data/vendor/hardmock/test/functional/assert_error_test.rb +52 -52
  928. data/vendor/hardmock/test/functional/auto_verify_test.rb +178 -178
  929. data/vendor/hardmock/test/functional/direct_mock_usage_test.rb +396 -396
  930. data/vendor/hardmock/test/functional/hardmock_test.rb +434 -434
  931. data/vendor/hardmock/test/functional/stubbing_test.rb +479 -479
  932. data/vendor/hardmock/test/test_helper.rb +43 -43
  933. data/vendor/hardmock/test/unit/expectation_builder_test.rb +19 -19
  934. data/vendor/hardmock/test/unit/expectation_test.rb +372 -372
  935. data/vendor/hardmock/test/unit/expector_test.rb +57 -57
  936. data/vendor/hardmock/test/unit/method_cleanout_test.rb +36 -36
  937. data/vendor/hardmock/test/unit/mock_control_test.rb +175 -175
  938. data/vendor/hardmock/test/unit/mock_test.rb +279 -279
  939. data/vendor/hardmock/test/unit/test_unit_before_after_test.rb +452 -452
  940. data/vendor/hardmock/test/unit/trapper_test.rb +62 -62
  941. data/vendor/hardmock/test/unit/verify_error_test.rb +40 -40
  942. data/vendor/unity/CMakeLists.txt +31 -0
  943. data/vendor/unity/LICENSE.txt +21 -0
  944. data/vendor/unity/README.md +191 -231
  945. data/vendor/unity/auto/colour_prompt.rb +119 -118
  946. data/vendor/unity/auto/colour_reporter.rb +39 -39
  947. data/vendor/unity/auto/generate_config.yml +36 -36
  948. data/vendor/unity/auto/generate_module.rb +309 -308
  949. data/vendor/unity/auto/generate_test_runner.rb +495 -457
  950. data/vendor/unity/auto/parse_output.rb +322 -323
  951. data/vendor/unity/auto/run_test.erb +36 -0
  952. data/vendor/unity/auto/stylize_as_junit.rb +251 -252
  953. data/vendor/unity/auto/test_file_filter.rb +25 -25
  954. data/vendor/unity/auto/type_sanitizer.rb +6 -6
  955. data/vendor/unity/auto/unity_test_summary.py +139 -139
  956. data/vendor/unity/auto/unity_test_summary.rb +135 -136
  957. data/vendor/unity/auto/unity_to_junit.py +146 -146
  958. data/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +206 -206
  959. data/vendor/unity/docs/UnityAssertionsReference.md +850 -779
  960. data/vendor/unity/docs/UnityConfigurationGuide.md +541 -433
  961. data/vendor/unity/docs/UnityGettingStartedGuide.md +251 -192
  962. data/vendor/unity/docs/UnityHelperScriptsGuide.md +266 -260
  963. data/vendor/unity/examples/example_1/makefile +72 -71
  964. data/vendor/unity/examples/example_1/readme.txt +4 -4
  965. data/vendor/unity/examples/example_1/src/ProductionCode.c +24 -24
  966. data/vendor/unity/examples/example_1/src/ProductionCode.h +3 -3
  967. data/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -11
  968. data/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -2
  969. data/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -62
  970. data/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -31
  971. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -53
  972. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -57
  973. data/vendor/unity/examples/example_2/makefile +71 -70
  974. data/vendor/unity/examples/example_2/readme.txt +4 -4
  975. data/vendor/unity/examples/example_2/src/ProductionCode.c +24 -24
  976. data/vendor/unity/examples/example_2/src/ProductionCode.h +3 -3
  977. data/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -11
  978. data/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -2
  979. data/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -64
  980. data/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -33
  981. data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +8 -8
  982. data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +10 -10
  983. data/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -12
  984. data/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -10
  985. data/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -12
  986. data/vendor/unity/examples/example_3/rakefile.rb +38 -43
  987. data/vendor/unity/examples/example_3/rakefile_helper.rb +250 -249
  988. data/vendor/unity/examples/example_3/readme.txt +13 -13
  989. data/vendor/unity/examples/example_3/src/ProductionCode.c +24 -24
  990. data/vendor/unity/examples/example_3/src/ProductionCode.h +3 -3
  991. data/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -11
  992. data/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -2
  993. data/vendor/unity/examples/example_3/target_gcc_32.yml +47 -46
  994. data/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -62
  995. data/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -31
  996. data/vendor/unity/examples/example_4/meson.build +17 -0
  997. data/vendor/unity/examples/example_4/readme.txt +15 -0
  998. data/vendor/unity/examples/example_4/src/ProductionCode.c +24 -0
  999. data/vendor/unity/examples/example_4/src/ProductionCode.h +3 -0
  1000. data/vendor/unity/examples/example_4/src/ProductionCode2.c +11 -0
  1001. data/vendor/unity/examples/example_4/src/ProductionCode2.h +2 -0
  1002. data/vendor/unity/examples/example_4/src/meson.build +21 -0
  1003. data/vendor/unity/examples/example_4/subprojects/unity.wrap +4 -0
  1004. data/vendor/unity/examples/example_4/test/TestProductionCode.c +63 -0
  1005. data/vendor/unity/examples/example_4/test/TestProductionCode2.c +35 -0
  1006. data/vendor/unity/examples/example_4/test/meson.build +12 -0
  1007. data/vendor/unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +53 -0
  1008. data/vendor/unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +57 -0
  1009. data/vendor/unity/examples/example_4/test/test_runners/meson.build +16 -0
  1010. data/vendor/unity/examples/unity_config.h +263 -247
  1011. data/vendor/unity/extras/eclipse/error_parsers.txt +26 -26
  1012. data/vendor/unity/extras/fixture/rakefile.rb +44 -48
  1013. data/vendor/unity/extras/fixture/rakefile_helper.rb +183 -178
  1014. data/vendor/unity/extras/fixture/readme.md +17 -0
  1015. data/vendor/unity/extras/fixture/src/unity_fixture.c +275 -436
  1016. data/vendor/unity/extras/fixture/src/unity_fixture.h +83 -83
  1017. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +50 -51
  1018. data/vendor/unity/extras/fixture/test/Makefile +72 -75
  1019. data/vendor/unity/extras/fixture/test/main/AllTests.c +20 -22
  1020. data/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -39
  1021. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +245 -543
  1022. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +32 -57
  1023. data/vendor/unity/extras/memory/rakefile.rb +45 -0
  1024. data/vendor/unity/extras/memory/rakefile_helper.rb +187 -0
  1025. data/vendor/unity/extras/memory/readme.md +49 -0
  1026. data/vendor/unity/extras/memory/src/unity_memory.c +202 -0
  1027. data/vendor/unity/extras/memory/src/unity_memory.h +60 -0
  1028. data/vendor/unity/extras/memory/test/Makefile +78 -0
  1029. data/vendor/unity/extras/memory/test/unity_memory_Test.c +325 -0
  1030. data/vendor/unity/extras/memory/test/unity_memory_TestRunner.c +49 -0
  1031. data/vendor/unity/extras/memory/test/unity_output_Spy.c +56 -0
  1032. data/vendor/unity/extras/memory/test/unity_output_Spy.h +16 -0
  1033. data/vendor/unity/meson.build +69 -0
  1034. data/vendor/unity/src/CMakeLists.txt +22 -0
  1035. data/vendor/unity/src/meson.build +16 -0
  1036. data/vendor/unity/src/unity.c +2085 -1572
  1037. data/vendor/unity/src/unity.h +617 -503
  1038. data/vendor/unity/src/unity_internals.h +1002 -924
  1039. data/vendor/unity/test/Makefile +67 -68
  1040. data/vendor/unity/test/expectdata/testsample_cmd.c +61 -61
  1041. data/vendor/unity/test/expectdata/testsample_def.c +57 -57
  1042. data/vendor/unity/test/expectdata/testsample_head1.c +55 -55
  1043. data/vendor/unity/test/expectdata/testsample_head1.h +15 -15
  1044. data/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -80
  1045. data/vendor/unity/test/expectdata/testsample_mock_def.c +76 -76
  1046. data/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -75
  1047. data/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -13
  1048. data/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -89
  1049. data/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -89
  1050. data/vendor/unity/test/expectdata/testsample_mock_param.c +77 -77
  1051. data/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -89
  1052. data/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -89
  1053. data/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -90
  1054. data/vendor/unity/test/expectdata/testsample_new1.c +67 -67
  1055. data/vendor/unity/test/expectdata/testsample_new2.c +70 -70
  1056. data/vendor/unity/test/expectdata/testsample_param.c +58 -58
  1057. data/vendor/unity/test/expectdata/testsample_run1.c +67 -67
  1058. data/vendor/unity/test/expectdata/testsample_run2.c +70 -70
  1059. data/vendor/unity/test/expectdata/testsample_yaml.c +71 -71
  1060. data/vendor/unity/test/rakefile +124 -125
  1061. data/vendor/unity/test/rakefile_helper.rb +269 -260
  1062. data/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -158
  1063. data/vendor/unity/test/targets/ansi.yml +49 -0
  1064. data/vendor/unity/test/targets/clang_file.yml +78 -78
  1065. data/vendor/unity/test/targets/clang_strict.yml +78 -78
  1066. data/vendor/unity/test/targets/gcc_32.yml +49 -49
  1067. data/vendor/unity/test/targets/gcc_64.yml +50 -50
  1068. data/vendor/unity/test/targets/gcc_auto_limits.yml +47 -47
  1069. data/vendor/unity/test/targets/gcc_auto_stdint.yml +59 -59
  1070. data/vendor/unity/test/targets/gcc_manual_math.yml +47 -47
  1071. data/vendor/unity/test/targets/hitech_picc18.yml +101 -101
  1072. data/vendor/unity/test/targets/iar_arm_v4.yml +90 -90
  1073. data/vendor/unity/test/targets/iar_arm_v5.yml +80 -80
  1074. data/vendor/unity/test/targets/iar_arm_v5_3.yml +80 -80
  1075. data/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +94 -94
  1076. data/vendor/unity/test/targets/iar_cortexm3_v5.yml +84 -84
  1077. data/vendor/unity/test/targets/iar_msp430.yml +95 -95
  1078. data/vendor/unity/test/targets/iar_sh2a_v6.yml +86 -86
  1079. data/vendor/unity/test/testdata/CException.h +11 -11
  1080. data/vendor/unity/test/testdata/Defs.h +8 -8
  1081. data/vendor/unity/test/testdata/cmock.h +14 -14
  1082. data/vendor/unity/test/testdata/mockMock.h +13 -13
  1083. data/vendor/unity/test/testdata/testRunnerGenerator.c +189 -186
  1084. data/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +70 -70
  1085. data/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +197 -195
  1086. data/vendor/unity/test/tests/test_generate_test_runner.rb +1268 -1252
  1087. data/vendor/unity/test/tests/testparameterized.c +171 -113
  1088. data/vendor/unity/test/tests/testunity.c +8168 -5371
  1089. metadata +201 -27
  1090. data/lib/ceedling/version.rb.erb +0 -15
  1091. data/vendor/c_exception/release/build.info +0 -2
  1092. data/vendor/c_exception/release/version.info +0 -2
  1093. data/vendor/cmock/release/build.info +0 -2
  1094. data/vendor/cmock/release/version.info +0 -2
  1095. data/vendor/cmock/vendor/c_exception/release/build.info +0 -2
  1096. data/vendor/cmock/vendor/c_exception/release/version.info +0 -2
  1097. data/vendor/cmock/vendor/unity/release/build.info +0 -2
  1098. data/vendor/cmock/vendor/unity/release/version.info +0 -2
  1099. data/vendor/unity/extras/fixture/readme.txt +0 -9
  1100. data/vendor/unity/release/build.info +0 -2
  1101. data/vendor/unity/release/version.info +0 -2
@@ -1,33 +1,33 @@
1
- require 'rubygems'
2
-
3
- task :default => [ :test ]
4
-
5
- require 'rake/testtask'
6
- Rake::TestTask.new do |t|
7
- t.libs << "test"
8
- t.test_files = FileList['test/**/*_test.rb']
9
- t.verbose = true
10
- end
11
-
12
-
13
- begin
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gemspec|
16
- $: << "lib"
17
- require 'diy.rb'
18
- gemspec.name = 'diy'
19
- gemspec.version = DIY::VERSION
20
- gemspec.summary = 'Constructor-based dependency injection container using YAML input.'
21
- gemspec.description = 'Constructor-based dependency injection container using YAML input.'
22
- gemspec.homepage = 'http://atomicobject.github.com/diy'
23
- gemspec.authors = 'Atomic Object'
24
- gemspec.email = 'github@atomicobject.com'
25
- gemspec.test_files = FileList['test/*_test.rb']
26
- gemspec.add_dependency 'constructor', '>= 1.0.0'
27
- end
28
-
29
- Jeweler::GemcutterTasks.new
30
-
31
- rescue LoadError
32
- puts "(jeweler not installed)"
33
- end
1
+ require 'rubygems'
2
+
3
+ task :default => [ :test ]
4
+
5
+ require 'rake/testtask'
6
+ Rake::TestTask.new do |t|
7
+ t.libs << "test"
8
+ t.test_files = FileList['test/**/*_test.rb']
9
+ t.verbose = true
10
+ end
11
+
12
+
13
+ begin
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gemspec|
16
+ $: << "lib"
17
+ require 'diy.rb'
18
+ gemspec.name = 'diy'
19
+ gemspec.version = DIY::VERSION
20
+ gemspec.summary = 'Constructor-based dependency injection container using YAML input.'
21
+ gemspec.description = 'Constructor-based dependency injection container using YAML input.'
22
+ gemspec.homepage = 'http://atomicobject.github.com/diy'
23
+ gemspec.authors = 'Atomic Object'
24
+ gemspec.email = 'github@atomicobject.com'
25
+ gemspec.test_files = FileList['test/*_test.rb']
26
+ gemspec.add_dependency 'constructor', '>= 1.0.0'
27
+ end
28
+
29
+ Jeweler::GemcutterTasks.new
30
+
31
+ rescue LoadError
32
+ puts "(jeweler not installed)"
33
+ end
@@ -1,9 +1,9 @@
1
- Sun Dec 2 19:59:16 EST 2007
2
- crosby
3
-
4
- Features from FRE's rogue diy.rb (inside Injection) that need to be
5
- incorporated into trunk:
6
-
7
- * auto_require
8
- * use_class_directly
9
-
1
+ Sun Dec 2 19:59:16 EST 2007
2
+ crosby
3
+
4
+ Features from FRE's rogue diy.rb (inside Injection) that need to be
5
+ incorporated into trunk:
6
+
7
+ * auto_require
8
+ * use_class_directly
9
+
@@ -1,131 +1,131 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{diy}
8
- s.version = "1.1.2"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Atomic Object"]
12
- s.date = %q{2009-12-01}
13
- s.description = %q{Constructor-based dependency injection container using YAML input.}
14
- s.email = %q{github@atomicobject.com}
15
- s.extra_rdoc_files = [
16
- "README.rdoc"
17
- ]
18
- s.files = [
19
- "History.txt",
20
- "README.rdoc",
21
- "Rakefile",
22
- "TODO.txt",
23
- "diy.gemspec",
24
- "lib/diy.rb",
25
- "lib/diy/factory.rb",
26
- "sample_code/car.rb",
27
- "sample_code/chassis.rb",
28
- "sample_code/diy_example.rb",
29
- "sample_code/engine.rb",
30
- "sample_code/objects.yml",
31
- "test/constructor.rb",
32
- "test/diy_test.rb",
33
- "test/factory_test.rb",
34
- "test/files/broken_construction.yml",
35
- "test/files/cat/cat.rb",
36
- "test/files/cat/extra_conflict.yml",
37
- "test/files/cat/heritage.rb",
38
- "test/files/cat/needs_input.yml",
39
- "test/files/cat/the_cat_lineage.rb",
40
- "test/files/dog/dog_model.rb",
41
- "test/files/dog/dog_presenter.rb",
42
- "test/files/dog/dog_view.rb",
43
- "test/files/dog/file_resolver.rb",
44
- "test/files/dog/other_thing.rb",
45
- "test/files/dog/simple.yml",
46
- "test/files/donkey/foo.rb",
47
- "test/files/donkey/foo/bar/qux.rb",
48
- "test/files/factory/beef.rb",
49
- "test/files/factory/dog.rb",
50
- "test/files/factory/factory.yml",
51
- "test/files/factory/farm/llama.rb",
52
- "test/files/factory/farm/pork.rb",
53
- "test/files/factory/kitten.rb",
54
- "test/files/fud/objects.yml",
55
- "test/files/fud/toy.rb",
56
- "test/files/functions/attached_things_builder.rb",
57
- "test/files/functions/invalid_method.yml",
58
- "test/files/functions/method_extractor.rb",
59
- "test/files/functions/nonsingleton_objects.yml",
60
- "test/files/functions/objects.yml",
61
- "test/files/functions/thing.rb",
62
- "test/files/functions/thing_builder.rb",
63
- "test/files/functions/things_builder.rb",
64
- "test/files/gnu/objects.yml",
65
- "test/files/gnu/thinger.rb",
66
- "test/files/goat/base.rb",
67
- "test/files/goat/can.rb",
68
- "test/files/goat/goat.rb",
69
- "test/files/goat/objects.yml",
70
- "test/files/goat/paper.rb",
71
- "test/files/goat/plane.rb",
72
- "test/files/goat/shirt.rb",
73
- "test/files/goat/wings.rb",
74
- "test/files/horse/holder_thing.rb",
75
- "test/files/horse/objects.yml",
76
- "test/files/namespace/animal/bird.rb",
77
- "test/files/namespace/animal/cat.rb",
78
- "test/files/namespace/animal/reptile/hardshell/turtle.rb",
79
- "test/files/namespace/animal/reptile/lizard.rb",
80
- "test/files/namespace/bad_module_specified.yml",
81
- "test/files/namespace/class_name_combine.yml",
82
- "test/files/namespace/hello.txt",
83
- "test/files/namespace/no_module_specified.yml",
84
- "test/files/namespace/objects.yml",
85
- "test/files/namespace/road.rb",
86
- "test/files/namespace/sky.rb",
87
- "test/files/namespace/subcontext.yml",
88
- "test/files/non_singleton/air.rb",
89
- "test/files/non_singleton/fat_cat.rb",
90
- "test/files/non_singleton/objects.yml",
91
- "test/files/non_singleton/pig.rb",
92
- "test/files/non_singleton/thread_spinner.rb",
93
- "test/files/non_singleton/tick.rb",
94
- "test/files/non_singleton/yard.rb",
95
- "test/files/yak/core_model.rb",
96
- "test/files/yak/core_presenter.rb",
97
- "test/files/yak/core_view.rb",
98
- "test/files/yak/data_source.rb",
99
- "test/files/yak/fringe_model.rb",
100
- "test/files/yak/fringe_presenter.rb",
101
- "test/files/yak/fringe_view.rb",
102
- "test/files/yak/giant_squid.rb",
103
- "test/files/yak/krill.rb",
104
- "test/files/yak/my_objects.yml",
105
- "test/files/yak/sub_sub_context_test.yml",
106
- "test/test_helper.rb"
107
- ]
108
- s.homepage = %q{http://atomicobject.github.com/diy}
109
- s.rdoc_options = ["--charset=UTF-8"]
110
- s.require_paths = ["lib"]
111
- s.rubygems_version = %q{1.3.5}
112
- s.summary = %q{Constructor-based dependency injection container using YAML input.}
113
- s.test_files = [
114
- "test/diy_test.rb",
115
- "test/factory_test.rb"
116
- ]
117
-
118
- if s.respond_to? :specification_version then
119
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
120
- s.specification_version = 3
121
-
122
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
123
- s.add_runtime_dependency(%q<constructor>, [">= 1.0.0"])
124
- else
125
- s.add_dependency(%q<constructor>, [">= 1.0.0"])
126
- end
127
- else
128
- s.add_dependency(%q<constructor>, [">= 1.0.0"])
129
- end
130
- end
131
-
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{diy}
8
+ s.version = "1.1.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Atomic Object"]
12
+ s.date = %q{2009-12-01}
13
+ s.description = %q{Constructor-based dependency injection container using YAML input.}
14
+ s.email = %q{github@atomicobject.com}
15
+ s.extra_rdoc_files = [
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ "History.txt",
20
+ "README.rdoc",
21
+ "Rakefile",
22
+ "TODO.txt",
23
+ "diy.gemspec",
24
+ "lib/diy.rb",
25
+ "lib/diy/factory.rb",
26
+ "sample_code/car.rb",
27
+ "sample_code/chassis.rb",
28
+ "sample_code/diy_example.rb",
29
+ "sample_code/engine.rb",
30
+ "sample_code/objects.yml",
31
+ "test/constructor.rb",
32
+ "test/diy_test.rb",
33
+ "test/factory_test.rb",
34
+ "test/files/broken_construction.yml",
35
+ "test/files/cat/cat.rb",
36
+ "test/files/cat/extra_conflict.yml",
37
+ "test/files/cat/heritage.rb",
38
+ "test/files/cat/needs_input.yml",
39
+ "test/files/cat/the_cat_lineage.rb",
40
+ "test/files/dog/dog_model.rb",
41
+ "test/files/dog/dog_presenter.rb",
42
+ "test/files/dog/dog_view.rb",
43
+ "test/files/dog/file_resolver.rb",
44
+ "test/files/dog/other_thing.rb",
45
+ "test/files/dog/simple.yml",
46
+ "test/files/donkey/foo.rb",
47
+ "test/files/donkey/foo/bar/qux.rb",
48
+ "test/files/factory/beef.rb",
49
+ "test/files/factory/dog.rb",
50
+ "test/files/factory/factory.yml",
51
+ "test/files/factory/farm/llama.rb",
52
+ "test/files/factory/farm/pork.rb",
53
+ "test/files/factory/kitten.rb",
54
+ "test/files/fud/objects.yml",
55
+ "test/files/fud/toy.rb",
56
+ "test/files/functions/attached_things_builder.rb",
57
+ "test/files/functions/invalid_method.yml",
58
+ "test/files/functions/method_extractor.rb",
59
+ "test/files/functions/nonsingleton_objects.yml",
60
+ "test/files/functions/objects.yml",
61
+ "test/files/functions/thing.rb",
62
+ "test/files/functions/thing_builder.rb",
63
+ "test/files/functions/things_builder.rb",
64
+ "test/files/gnu/objects.yml",
65
+ "test/files/gnu/thinger.rb",
66
+ "test/files/goat/base.rb",
67
+ "test/files/goat/can.rb",
68
+ "test/files/goat/goat.rb",
69
+ "test/files/goat/objects.yml",
70
+ "test/files/goat/paper.rb",
71
+ "test/files/goat/plane.rb",
72
+ "test/files/goat/shirt.rb",
73
+ "test/files/goat/wings.rb",
74
+ "test/files/horse/holder_thing.rb",
75
+ "test/files/horse/objects.yml",
76
+ "test/files/namespace/animal/bird.rb",
77
+ "test/files/namespace/animal/cat.rb",
78
+ "test/files/namespace/animal/reptile/hardshell/turtle.rb",
79
+ "test/files/namespace/animal/reptile/lizard.rb",
80
+ "test/files/namespace/bad_module_specified.yml",
81
+ "test/files/namespace/class_name_combine.yml",
82
+ "test/files/namespace/hello.txt",
83
+ "test/files/namespace/no_module_specified.yml",
84
+ "test/files/namespace/objects.yml",
85
+ "test/files/namespace/road.rb",
86
+ "test/files/namespace/sky.rb",
87
+ "test/files/namespace/subcontext.yml",
88
+ "test/files/non_singleton/air.rb",
89
+ "test/files/non_singleton/fat_cat.rb",
90
+ "test/files/non_singleton/objects.yml",
91
+ "test/files/non_singleton/pig.rb",
92
+ "test/files/non_singleton/thread_spinner.rb",
93
+ "test/files/non_singleton/tick.rb",
94
+ "test/files/non_singleton/yard.rb",
95
+ "test/files/yak/core_model.rb",
96
+ "test/files/yak/core_presenter.rb",
97
+ "test/files/yak/core_view.rb",
98
+ "test/files/yak/data_source.rb",
99
+ "test/files/yak/fringe_model.rb",
100
+ "test/files/yak/fringe_presenter.rb",
101
+ "test/files/yak/fringe_view.rb",
102
+ "test/files/yak/giant_squid.rb",
103
+ "test/files/yak/krill.rb",
104
+ "test/files/yak/my_objects.yml",
105
+ "test/files/yak/sub_sub_context_test.yml",
106
+ "test/test_helper.rb"
107
+ ]
108
+ s.homepage = %q{http://atomicobject.github.com/diy}
109
+ s.rdoc_options = ["--charset=UTF-8"]
110
+ s.require_paths = ["lib"]
111
+ s.rubygems_version = %q{1.3.5}
112
+ s.summary = %q{Constructor-based dependency injection container using YAML input.}
113
+ s.test_files = [
114
+ "test/diy_test.rb",
115
+ "test/factory_test.rb"
116
+ ]
117
+
118
+ if s.respond_to? :specification_version then
119
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
120
+ s.specification_version = 3
121
+
122
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
123
+ s.add_runtime_dependency(%q<constructor>, [">= 1.0.0"])
124
+ else
125
+ s.add_dependency(%q<constructor>, [">= 1.0.0"])
126
+ end
127
+ else
128
+ s.add_dependency(%q<constructor>, [">= 1.0.0"])
129
+ end
130
+ end
131
+
@@ -1,403 +1,403 @@
1
- require 'diy/factory.rb'
2
- require 'yaml'
3
- require 'set'
4
-
5
- module DIY #:nodoc:#
6
- VERSION = '1.1.2'
7
- class Context
8
-
9
- class << self
10
- # Enable / disable automatic requiring of libraries. Default: true
11
- attr_accessor :auto_require
12
- end
13
- @auto_require = true
14
-
15
- # Accepts a Hash defining the object context (usually loaded from objects.yml), and an additional
16
- # Hash containing objects to inject into the context.
17
- def initialize(context_hash, extra_inputs={})
18
- raise "Nil context hash" unless context_hash
19
- raise "Need a hash" unless context_hash.kind_of?(Hash)
20
- [ "[]", "keys" ].each do |mname|
21
- unless extra_inputs.respond_to?(mname)
22
- raise "Extra inputs must respond to hash-like [] operator and methods #keys and #each"
23
- end
24
- end
25
-
26
- # store extra inputs
27
- if extra_inputs.kind_of?(Hash)
28
- @extra_inputs= {}
29
- extra_inputs.each { |k,v| @extra_inputs[k.to_s] = v } # smooth out the names
30
- else
31
- @extra_inputs = extra_inputs
32
- end
33
-
34
- collect_object_and_subcontext_defs context_hash
35
-
36
- # init the cache
37
- @cache = {}
38
- @cache['this_context'] = self
39
- end
40
-
41
-
42
- # Convenience: create a new DIY::Context by loading from a String (or open file handle.)
43
- def self.from_yaml(io_or_string, extra_inputs={})
44
- raise "nil input to YAML" unless io_or_string
45
- Context.new(YAML.load(io_or_string), extra_inputs)
46
- end
47
-
48
- # Convenience: create a new DIY::Context by loading from the named file.
49
- def self.from_file(fname, extra_inputs={})
50
- raise "nil file name" unless fname
51
- self.from_yaml(File.read(fname), extra_inputs)
52
- end
53
-
54
- # Return a reference to the object named. If necessary, the object will
55
- # be instantiated on first use. If the object is non-singleton, a new
56
- # object will be produced each time.
57
- def get_object(obj_name)
58
- key = obj_name.to_s
59
- obj = @cache[key]
60
- unless obj
61
- if extra_inputs_has(key)
62
- obj = @extra_inputs[key]
63
- else
64
- case @defs[key]
65
- when MethodDef
66
- obj = construct_method(key)
67
- when FactoryDef
68
- obj = construct_factory(key)
69
- @cache[key] = obj
70
- else
71
- obj = construct_object(key)
72
- @cache[key] = obj if @defs[key].singleton?
73
- end
74
- end
75
- end
76
- obj
77
- end
78
- alias :[] :get_object
79
-
80
- # Inject a named object into the Context. This must be done before the Context has instantiated the
81
- # object in question.
82
- def set_object(obj_name,obj)
83
- key = obj_name.to_s
84
- raise "object '#{key}' already exists in context" if @cache.keys.include?(key)
85
- @cache[key] = obj
86
- end
87
- alias :[]= :set_object
88
-
89
- # Provide a listing of object names
90
- def keys
91
- (@defs.keys.to_set + @extra_inputs.keys.to_set).to_a
92
- end
93
-
94
- # Instantiate and yield the named subcontext
95
- def within(sub_context_name)
96
- # Find the subcontext definitaion:
97
- context_def = @sub_context_defs[sub_context_name.to_s]
98
- raise "No sub-context named #{sub_context_name}" unless context_def
99
- # Instantiate a new context using self as parent:
100
- context = Context.new( context_def, self )
101
-
102
- yield context
103
- end
104
-
105
- # Returns true if the context contains an object with the given name
106
- def contains_object(obj_name)
107
- key = obj_name.to_s
108
- @defs.keys.member?(key) or extra_inputs_has(key)
109
- end
110
-
111
- # Every top level object in the Context is instantiated. This is especially useful for
112
- # systems that have "floating observers"... objects that are never directly accessed, who
113
- # would thus never be instantiated by coincedence. This does not build any subcontexts
114
- # that may exist.
115
- def build_everything
116
- @defs.keys.each { |k| self[k] }
117
- end
118
- alias :build_all :build_everything
119
- alias :preinstantiate_singletons :build_everything
120
-
121
- private
122
-
123
- def collect_object_and_subcontext_defs(context_hash)
124
- @defs = {}
125
- @sub_context_defs = {}
126
- get_defs_from context_hash
127
- end
128
-
129
- def get_defs_from(hash, namespace=nil)
130
- hash.each do |name,info|
131
- # we modify the info hash below so it's important to have a new
132
- # instance to play with
133
- info = info.dup if info
134
-
135
- # see if we are building a factory
136
- if info and info.has_key?('builds')
137
- unless info.has_key?('auto_require')
138
- info['auto_require'] = self.class.auto_require
139
- end
140
-
141
- if namespace
142
- info['builds'] = namespace.build_classname(info['builds'])
143
- end
144
- @defs[name] = FactoryDef.new({:name => name,
145
- :target => info['builds'],
146
- :library => info['library'],
147
- :auto_require => info['auto_require']})
148
- next
149
- end
150
-
151
- name = name.to_s
152
- case name
153
- when /^\+/
154
- # subcontext
155
- @sub_context_defs[name.gsub(/^\+/,'')] = info
156
-
157
- when /^using_namespace/
158
- # namespace: use a module(s) prefix for the classname of contained object defs
159
- # NOTE: namespacing is NOT scope... it's just a convenient way to setup class names for a group of objects.
160
- get_defs_from info, parse_namespace(name)
161
- when /^method\s/
162
- key_name = name.gsub(/^method\s/, "")
163
- @defs[key_name] = MethodDef.new(:name => key_name,
164
- :object => info['object'],
165
- :method => info['method'],
166
- :attach => info['attach'])
167
- else
168
- # Normal object def
169
- info ||= {}
170
- if extra_inputs_has(name)
171
- raise ConstructionError.new(name, "Object definition conflicts with parent context")
172
- end
173
- unless info.has_key?('auto_require')
174
- info['auto_require'] = self.class.auto_require
175
- end
176
- if namespace
177
- if info['class']
178
- info['class'] = namespace.build_classname(info['class'])
179
- else
180
- info['class'] = namespace.build_classname(name)
181
- end
182
- end
183
-
184
- @defs[name] = ObjectDef.new(:name => name, :info => info)
185
-
186
- end
187
- end
188
- end
189
-
190
- def construct_method(key)
191
- method_definition = @defs[key]
192
- object = get_object(method_definition.object)
193
- method = object.method(method_definition.method)
194
-
195
- unless method_definition.attach.nil?
196
- instance_var_name = "@__diy_#{method_definition.object}"
197
-
198
- method_definition.attach.each do |object_key|
199
- get_object(object_key).instance_eval do
200
- instance_variable_set(instance_var_name, object)
201
- eval %|def #{key}(*args)
202
- #{instance_var_name}.#{method_definition.method}(*args)
203
- end|
204
- end
205
- end
206
- end
207
-
208
- return method
209
- rescue Exception => oops
210
- build_and_raise_construction_error(key, oops)
211
- end
212
-
213
- def construct_object(key)
214
- # Find the object definition
215
- obj_def = @defs[key]
216
- raise "No object definition for '#{key}'" unless obj_def
217
- # If object def mentions a library, load it
218
- require obj_def.library if obj_def.library
219
-
220
- # Resolve all components for the object
221
- arg_hash = {}
222
- obj_def.components.each do |name,value|
223
- case value
224
- when Lookup
225
- arg_hash[name.to_sym] = get_object(value.name)
226
- when StringValue
227
- arg_hash[name.to_sym] = value.literal_value
228
- else
229
- raise "Cannot cope with component definition '#{value.inspect}'"
230
- end
231
- end
232
- # Get a reference to the class for the object
233
- big_c = get_class_for_name_with_module_delimeters(obj_def.class_name)
234
- # Make and return the instance
235
- if obj_def.use_class_directly?
236
- return big_c
237
- elsif arg_hash.keys.size > 0
238
- return big_c.new(arg_hash)
239
- else
240
- return big_c.new
241
- end
242
- rescue Exception => oops
243
- build_and_raise_construction_error(key, oops)
244
- end
245
-
246
- def build_and_raise_construction_error(key, oops)
247
- cerr = ConstructionError.new(key,oops)
248
- cerr.set_backtrace(oops.backtrace)
249
- raise cerr
250
- end
251
-
252
- def get_class_for_name_with_module_delimeters(class_name)
253
- class_name.split(/::/).inject(Object) do |mod,const_name| mod.const_get(const_name) end
254
- end
255
-
256
- def extra_inputs_has(key)
257
- if key.nil? or key.strip == ''
258
- raise ArgumentError.new("Cannot lookup objects with nil keys")
259
- end
260
- @extra_inputs.keys.member?(key) or @extra_inputs.keys.member?(key.to_sym)
261
- end
262
-
263
- def parse_namespace(str)
264
- Namespace.new(str)
265
- end
266
- end
267
-
268
- class Namespace #:nodoc:#
269
- def initialize(str)
270
- # 'using_namespace Animal Reptile'
271
- parts = str.split(/\s+/)
272
- raise "Namespace definitions must begin with 'using_namespace'" unless parts[0] == 'using_namespace'
273
- parts.shift
274
-
275
- if parts.length > 0 and parts[0] =~ /::/
276
- parts = parts[0].split(/::/)
277
- end
278
-
279
- raise NamespaceError, "Namespace needs to indicate a module" if parts.empty?
280
-
281
- @module_nest = parts
282
- end
283
-
284
- def build_classname(name)
285
- [ @module_nest, Infl.camelize(name) ].flatten.join("::")
286
- end
287
- end
288
-
289
- class Lookup #:nodoc:
290
- attr_reader :name
291
- def initialize(obj_name)
292
- @name = obj_name
293
- end
294
- end
295
-
296
- class MethodDef #:nodoc:
297
- attr_accessor :name, :object, :method, :attach
298
-
299
- def initialize(opts)
300
- @name, @object, @method, @attach = opts[:name], opts[:object], opts[:method], opts[:attach]
301
- end
302
- end
303
-
304
- class ObjectDef #:nodoc:
305
- attr_accessor :name, :class_name, :library, :components
306
- def initialize(opts)
307
- name = opts[:name]
308
- raise "Can't make an ObjectDef without a name" if name.nil?
309
-
310
- info = opts[:info] || {}
311
- info = info.clone
312
-
313
- @components = {}
314
-
315
- # Object name
316
- @name = name
317
-
318
- # Class name
319
- @class_name = info.delete 'class'
320
- @class_name ||= info.delete 'type'
321
- @class_name ||= Infl.camelize(@name)
322
-
323
- # Auto Require
324
- @auto_require = info.delete 'auto_require'
325
-
326
- # Library
327
- @library = info.delete 'library'
328
- @library ||= info.delete 'lib'
329
- @library ||= Infl.underscore(@class_name) if @auto_require
330
-
331
- # Use Class Directly
332
- @use_class_directly = info.delete 'use_class_directly'
333
-
334
- # Auto-compose
335
- compose = info.delete 'compose'
336
- if compose
337
- case compose
338
- when Array
339
- auto_names = compose.map { |x| x.to_s }
340
- when String
341
- auto_names = compose.split(',').map { |x| x.to_s.strip }
342
- when Symbol
343
- auto_names = [ compose.to_s ]
344
- else
345
- raise "Cannot auto compose object #{@name}, bad 'compose' format: #{compose.inspect}"
346
- end
347
- end
348
- auto_names ||= []
349
- auto_names.each do |cname|
350
- @components[cname] = Lookup.new(cname)
351
- end
352
-
353
- # Singleton status
354
- if info['singleton'].nil?
355
- @singleton = true
356
- else
357
- @singleton = info['singleton']
358
- end
359
- info.delete 'singleton'
360
-
361
- # Remaining keys
362
- info.each do |key,val|
363
- @components[key.to_s] = Lookup.new(val.to_s)
364
- end
365
-
366
- end
367
-
368
- def singleton?
369
- @singleton
370
- end
371
-
372
- def use_class_directly?
373
- @use_class_directly == true
374
- end
375
-
376
- end
377
-
378
- class ConstructionError < RuntimeError #:nodoc:#
379
- def initialize(object_name, cause=nil)
380
- object_name = object_name
381
- cause = cause
382
- m = "Failed to construct '#{object_name}'"
383
- if cause
384
- m << "\n ...caused by:\n >>> #{cause}"
385
- end
386
- super m
387
- end
388
- end
389
-
390
- class NamespaceError < RuntimeError #:nodoc:#
391
- end
392
-
393
- module Infl #:nodoc:#
394
- # Ganked this from Inflector:
395
- def self.camelize(lower_case_and_underscored_word)
396
- lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
397
- end
398
- # Ganked this from Inflector:
399
- def self.underscore(camel_cased_word)
400
- camel_cased_word.to_s.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase
401
- end
402
- end
403
- end
1
+ require 'diy/factory.rb'
2
+ require 'yaml'
3
+ require 'set'
4
+
5
+ module DIY #:nodoc:#
6
+ VERSION = '1.1.2'
7
+ class Context
8
+
9
+ class << self
10
+ # Enable / disable automatic requiring of libraries. Default: true
11
+ attr_accessor :auto_require
12
+ end
13
+ @auto_require = true
14
+
15
+ # Accepts a Hash defining the object context (usually loaded from objects.yml), and an additional
16
+ # Hash containing objects to inject into the context.
17
+ def initialize(context_hash, extra_inputs={})
18
+ raise "Nil context hash" unless context_hash
19
+ raise "Need a hash" unless context_hash.kind_of?(Hash)
20
+ [ "[]", "keys" ].each do |mname|
21
+ unless extra_inputs.respond_to?(mname)
22
+ raise "Extra inputs must respond to hash-like [] operator and methods #keys and #each"
23
+ end
24
+ end
25
+
26
+ # store extra inputs
27
+ if extra_inputs.kind_of?(Hash)
28
+ @extra_inputs= {}
29
+ extra_inputs.each { |k,v| @extra_inputs[k.to_s] = v } # smooth out the names
30
+ else
31
+ @extra_inputs = extra_inputs
32
+ end
33
+
34
+ collect_object_and_subcontext_defs context_hash
35
+
36
+ # init the cache
37
+ @cache = {}
38
+ @cache['this_context'] = self
39
+ end
40
+
41
+
42
+ # Convenience: create a new DIY::Context by loading from a String (or open file handle.)
43
+ def self.from_yaml(io_or_string, extra_inputs={})
44
+ raise "nil input to YAML" unless io_or_string
45
+ Context.new(YAML.load(io_or_string), extra_inputs)
46
+ end
47
+
48
+ # Convenience: create a new DIY::Context by loading from the named file.
49
+ def self.from_file(fname, extra_inputs={})
50
+ raise "nil file name" unless fname
51
+ self.from_yaml(File.read(fname), extra_inputs)
52
+ end
53
+
54
+ # Return a reference to the object named. If necessary, the object will
55
+ # be instantiated on first use. If the object is non-singleton, a new
56
+ # object will be produced each time.
57
+ def get_object(obj_name)
58
+ key = obj_name.to_s
59
+ obj = @cache[key]
60
+ unless obj
61
+ if extra_inputs_has(key)
62
+ obj = @extra_inputs[key]
63
+ else
64
+ case @defs[key]
65
+ when MethodDef
66
+ obj = construct_method(key)
67
+ when FactoryDef
68
+ obj = construct_factory(key)
69
+ @cache[key] = obj
70
+ else
71
+ obj = construct_object(key)
72
+ @cache[key] = obj if @defs[key].singleton?
73
+ end
74
+ end
75
+ end
76
+ obj
77
+ end
78
+ alias :[] :get_object
79
+
80
+ # Inject a named object into the Context. This must be done before the Context has instantiated the
81
+ # object in question.
82
+ def set_object(obj_name,obj)
83
+ key = obj_name.to_s
84
+ raise "object '#{key}' already exists in context" if @cache.keys.include?(key)
85
+ @cache[key] = obj
86
+ end
87
+ alias :[]= :set_object
88
+
89
+ # Provide a listing of object names
90
+ def keys
91
+ (@defs.keys.to_set + @extra_inputs.keys.to_set).to_a
92
+ end
93
+
94
+ # Instantiate and yield the named subcontext
95
+ def within(sub_context_name)
96
+ # Find the subcontext definitaion:
97
+ context_def = @sub_context_defs[sub_context_name.to_s]
98
+ raise "No sub-context named #{sub_context_name}" unless context_def
99
+ # Instantiate a new context using self as parent:
100
+ context = Context.new( context_def, self )
101
+
102
+ yield context
103
+ end
104
+
105
+ # Returns true if the context contains an object with the given name
106
+ def contains_object(obj_name)
107
+ key = obj_name.to_s
108
+ @defs.keys.member?(key) or extra_inputs_has(key)
109
+ end
110
+
111
+ # Every top level object in the Context is instantiated. This is especially useful for
112
+ # systems that have "floating observers"... objects that are never directly accessed, who
113
+ # would thus never be instantiated by coincedence. This does not build any subcontexts
114
+ # that may exist.
115
+ def build_everything
116
+ @defs.keys.each { |k| self[k] }
117
+ end
118
+ alias :build_all :build_everything
119
+ alias :preinstantiate_singletons :build_everything
120
+
121
+ private
122
+
123
+ def collect_object_and_subcontext_defs(context_hash)
124
+ @defs = {}
125
+ @sub_context_defs = {}
126
+ get_defs_from context_hash
127
+ end
128
+
129
+ def get_defs_from(hash, namespace=nil)
130
+ hash.each do |name,info|
131
+ # we modify the info hash below so it's important to have a new
132
+ # instance to play with
133
+ info = info.dup if info
134
+
135
+ # see if we are building a factory
136
+ if info and info.has_key?('builds')
137
+ unless info.has_key?('auto_require')
138
+ info['auto_require'] = self.class.auto_require
139
+ end
140
+
141
+ if namespace
142
+ info['builds'] = namespace.build_classname(info['builds'])
143
+ end
144
+ @defs[name] = FactoryDef.new({:name => name,
145
+ :target => info['builds'],
146
+ :library => info['library'],
147
+ :auto_require => info['auto_require']})
148
+ next
149
+ end
150
+
151
+ name = name.to_s
152
+ case name
153
+ when /^\+/
154
+ # subcontext
155
+ @sub_context_defs[name.gsub(/^\+/,'')] = info
156
+
157
+ when /^using_namespace/
158
+ # namespace: use a module(s) prefix for the classname of contained object defs
159
+ # NOTE: namespacing is NOT scope... it's just a convenient way to setup class names for a group of objects.
160
+ get_defs_from info, parse_namespace(name)
161
+ when /^method\s/
162
+ key_name = name.gsub(/^method\s/, "")
163
+ @defs[key_name] = MethodDef.new(:name => key_name,
164
+ :object => info['object'],
165
+ :method => info['method'],
166
+ :attach => info['attach'])
167
+ else
168
+ # Normal object def
169
+ info ||= {}
170
+ if extra_inputs_has(name)
171
+ raise ConstructionError.new(name, "Object definition conflicts with parent context")
172
+ end
173
+ unless info.has_key?('auto_require')
174
+ info['auto_require'] = self.class.auto_require
175
+ end
176
+ if namespace
177
+ if info['class']
178
+ info['class'] = namespace.build_classname(info['class'])
179
+ else
180
+ info['class'] = namespace.build_classname(name)
181
+ end
182
+ end
183
+
184
+ @defs[name] = ObjectDef.new(:name => name, :info => info)
185
+
186
+ end
187
+ end
188
+ end
189
+
190
+ def construct_method(key)
191
+ method_definition = @defs[key]
192
+ object = get_object(method_definition.object)
193
+ method = object.method(method_definition.method)
194
+
195
+ unless method_definition.attach.nil?
196
+ instance_var_name = "@__diy_#{method_definition.object}"
197
+
198
+ method_definition.attach.each do |object_key|
199
+ get_object(object_key).instance_eval do
200
+ instance_variable_set(instance_var_name, object)
201
+ eval %|def #{key}(*args)
202
+ #{instance_var_name}.#{method_definition.method}(*args)
203
+ end|
204
+ end
205
+ end
206
+ end
207
+
208
+ return method
209
+ rescue Exception => oops
210
+ build_and_raise_construction_error(key, oops)
211
+ end
212
+
213
+ def construct_object(key)
214
+ # Find the object definition
215
+ obj_def = @defs[key]
216
+ raise "No object definition for '#{key}'" unless obj_def
217
+ # If object def mentions a library, load it
218
+ require obj_def.library if obj_def.library
219
+
220
+ # Resolve all components for the object
221
+ arg_hash = {}
222
+ obj_def.components.each do |name,value|
223
+ case value
224
+ when Lookup
225
+ arg_hash[name.to_sym] = get_object(value.name)
226
+ when StringValue
227
+ arg_hash[name.to_sym] = value.literal_value
228
+ else
229
+ raise "Cannot cope with component definition '#{value.inspect}'"
230
+ end
231
+ end
232
+ # Get a reference to the class for the object
233
+ big_c = get_class_for_name_with_module_delimeters(obj_def.class_name)
234
+ # Make and return the instance
235
+ if obj_def.use_class_directly?
236
+ return big_c
237
+ elsif arg_hash.keys.size > 0
238
+ return big_c.new(arg_hash)
239
+ else
240
+ return big_c.new
241
+ end
242
+ rescue Exception => oops
243
+ build_and_raise_construction_error(key, oops)
244
+ end
245
+
246
+ def build_and_raise_construction_error(key, oops)
247
+ cerr = ConstructionError.new(key,oops)
248
+ cerr.set_backtrace(oops.backtrace)
249
+ raise cerr
250
+ end
251
+
252
+ def get_class_for_name_with_module_delimeters(class_name)
253
+ class_name.split(/::/).inject(Object) do |mod,const_name| mod.const_get(const_name) end
254
+ end
255
+
256
+ def extra_inputs_has(key)
257
+ if key.nil? or key.strip == ''
258
+ raise ArgumentError.new("Cannot lookup objects with nil keys")
259
+ end
260
+ @extra_inputs.keys.member?(key) or @extra_inputs.keys.member?(key.to_sym)
261
+ end
262
+
263
+ def parse_namespace(str)
264
+ Namespace.new(str)
265
+ end
266
+ end
267
+
268
+ class Namespace #:nodoc:#
269
+ def initialize(str)
270
+ # 'using_namespace Animal Reptile'
271
+ parts = str.split(/\s+/)
272
+ raise "Namespace definitions must begin with 'using_namespace'" unless parts[0] == 'using_namespace'
273
+ parts.shift
274
+
275
+ if parts.length > 0 and parts[0] =~ /::/
276
+ parts = parts[0].split(/::/)
277
+ end
278
+
279
+ raise NamespaceError, "Namespace needs to indicate a module" if parts.empty?
280
+
281
+ @module_nest = parts
282
+ end
283
+
284
+ def build_classname(name)
285
+ [ @module_nest, Infl.camelize(name) ].flatten.join("::")
286
+ end
287
+ end
288
+
289
+ class Lookup #:nodoc:
290
+ attr_reader :name
291
+ def initialize(obj_name)
292
+ @name = obj_name
293
+ end
294
+ end
295
+
296
+ class MethodDef #:nodoc:
297
+ attr_accessor :name, :object, :method, :attach
298
+
299
+ def initialize(opts)
300
+ @name, @object, @method, @attach = opts[:name], opts[:object], opts[:method], opts[:attach]
301
+ end
302
+ end
303
+
304
+ class ObjectDef #:nodoc:
305
+ attr_accessor :name, :class_name, :library, :components
306
+ def initialize(opts)
307
+ name = opts[:name]
308
+ raise "Can't make an ObjectDef without a name" if name.nil?
309
+
310
+ info = opts[:info] || {}
311
+ info = info.clone
312
+
313
+ @components = {}
314
+
315
+ # Object name
316
+ @name = name
317
+
318
+ # Class name
319
+ @class_name = info.delete 'class'
320
+ @class_name ||= info.delete 'type'
321
+ @class_name ||= Infl.camelize(@name)
322
+
323
+ # Auto Require
324
+ @auto_require = info.delete 'auto_require'
325
+
326
+ # Library
327
+ @library = info.delete 'library'
328
+ @library ||= info.delete 'lib'
329
+ @library ||= Infl.underscore(@class_name) if @auto_require
330
+
331
+ # Use Class Directly
332
+ @use_class_directly = info.delete 'use_class_directly'
333
+
334
+ # Auto-compose
335
+ compose = info.delete 'compose'
336
+ if compose
337
+ case compose
338
+ when Array
339
+ auto_names = compose.map { |x| x.to_s }
340
+ when String
341
+ auto_names = compose.split(',').map { |x| x.to_s.strip }
342
+ when Symbol
343
+ auto_names = [ compose.to_s ]
344
+ else
345
+ raise "Cannot auto compose object #{@name}, bad 'compose' format: #{compose.inspect}"
346
+ end
347
+ end
348
+ auto_names ||= []
349
+ auto_names.each do |cname|
350
+ @components[cname] = Lookup.new(cname)
351
+ end
352
+
353
+ # Singleton status
354
+ if info['singleton'].nil?
355
+ @singleton = true
356
+ else
357
+ @singleton = info['singleton']
358
+ end
359
+ info.delete 'singleton'
360
+
361
+ # Remaining keys
362
+ info.each do |key,val|
363
+ @components[key.to_s] = Lookup.new(val.to_s)
364
+ end
365
+
366
+ end
367
+
368
+ def singleton?
369
+ @singleton
370
+ end
371
+
372
+ def use_class_directly?
373
+ @use_class_directly == true
374
+ end
375
+
376
+ end
377
+
378
+ class ConstructionError < RuntimeError #:nodoc:#
379
+ def initialize(object_name, cause=nil)
380
+ object_name = object_name
381
+ cause = cause
382
+ m = "Failed to construct '#{object_name}'"
383
+ if cause
384
+ m << "\n ...caused by:\n >>> #{cause}"
385
+ end
386
+ super m
387
+ end
388
+ end
389
+
390
+ class NamespaceError < RuntimeError #:nodoc:#
391
+ end
392
+
393
+ module Infl #:nodoc:#
394
+ # Ganked this from Inflector:
395
+ def self.camelize(lower_case_and_underscored_word)
396
+ lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
397
+ end
398
+ # Ganked this from Inflector:
399
+ def self.underscore(camel_cased_word)
400
+ camel_cased_word.to_s.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase
401
+ end
402
+ end
403
+ end