ceedling 0.28.3 → 0.29.0

Sign up to get free protection for your applications and to get access to all the features.
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,9 +1,9 @@
1
- source "http://rubygems.org/"
2
-
3
- gem "bundler", "~> 1.1.rc.7"
4
- gem "rake", ">= 0.9.2.2"
5
-
6
- gem "minitest"
7
- gem "require_all"
8
- gem "constructor"
9
- gem "diy"
1
+ source "http://rubygems.org/"
2
+
3
+ gem "bundler", "~> 1.1.rc.7"
4
+ gem "rake", ">= 0.9.2.2"
5
+
6
+ gem "minitest"
7
+ gem "require_all"
8
+ gem "constructor"
9
+ gem "diy"
@@ -1,19 +1,19 @@
1
- Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is
8
- furnished to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in
11
- all copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1
+ Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  THE SOFTWARE.
@@ -1,34 +1,34 @@
1
- CMock - Mock/stub generator for C
2
- =================================
3
-
4
- [![CMock Build Status](https://api.travis-ci.org/ThrowTheSwitch/CMock.png?branch=master)](https://travis-ci.org/ThrowTheSwitch/CMock)
5
-
6
- Getting Started
7
- ================
8
-
9
- If you're using Ceedling, there is no need to install CMock. It will handle it for you.
10
- For everyone else, the simplest way is to grab it off github. You can also download it
11
- as a zip if you prefer. The Github method looks something like this:
12
-
13
- > git clone --recursive https://github.com/throwtheswitch/cmock.git
14
- > cd cmock
15
- > bundle install # Ensures you have all RubyGems needed
16
-
17
- If you plan to help with the development of CMock (or just want to verify that it can
18
- perform its self tests on your system) then you can enter the test directory and then
19
- ask it to test:
20
-
21
- > cd test
22
- > rake # Run all CMock self tests
23
-
24
- API Documentation
25
- =================
26
-
27
- * Not sure what you're doing?
28
- * [View docs/CMock_Summary.md](docs/CMock_Summary.md)
29
- * Interested in our MIT-style license?
30
- * [View docs/license.txt](docs/license.txt)
31
- * Are there examples?
32
- * They are all in [/examples](examples/)
33
- * Any other resources to check out?
34
- * Definitely! Check out our developer portal on [ThrowTheSwitch.org](http://throwtheswitch.org)
1
+ CMock - Mock/stub generator for C
2
+ =================================
3
+
4
+ [![CMock Build Status](https://api.travis-ci.org/ThrowTheSwitch/CMock.png?branch=master)](https://travis-ci.org/ThrowTheSwitch/CMock)
5
+
6
+ Getting Started
7
+ ================
8
+
9
+ If you're using Ceedling, there is no need to install CMock. It will handle it for you.
10
+ For everyone else, the simplest way is to grab it off github. You can also download it
11
+ as a zip if you prefer. The Github method looks something like this:
12
+
13
+ > git clone --recursive https://github.com/throwtheswitch/cmock.git
14
+ > cd cmock
15
+ > bundle install # Ensures you have all RubyGems needed
16
+
17
+ If you plan to help with the development of CMock (or just want to verify that it can
18
+ perform its self tests on your system) then you can enter the test directory and then
19
+ ask it to test:
20
+
21
+ > cd test
22
+ > rake # Run all CMock self tests
23
+
24
+ API Documentation
25
+ =================
26
+
27
+ * Not sure what you're doing?
28
+ * [View docs/CMock_Summary.md](docs/CMock_Summary.md)
29
+ * Interested in our MIT-style license?
30
+ * [View docs/license.txt](docs/license.txt)
31
+ * Are there examples?
32
+ * They are all in [/examples](examples/)
33
+ * Any other resources to check out?
34
+ * Definitely! Check out our developer portal on [ThrowTheSwitch.org](http://throwtheswitch.org)
@@ -1,14 +1,14 @@
1
- # ==========================================
2
- # CMock Project - Automatic Mock Generation for C
3
- # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
- # [Released under MIT License. Please refer to license.txt for details]
5
- # ==========================================
6
-
7
- # Setup our load path:
8
- [
9
- 'lib',
10
- ].each do |dir|
11
- $LOAD_PATH.unshift( File.join( File.expand_path(File.dirname(__FILE__)) + '/../', dir) )
12
- end
13
-
14
-
1
+ # ==========================================
2
+ # CMock Project - Automatic Mock Generation for C
3
+ # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
+ # [Released under MIT License. Please refer to license.txt for details]
5
+ # ==========================================
6
+
7
+ # Setup our load path:
8
+ [
9
+ 'lib',
10
+ ].each do |dir|
11
+ $LOAD_PATH.unshift( File.join( File.expand_path(File.dirname(__FILE__)) + '/../', dir) )
12
+ end
13
+
14
+
@@ -1,16 +1,16 @@
1
- # ==========================================
2
- # CMock Project - Automatic Mock Generation for C
3
- # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
- # [Released under MIT License. Please refer to license.txt for details]
5
- # ==========================================
6
-
7
- # Setup our load path:
8
- [
9
- './lib',
10
- './vendor/behaviors/lib',
11
- './vendor/hardmock/lib',
12
- './vendor/unity/auto/',
13
- './test/system/'
14
- ].each do |dir|
15
- $LOAD_PATH.unshift( File.join( File.expand_path(File.dirname(__FILE__) + "/../"), dir) )
16
- end
1
+ # ==========================================
2
+ # CMock Project - Automatic Mock Generation for C
3
+ # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
+ # [Released under MIT License. Please refer to license.txt for details]
5
+ # ==========================================
6
+
7
+ # Setup our load path:
8
+ [
9
+ './lib',
10
+ './vendor/behaviors/lib',
11
+ './vendor/hardmock/lib',
12
+ './vendor/unity/auto/',
13
+ './test/system/'
14
+ ].each do |dir|
15
+ $LOAD_PATH.unshift( File.join( File.expand_path(File.dirname(__FILE__) + "/../"), dir) )
16
+ end
@@ -1,603 +1,689 @@
1
- CMock: A Summary
2
- ================
3
-
4
- *[ThrowTheSwitch.org](http://throwtheswitch.org)*
5
-
6
- *This documentation is released under a Creative Commons 3.0 Attribution Share-Alike License*
7
-
8
-
9
- What Exactly Are We Talking About Here?
10
- ---------------------------------------
11
-
12
- CMock is a nice little tool which takes your header files and creates
13
- a Mock interface for it so that you can more easily unit test modules
14
- that touch other modules. For each function prototype in your
15
- header, like this one:
16
-
17
- int DoesSomething(int a, int b);
18
-
19
-
20
- ...you get an automatically generated DoesSomething function
21
- that you can link to instead of your real DoesSomething function.
22
- By using this Mocked version, you can then verify that it receives
23
- the data you want, and make it return whatever data you desire,
24
- make it throw errors when you want, and more... Create these for
25
- everything your latest real module touches, and you're suddenly
26
- in a position of power: You can control and verify every detail
27
- of your latest creation.
28
-
29
- To make that easier, CMock also gives you a bunch of functions
30
- like the ones below, so you can tell that generated DoesSomething
31
- function how to behave for each test:
32
-
33
- void DoesSomething_ExpectAndReturn(int a, int b, int toReturn);
34
- void DoesSomething_ExpectAndThrow(int a, int b, EXCEPTION_T error);
35
- void DoesSomething_StubWithCallback(CMOCK_DoesSomething_CALLBACK YourCallback);
36
- void DoesSomething_IgnoreAndReturn(int toReturn);
37
-
38
-
39
- You can pile a bunch of these back to back, and it remembers what
40
- you wanted to pass when, like so:
41
-
42
- test_CallsDoesSomething_ShouldDoJustThat(void)
43
- {
44
- DoesSomething_ExpectAndReturn(1,2,3);
45
- DoesSomething_ExpectAndReturn(4,5,6);
46
- DoesSomething_ExpectAndThrow(7,8, STATUS_ERROR_OOPS);
47
-
48
- CallsDoesSomething( );
49
- }
50
-
51
-
52
- This test will call CallsDoesSomething, which is the function
53
- we are testing. We are expecting that function to call DoesSomething
54
- three times. The first time, we check to make sure it's called
55
- as DoesSomething(1, 2) and we'll magically return a 3. The second
56
- time we check for DoesSomething(4, 5) and we'll return a 6. The
57
- third time we verify DoesSomething(7, 8) and we'll throw an error
58
- instead of returning anything. If CallsDoesSomething gets
59
- any of this wrong, it fails the test. It will fail if you didn't
60
- call DoesSomething enough, or too much, or with the wrong arguments,
61
- or in the wrong order.
62
-
63
- CMock is based on Unity, which it uses for all internal testing.
64
- It uses Ruby to do all the main work (versions 2.0.0 and above).
65
-
66
-
67
- Installing
68
- ==========
69
-
70
- The first thing you need to do to install CMock is to get yourself
71
- a copy of Ruby. If you're on linux or osx, you probably already
72
- have it. You can prove it by typing the following:
73
-
74
- ruby --version
75
-
76
-
77
- If it replied in a way that implies ignorance, then you're going to
78
- need to install it. You can go to [ruby-lang](https://ruby-lang.org)
79
- to get the latest version. You're also going to need to do that if it
80
- replied with a version that is older than 2.0.0. Go ahead. We'll wait.
81
-
82
- Once you have Ruby, you have three options:
83
-
84
- * Clone the latest [CMock repo on github](https://github.com/ThrowTheSwitch/CMock/)
85
- * Download the latest [CMock zip from github](https://github.com/ThrowTheSwitch/CMock/)
86
- * Install Ceedling (which has it built in!) through your commandline using `gem install ceedling`.
87
-
88
-
89
- Generated Mock Module Summary
90
- =============================
91
-
92
- In addition to the mocks themselves, CMock will generate the
93
- following functions for use in your tests. The expect functions
94
- are always generated. The other functions are only generated
95
- if those plugins are enabled:
96
-
97
-
98
- Expect:
99
- -------
100
-
101
- Your basic staple Expects which will be used for most of your day
102
- to day CMock work. By calling this, you are telling CMock that you
103
- expect that function to be called during your test. It also specifies
104
- which arguments you expect it to be called with, and what return
105
- value you want returned when that happens. You can call this function
106
- multiple times back to back in order to queue up multiple calls.
107
-
108
- * `void func(void)` => `void func_Expect(void)`
109
- * `void func(params)` => `void func_Expect(expected_params)`
110
- * `retval func(void)` => `void func_ExpectAndReturn(retval_to_return)`
111
- * `retval func(params)` => `void func_ExpectAndReturn(expected_params, retval_to_return)`
112
-
113
-
114
- ExpectAnyArgs:
115
- --------------
116
-
117
- This behaves just like the Expects calls, except that it doesn't really
118
- care what the arguments are that the mock gets called with. It still counts
119
- the number of times the mock is called and it still handles return values
120
- if there are some.
121
-
122
- * `void func(void)` => `void func_ExpectAnyArgs(void)`
123
- * `void func(params)` => `void func_ExpectAnyArgs(void)`
124
- * `retval func(void)` => `void func_ExpectAnyArgsAndReturn(retval_to_return)`
125
- * `retval func(params)` => `void func_ExpectAnyArgsAndReturn(retval_to_return)`
126
-
127
-
128
- Array:
129
- ------
130
-
131
- An ExpectWithArray is another variant of Expect. Like expect, it cares about
132
- the number of times a mock is called, the arguments it is called with, and the
133
- values it is to return. This variant has another feature, though. For anything
134
- that resembles a pointer or array, it breaks the argument into TWO arguments.
135
- The first is the original pointer. The second specify the number of elements
136
- it is to verify of that array. If you specify 1, it'll check one object. If 2,
137
- it'll assume your pointer is pointing at the first of two elements in an array.
138
- If you specify zero elements, it will check just the pointer if
139
- `:smart` mode is configured or fail if `:compare_data` is set.
140
-
141
- * `void func(void)` => (nothing. In fact, an additional function is only generated if the params list contains pointers)
142
- * `void func(ptr * param, other)` => `void func_ExpectWithArray(ptr* param, int param_depth, other)`
143
- * `retval func(void)` => (nothing. In fact, an additional function is only generated if the params list contains pointers)
144
- * `retval func(other, ptr* param)` => `void func_ExpectWithArrayAndReturn(other, ptr* param, int param_depth, retval_to_return)`
145
-
146
-
147
- Ignore:
148
- -------
149
-
150
- Maybe you don't care about the number of times a particular function is called or
151
- the actual arguments it is called with. In that case, you want to use Ignore. Ignore
152
- only needs to be called once per test. It will then ignore any further calls to that
153
- particular mock. The IgnoreAndReturn works similarly, except that it has the added
154
- benefit of knowing what to return when that call happens. If the mock is called more
155
- times than IgnoreAndReturn was called, it will keep returning the last value without
156
- complaint. If it's called less times, it will also ignore that. You SAID you didn't
157
- care how many times it was called, right?
158
-
159
- * `void func(void)` => `void func_Ignore(void)`
160
- * `void func(params)` => `void func_Ignore(void)`
161
- * `retval func(void)` => `void func_IgnoreAndReturn(retval_to_return)`
162
- * `retval func(params)` => `void func_IgnoreAndReturn(retval_to_return)`
163
-
164
-
165
- Ignore Arg:
166
- ------------
167
-
168
- Maybe you overall want to use Expect and its similar variations, but you don't care
169
- what is passed to a particular argument. This is particularly useful when that argument
170
- is a pointer to a value that is supposed to be filled in by the function. You don't want
171
- to use ExpectAnyArgs, because you still care about the other arguments. Instead, before
172
- any of your Expect calls are made, you can call this function. It tells CMock to ignore
173
- a particular argument for the rest of this test, for this mock function.
174
-
175
- * `void func(params)` => `void func_IgnoreArg_paramName(void)`
176
-
177
-
178
- ReturnThruPtr:
179
- --------------
180
-
181
- Another option which operates on a particular argument of a function is the ReturnThruPtr
182
- plugin. For every argument that resembles a pointer or reference, CMock generates an
183
- instance of this function. Just as the AndReturn functions support injecting one or more
184
- return values into a queue, this function lets you specify one or more return values which
185
- are queued up and copied into the space being pointed at each time the mock is called.
186
-
187
- * `void func(param1)` => `void func_ReturnThruPtr_paramName(val_to_return)`
188
- * => `void func_ReturnArrayThruPtr_paramName(cal_to_return, len)`
189
- * => `void func_ReturnMemThruPtr_paramName(val_to_return, size)`
190
-
191
-
192
- Callback:
193
- ---------
194
-
195
- If all those other options don't work, and you really need to do something custom, you
196
- still have a choice. As soon as you stub a callback in a test, it will call the callback
197
- whenever the mock is encountered and return the retval returned from the callback (if any)
198
- instead of performing the usual expect checks. It can be configured to check the arguments
199
- first (like expects) or just jump directly to the callback.
200
-
201
- * `void func(void)` => `void func_StubWithCallback(CMOCK_func_CALLBACK callback)`
202
- where `CMOCK_func_CALLBACK` looks like: `void func(int NumCalls)`
203
- * `void func(params)` => `void func_StubWithCallback(CMOCK_func_CALLBACK callback)`
204
- where `CMOCK_func_CALLBACK` looks like: `void func(params, int NumCalls)`
205
- * `retval func(void)` => `void func_StubWithCallback(CMOCK_func_CALLBACK callback)`
206
- where `CMOCK_func_CALLBACK` looks like: `retval func(int NumCalls)`
207
- * `retval func(params)` => `void func_StubWithCallback(CMOCK_func_CALLBACK callback)`
208
- where `CMOCK_func_CALLBACK` looks like: `retval func(params, int NumCalls)`
209
-
210
-
211
- Cexception:
212
- -----------
213
-
214
- Finally, if you are using Cexception for error handling, you can use this to throw errors
215
- from inside mocks. Like Expects, it remembers which call was supposed to throw the error,
216
- and it still checks parameters first.
217
-
218
- * `void func(void)` => `void func_ExpectAndThrow(value_to_throw)`
219
- * `void func(params)` => `void func_ExpectAndThrow(expected_params, value_to_throw)`
220
- * `retval func(void)` => `void func_ExpectAndThrow(value_to_throw)`
221
- * `retval func(params)` => `void func_ExpectAndThrow(expected_params, value_to_throw)`
222
-
223
-
224
-
225
- Running CMock
226
- =============
227
-
228
- CMock is a Ruby script and class. You can therefore use it directly
229
- from the command line, or include it in your own scripts or rakefiles.
230
-
231
-
232
- Mocking from the Command Line
233
- -----------------------------
234
-
235
- After unpacking CMock, you will find cmock.rb in the 'lib' directory.
236
- This is the file that you want to run. It takes a list of header files
237
- to be mocked, as well as an optional yaml file for a more detailed
238
- configuration (see config options below).
239
-
240
- For example, this will create three mocks using the configuration
241
- specified in MyConfig.yml:
242
-
243
- ruby cmock.rb -oMyConfig.yml super.h duper.h awesome.h
244
-
245
- And this will create two mocks using the default configuration:
246
-
247
- ruby cmock.rb ../mocking/stuff/is/fun.h ../try/it/yourself.h
248
-
249
-
250
- Mocking From Scripts or Rake
251
- ----------------------------
252
-
253
- CMock can be used directly from your own scripts or from a rakefile.
254
- Start by including cmock.rb, then create an instance of CMock.
255
- When you create your instance, you may initialize it in one of
256
- three ways.
257
-
258
- You may specify nothing, allowing it to run with default settings:
259
-
260
- require 'cmock.rb'
261
- cmock = CMock.new
262
-
263
- You may specify a YAML file containing the configuration options
264
- you desire:
265
-
266
- cmock = CMock.new('../MyConfig.yml')
267
-
268
- You may specify the options explicitly:
269
-
270
- cmock = Cmock.new(:plugins => [:cexception, :ignore], :mock_path => 'my/mocks/')
271
-
272
-
273
- Config Options:
274
- ---------------
275
-
276
- The following configuration options can be specified in the
277
- yaml file or directly when instantiating.
278
-
279
- Passed as Ruby, they look like this:
280
-
281
- { :attributes => [“__funky”, “__intrinsic”], :when_ptr => :compare }
282
-
283
- Defined in the yaml file, they look more like this:
284
-
285
- :cmock:
286
- :attributes:
287
- - __funky
288
- - __intrinsic
289
- :when_ptr: :compare
290
-
291
- In all cases, you can just include the things that you want to override
292
- from the defaults. We've tried to specify what the defaults are below.
293
-
294
- * `:attributes`:
295
- These are attributes that CMock should ignore for you for testing
296
- purposes. Custom compiler extensions and externs are handy things to
297
- put here. If your compiler is choking on some extended syntax, this
298
- is often a good place to look.
299
-
300
- * defaults: ['__ramfunc', '__irq', '__fiq', 'register', 'extern']
301
- * **note:** this option will reinsert these attributes onto the mock's calls.
302
- If that isn't what you are looking for, check out :strippables.
303
-
304
- * `:c_calling_conventions`:
305
- Similarly, CMock may need to understand which C calling conventions
306
- might show up in your codebase. If it encounters something it doesn't
307
- recognize, it's not going to mock it. We have the most common covered,
308
- but there are many compilers out there, and therefore many other options.
309
-
310
- * defaults: ['__stdcall', '__cdecl', '__fastcall']
311
- * **note:** this option will reinsert these attributes onto the mock's calls.
312
- If that isn't what you are looking for, check out :strippables.
313
-
314
- * `:callback_after_arg_check`:
315
- Tell `:callback` plugin to do the normal argument checking **before** it
316
- calls the callback function by setting this to true. When false, the
317
- callback function is called **instead** of the argument verification.
318
-
319
- * default: false
320
-
321
- * `:callback_include_count`:
322
- Tell `:callback` plugin to include an extra parameter to specify the
323
- number of times the callback has been called. If set to false, the
324
- callback has the same interface as the mocked function. This can be
325
- handy when you're wanting to use callback as a stub.
326
-
327
- * default: true
328
-
329
- * `:cexception_include`:
330
- Tell `:cexception` plugin where to find CException.h... You only need to
331
- define this if it's not in your build path already... which it usually
332
- will be for the purpose of your builds.
333
-
334
- * default: *nil*
335
-
336
- * `:enforce_strict_ordering`:
337
- CMock always enforces the order that you call a particular function,
338
- so if you expect GrabNabber(int size) to be called three times, it
339
- will verify that the sizes are in the order you specified. You might
340
- *also* want to make sure that all different functions are called in a
341
- particular order. If so, set this to true.
342
-
343
- * default: false
344
-
345
- * `:framework`:
346
- Currently the only option is `:unity.` Eventually if we support other
347
- unity test frameworks (or if you write one for us), they'll get added
348
- here.
349
-
350
- : default: :unity
351
-
352
- * `:includes`:
353
- An array of additional include files which should be added to the
354
- mocks. Useful for global types and definitions used in your project.
355
- There are more specific versions if you care WHERE in the mock files
356
- the includes get placed. You can define any or all of these options.
357
-
358
- * `:includes`
359
- * `:includes_h_pre_orig_header`
360
- * `:includes_h_post_orig_header`
361
- * `:includes_c_pre_header`
362
- * `:includes_c_post_header`
363
- * default: nil #for all 5 options
364
-
365
- * `:memcmp_if_unknown`:
366
- C developers create a lot of types, either through typedef or preprocessor
367
- macros. CMock isn't going to automatically know what you were thinking all
368
- the time (though it tries its best). If it comes across a type it doesn't
369
- recognize, you have a choice on how you want it to handle it. It can either
370
- perform a raw memory comparison and report any differences, or it can fail
371
- with a meaningful message. Either way, this feature will only happen after
372
- all other mechanisms have failed (The thing encountered isn't a standard
373
- type. It isn't in the :treat_as list. It isn't in a custom unity_helper).
374
-
375
- * default: true
376
-
377
- * `:mock_path`:
378
- The directory where you would like the mock files generated to be
379
- placed.
380
-
381
- * default: mocks
382
-
383
- * `:mock_prefix`:
384
- The prefix to prepend to your mock files. For example, if it's “Mock”, a file
385
- “USART.h” will get a mock called “MockUSART.c”. This CAN be used with a suffix
386
- at the same time.
387
-
388
- * default: Mock
389
-
390
- * `:mock_suffix`:
391
- The suffix to append to your mock files. For example, it it's "_Mock", a file
392
- "USART.h" will get a mock called "USART_Mock.h". This CAN be used with a prefix
393
- at the same time.
394
-
395
- * default: ""
396
-
397
- * `:plugins`:
398
- An array of which plugins to enable. ':expect' is always active. Also
399
- available currently:
400
-
401
- * `:ignore`
402
- * `:ignore_arg`
403
- * `:expect_any_args`
404
- * `:array`
405
- * `:cexception`
406
- * `:callback`
407
- * `:return_thru_ptr`
408
-
409
- * `:strippables`:
410
- An array containing a list of items to remove from the header
411
- before deciding what should be mocked. This can be something simple
412
- like a compiler extension CMock wouldn't recognize, or could be a
413
- regex to reject certain function name patterns. This is a great way to
414
- get rid of compiler extensions when your test compiler doesn't support
415
- them. For example, use `:strippables: ['(?:functionName\s*\(+.*?\)+)']`
416
- to prevent a function `functionName` from being mocked. By default, it
417
- is ignoring all gcc attribute extensions.
418
-
419
- * default: ['(?:__attribute__\s*\(+.*?\)+)']
420
-
421
- * `:subdir`:
422
- This is a relative subdirectory for your mocks. Set this to e.g. "sys" in
423
- order to create a mock for `sys/types.h` in `(:mock_path)/sys/`.
424
-
425
- * default: ""
426
-
427
- * `:treat_as`:
428
- The `:treat_as` list is a shortcut for when you have created typedefs
429
- of standard types. Why create a custom unity helper for UINT16 when
430
- the unity function TEST_ASSERT_EQUAL_HEX16 will work just perfectly?
431
- Just add 'UINT16' => 'HEX16' to your list (actually, don't. We already
432
- did that one for you). Maybe you have a type that is a pointer to an
433
- array of unsigned characters? No problem, just add 'UINT8_T*' =>
434
- 'HEX8*'
435
-
436
- * NOTE: unlike the other options, your specifications MERGE with the
437
- default list. Therefore, if you want to override something, you must
438
- reassign it to something else (or to *nil* if you don't want it)
439
-
440
- * default:
441
- * 'int': 'INT'
442
- * 'char': 'INT8'
443
- * 'short': 'INT16'
444
- * 'long': 'INT'
445
- * 'int8': 'INT8'
446
- * 'int16': 'INT16'
447
- * 'int32': 'INT'
448
- * 'int8_t': 'INT8'
449
- * 'int16_t': 'INT16'
450
- * 'int32_t': 'INT'
451
- * 'INT8_T': 'INT8'
452
- * 'INT16_T': 'INT16'
453
- * 'INT32_T': 'INT'
454
- * 'bool': 'INT'
455
- * 'bool_t': 'INT'
456
- * 'BOOL': 'INT'
457
- * 'BOOL_T': 'INT'
458
- * 'unsigned int': 'HEX32'
459
- * 'unsigned long': 'HEX32'
460
- * 'uint32': 'HEX32'
461
- * 'uint32_t': 'HEX32'
462
- * 'UINT32': 'HEX32'
463
- * 'UINT32_T': 'HEX32'
464
- * 'void*': 'HEX8_ARRAY'
465
- * 'unsigned short': 'HEX16'
466
- * 'uint16': 'HEX16'
467
- * 'uint16_t': 'HEX16'
468
- * 'UINT16': 'HEX16'
469
- * 'UINT16_T': 'HEX16'
470
- * 'unsigned char': 'HEX8'
471
- * 'uint8': 'HEX8'
472
- * 'uint8_t': 'HEX8'
473
- * 'UINT8': 'HEX8'
474
- * 'UINT8_T': 'HEX8'
475
- * 'char*': 'STRING'
476
- * 'pCHAR': 'STRING'
477
- * 'cstring': 'STRING'
478
- * 'CSTRING': 'STRING'
479
- * 'float': 'FLOAT'
480
- * 'double': 'FLOAT'
481
-
482
- * `:treat_as_void`:
483
- We've seen "fun" legacy systems typedef 'void' with a custom type,
484
- like MY_VOID. Add any instances of those to this list to help CMock
485
- understand how to deal with your code.
486
-
487
- * default: []
488
-
489
- * `:treat_externs`:
490
- This specifies how you want CMock to handle functions that have been
491
- marked as extern in the header file. Should it mock them?
492
-
493
- * `:include` will mock externed functions
494
- * `:exclude` will ignore externed functions (default).
495
-
496
- * `:unity_helper_path`:
497
- If you have created a header with your own extensions to unity to
498
- handle your own types, you can set this argument to that path. CMock
499
- will then automagically pull in your helpers and use them. The only
500
- trick is that you make sure you follow the naming convention:
501
- `UNITY_TEST_ASSERT_EQUAL_YourType`. If it finds macros of the right
502
- shape that match that pattern, it'll use them.
503
-
504
- * default: []
505
-
506
- * `:verbosity`:
507
- How loud should CMock be?
508
-
509
- * 0 for errors only
510
- * 1 for errors and warnings
511
- * 2 for normal (default)
512
- * 3 for verbose
513
-
514
- * `:weak`:
515
- When set this to some value, the generated mocks are defined as weak
516
- symbols using the configured format. This allows them to be overridden
517
- in particular tests.
518
-
519
- * Set to '__attribute ((weak))' for weak mocks when using GCC.
520
- * Set to any non-empty string for weak mocks when using IAR.
521
- * default: ""
522
-
523
- * `:when_no_prototypes`:
524
- When you give CMock a header file and ask it to create a mock out of
525
- it, it usually contains function prototypes (otherwise what was the
526
- point?). You can control what happens when this isn't true. You can
527
- set this to `:warn,` `:ignore,` or `:error`
528
-
529
- * default: :warn
530
-
531
- * `:when_ptr`:
532
- You can customize how CMock deals with pointers (c strings result in
533
- string comparisons... we're talking about **other** pointers here). Your
534
- options are `:compare_ptr` to just verify the pointers are the same,
535
- `:compare_data` or `:smart` to verify that the data is the same.
536
- `:compare_data` and `:smart` behaviors will change slightly based on
537
- if you have the array plugin enabled. By default, they compare a
538
- single element of what is being pointed to. So if you have a pointer
539
- to a struct called ORGAN_T, it will compare one ORGAN_T (whatever that
540
- is).
541
-
542
- * default: :smart
543
-
544
- * `:fail_on_unexpected_calls`:
545
- By default, CMock will fail a test if a mock is called without _Expect and _Ignore
546
- called first. While this forces test writers to be more explicit in their expectations,
547
- it can clutter tests with _Expect or _Ignore calls for functions which are not the focus
548
- of the test. While this is a good indicator that this module should be refactored, some
549
- users are not fans of the additional noise.
550
-
551
- Therefore, :fail_on_unexpected_calls can be set to false to force all mocks to start with
552
- the assumption that they are operating as _Ignore unless otherwise specified.
553
-
554
- * default: true
555
- * **note:**
556
- If this option is disabled, the mocked functions will return
557
- a default value (0) when called (and only if they have to return something of course).
558
-
559
-
560
- Compiled Options:
561
- -----------------
562
-
563
- A number of #defines also exist for customizing the cmock experience.
564
- Feel free to pass these into your compiler or whatever is most
565
- convenient. CMock will otherwise do its best to guess what you want
566
- based on other settings, particularly Unity's settings.
567
-
568
- * `CMOCK_MEM_STATIC` or `CMOCK_MEM_DYNAMIC`
569
- Define one of these to determine if you want to dynamically add
570
- memory during tests as required from the heap. If static, you
571
- can control the total footprint of Cmock. If dynamic, you will
572
- need to make sure you make some heap space available for Cmock.
573
-
574
- * `CMOCK_MEM_SIZE`
575
- In static mode this is the total amount of memory you are allocating
576
- to Cmock. In Dynamic mode this is the size of each chunk allocated
577
- at once (larger numbers grab more memory but require less mallocs).
578
-
579
- * `CMOCK_MEM_ALIGN`
580
- The way to align your data to. Not everything is as flexible as
581
- a PC, as most embedded designers know. This defaults to 2, meaning
582
- align to the closest 2^2 -> 4 bytes (32 bits). You can turn off alignment
583
- by setting 0, force alignment to the closest uint16 with 1 or even
584
- to the closest uint64 with 3.
585
-
586
- * `CMOCK_MEM_PTR_AS_INT`
587
- This is used internally to hold pointers... it needs to be big
588
- enough. On most processors a pointer is the same as an unsigned
589
- long... but maybe that's not true for yours?
590
-
591
- * `CMOCK_MEM_INDEX_TYPE`
592
- This needs to be something big enough to point anywhere in Cmock's
593
- memory space... usually it's an unsigned int.
594
-
595
- Examples
596
- ========
597
-
598
- You can look in the [examples directory](/examples/) for a couple of examples on how
599
- you might tool CMock into your build process. You may also want to consider
600
- using [Ceedling](https://throwtheswitch.org/ceedling). Please note that
601
- these examples are meant to show how the build process works. They have
602
- failing tests ON PURPOSE to show what that would look like. Don't be alarmed. ;)
603
-
1
+ CMock: A Summary
2
+ ================
3
+
4
+ *[ThrowTheSwitch.org](http://throwtheswitch.org)*
5
+
6
+ *This documentation is released under a Creative Commons 3.0 Attribution Share-Alike License*
7
+
8
+
9
+ What Exactly Are We Talking About Here?
10
+ ---------------------------------------
11
+
12
+ CMock is a nice little tool which takes your header files and creates
13
+ a Mock interface for it so that you can more easily unit test modules
14
+ that touch other modules. For each function prototype in your
15
+ header, like this one:
16
+
17
+ int DoesSomething(int a, int b);
18
+
19
+
20
+ ...you get an automatically generated DoesSomething function
21
+ that you can link to instead of your real DoesSomething function.
22
+ By using this Mocked version, you can then verify that it receives
23
+ the data you want, and make it return whatever data you desire,
24
+ make it throw errors when you want, and more... Create these for
25
+ everything your latest real module touches, and you're suddenly
26
+ in a position of power: You can control and verify every detail
27
+ of your latest creation.
28
+
29
+ To make that easier, CMock also gives you a bunch of functions
30
+ like the ones below, so you can tell that generated DoesSomething
31
+ function how to behave for each test:
32
+
33
+ void DoesSomething_ExpectAndReturn(int a, int b, int toReturn);
34
+ void DoesSomething_ExpectAndThrow(int a, int b, EXCEPTION_T error);
35
+ void DoesSomething_StubWithCallback(CMOCK_DoesSomething_CALLBACK YourCallback);
36
+ void DoesSomething_IgnoreAndReturn(int toReturn);
37
+
38
+
39
+ You can pile a bunch of these back to back, and it remembers what
40
+ you wanted to pass when, like so:
41
+
42
+ test_CallsDoesSomething_ShouldDoJustThat(void)
43
+ {
44
+ DoesSomething_ExpectAndReturn(1,2,3);
45
+ DoesSomething_ExpectAndReturn(4,5,6);
46
+ DoesSomething_ExpectAndThrow(7,8, STATUS_ERROR_OOPS);
47
+
48
+ CallsDoesSomething( );
49
+ }
50
+
51
+
52
+ This test will call CallsDoesSomething, which is the function
53
+ we are testing. We are expecting that function to call DoesSomething
54
+ three times. The first time, we check to make sure it's called
55
+ as DoesSomething(1, 2) and we'll magically return a 3. The second
56
+ time we check for DoesSomething(4, 5) and we'll return a 6. The
57
+ third time we verify DoesSomething(7, 8) and we'll throw an error
58
+ instead of returning anything. If CallsDoesSomething gets
59
+ any of this wrong, it fails the test. It will fail if you didn't
60
+ call DoesSomething enough, or too much, or with the wrong arguments,
61
+ or in the wrong order.
62
+
63
+ CMock is based on Unity, which it uses for all internal testing.
64
+ It uses Ruby to do all the main work (versions 2.0.0 and above).
65
+
66
+
67
+ Installing
68
+ ==========
69
+
70
+ The first thing you need to do to install CMock is to get yourself
71
+ a copy of Ruby. If you're on linux or osx, you probably already
72
+ have it. You can prove it by typing the following:
73
+
74
+ ruby --version
75
+
76
+
77
+ If it replied in a way that implies ignorance, then you're going to
78
+ need to install it. You can go to [ruby-lang](https://ruby-lang.org)
79
+ to get the latest version. You're also going to need to do that if it
80
+ replied with a version that is older than 2.0.0. Go ahead. We'll wait.
81
+
82
+ Once you have Ruby, you have three options:
83
+
84
+ * Clone the latest [CMock repo on github](https://github.com/ThrowTheSwitch/CMock/)
85
+ * Download the latest [CMock zip from github](https://github.com/ThrowTheSwitch/CMock/)
86
+ * Install Ceedling (which has it built in!) through your commandline using `gem install ceedling`.
87
+
88
+
89
+ Generated Mock Module Summary
90
+ =============================
91
+
92
+ In addition to the mocks themselves, CMock will generate the
93
+ following functions for use in your tests. The expect functions
94
+ are always generated. The other functions are only generated
95
+ if those plugins are enabled:
96
+
97
+
98
+ Expect:
99
+ -------
100
+
101
+ Your basic staple Expects which will be used for most of your day
102
+ to day CMock work. By calling this, you are telling CMock that you
103
+ expect that function to be called during your test. It also specifies
104
+ which arguments you expect it to be called with, and what return
105
+ value you want returned when that happens. You can call this function
106
+ multiple times back to back in order to queue up multiple calls.
107
+
108
+ * `void func(void)` => `void func_Expect(void)`
109
+ * `void func(params)` => `void func_Expect(expected_params)`
110
+ * `retval func(void)` => `void func_ExpectAndReturn(retval_to_return)`
111
+ * `retval func(params)` => `void func_ExpectAndReturn(expected_params, retval_to_return)`
112
+
113
+
114
+ ExpectAnyArgs:
115
+ --------------
116
+
117
+ This behaves just like the Expects calls, except that it doesn't really
118
+ care what the arguments are that the mock gets called with. It still counts
119
+ the number of times the mock is called and it still handles return values
120
+ if there are some. Note that an ExpectAnyArgs call is not generated for
121
+ functions that have no arguments, because it would act exactly like the existing
122
+ Expect and ExpectAndReturn calls.
123
+
124
+ * `void func(params)` => `void func_ExpectAnyArgs(void)`
125
+ * `retval func(params)` => `void func_ExpectAnyArgsAndReturn(retval_to_return)`
126
+
127
+
128
+ Array:
129
+ ------
130
+
131
+ An ExpectWithArray is another variant of Expect. Like expect, it cares about
132
+ the number of times a mock is called, the arguments it is called with, and the
133
+ values it is to return. This variant has another feature, though. For anything
134
+ that resembles a pointer or array, it breaks the argument into TWO arguments.
135
+ The first is the original pointer. The second specify the number of elements
136
+ it is to verify of that array. If you specify 1, it'll check one object. If 2,
137
+ it'll assume your pointer is pointing at the first of two elements in an array.
138
+ If you specify zero elements, it will check just the pointer if
139
+ `:smart` mode is configured or fail if `:compare_data` is set.
140
+
141
+ * `void func(void)` => (nothing. In fact, an additional function is only generated if the params list contains pointers)
142
+ * `void func(ptr * param, other)` => `void func_ExpectWithArray(ptr* param, int param_depth, other)`
143
+ * `retval func(void)` => (nothing. In fact, an additional function is only generated if the params list contains pointers)
144
+ * `retval func(other, ptr* param)` => `void func_ExpectWithArrayAndReturn(other, ptr* param, int param_depth, retval_to_return)`
145
+
146
+
147
+ Ignore:
148
+ -------
149
+
150
+ Maybe you don't care about the number of times a particular function is called or
151
+ the actual arguments it is called with. In that case, you want to use Ignore. Ignore
152
+ only needs to be called once per test. It will then ignore any further calls to that
153
+ particular mock. The IgnoreAndReturn works similarly, except that it has the added
154
+ benefit of knowing what to return when that call happens. If the mock is called more
155
+ times than IgnoreAndReturn was called, it will keep returning the last value without
156
+ complaint. If it's called fewer times, it will also ignore that. You SAID you didn't
157
+ care how many times it was called, right?
158
+
159
+ * `void func(void)` => `void func_Ignore(void)`
160
+ * `void func(params)` => `void func_Ignore(void)`
161
+ * `retval func(void)` => `void func_IgnoreAndReturn(retval_to_return)`
162
+ * `retval func(params)` => `void func_IgnoreAndReturn(retval_to_return)`
163
+
164
+
165
+ Ignore Arg:
166
+ ------------
167
+
168
+ Maybe you overall want to use Expect and its similar variations, but you don't care
169
+ what is passed to a particular argument. This is particularly useful when that argument
170
+ is a pointer to a value that is supposed to be filled in by the function. You don't want
171
+ to use ExpectAnyArgs, because you still care about the other arguments. Instead, after
172
+ an Expect call is made, you can call this function. It tells CMock to ignore
173
+ a particular argument for the rest of this test, for this mock function. You may call
174
+ multiple instances of this to ignore multiple arguments after each expectation if
175
+ desired.
176
+
177
+ * `void func(params)` => `void func_IgnoreArg_paramName(void)`
178
+
179
+
180
+ ReturnThruPtr:
181
+ --------------
182
+
183
+ Another option which operates on a particular argument of a function is the ReturnThruPtr
184
+ plugin. For every argument that resembles a pointer or reference, CMock generates an
185
+ instance of this function. Just as the AndReturn functions support injecting one or more
186
+ return values into a queue, this function lets you specify one or more return values which
187
+ are queued up and copied into the space being pointed at each time the mock is called.
188
+
189
+ * `void func(param1)` => `void func_ReturnThruPtr_paramName(val_to_return)`
190
+ * => `void func_ReturnArrayThruPtr_paramName(cal_to_return, len)`
191
+ * => `void func_ReturnMemThruPtr_paramName(val_to_return, size)`
192
+
193
+
194
+ Callback:
195
+ ---------
196
+
197
+ If all those other options don't work, and you really need to do something custom, you
198
+ still have a choice. As soon as you stub a callback in a test, it will call the callback
199
+ whenever the mock is encountered and return the retval returned from the callback (if any).
200
+
201
+ * `void func(void)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
202
+ where `CMOCK_func_CALLBACK` looks like: `void func(int NumCalls)`
203
+ * `void func(params)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
204
+ where `CMOCK_func_CALLBACK` looks like: `void func(params, int NumCalls)`
205
+ * `retval func(void)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
206
+ where `CMOCK_func_CALLBACK` looks like: `retval func(int NumCalls)`
207
+ * `retval func(params)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
208
+ where `CMOCK_func_CALLBACK` looks like: `retval func(params, int NumCalls)`
209
+
210
+ You can choose from two options:
211
+
212
+ * `func_AddCallback` tells the mock to check its arguments and calling
213
+ order (based on any Expects you've set up) before calling the callback.
214
+ * `func_Stub` tells the mock to skip all the normal checks and jump directly
215
+ to the callback instead. In this case, you are replacing the normal mock calls
216
+ with your own custom stub function.
217
+
218
+ There is also an older name, `func_StubWithCallback`, which is just an alias
219
+ for either `func_AddCallback` or `func_Stub` depending on setting of the
220
+ `:callback_after_arg_check` toggle. This is deprecated and we recommend using
221
+ the two options above.
222
+
223
+
224
+ Cexception:
225
+ -----------
226
+
227
+ Finally, if you are using Cexception for error handling, you can use this to throw errors
228
+ from inside mocks. Like Expects, it remembers which call was supposed to throw the error,
229
+ and it still checks parameters first.
230
+
231
+ * `void func(void)` => `void func_ExpectAndThrow(value_to_throw)`
232
+ * `void func(params)` => `void func_ExpectAndThrow(expected_params, value_to_throw)`
233
+ * `retval func(void)` => `void func_ExpectAndThrow(value_to_throw)`
234
+ * `retval func(params)` => `void func_ExpectAndThrow(expected_params, value_to_throw)`
235
+
236
+
237
+
238
+ Running CMock
239
+ =============
240
+
241
+ CMock is a Ruby script and class. You can therefore use it directly
242
+ from the command line, or include it in your own scripts or rakefiles.
243
+
244
+
245
+ Mocking from the Command Line
246
+ -----------------------------
247
+
248
+ After unpacking CMock, you will find cmock.rb in the 'lib' directory.
249
+ This is the file that you want to run. It takes a list of header files
250
+ to be mocked, as well as an optional yaml file for a more detailed
251
+ configuration (see config options below).
252
+
253
+ For example, this will create three mocks using the configuration
254
+ specified in MyConfig.yml:
255
+
256
+ ruby cmock.rb -oMyConfig.yml super.h duper.h awesome.h
257
+
258
+ And this will create two mocks using the default configuration:
259
+
260
+ ruby cmock.rb ../mocking/stuff/is/fun.h ../try/it/yourself.h
261
+
262
+
263
+ Mocking From Scripts or Rake
264
+ ----------------------------
265
+
266
+ CMock can be used directly from your own scripts or from a rakefile.
267
+ Start by including cmock.rb, then create an instance of CMock.
268
+ When you create your instance, you may initialize it in one of
269
+ three ways.
270
+
271
+ You may specify nothing, allowing it to run with default settings:
272
+
273
+ require 'cmock.rb'
274
+ cmock = CMock.new
275
+
276
+ You may specify a YAML file containing the configuration options
277
+ you desire:
278
+
279
+ cmock = CMock.new('../MyConfig.yml')
280
+
281
+ You may specify the options explicitly:
282
+
283
+ cmock = Cmock.new(:plugins => [:cexception, :ignore], :mock_path => 'my/mocks/')
284
+
285
+
286
+ Config Options:
287
+ ---------------
288
+
289
+ The following configuration options can be specified in the
290
+ yaml file or directly when instantiating.
291
+
292
+ Passed as Ruby, they look like this:
293
+
294
+ { :attributes => [“__funky”, “__intrinsic”], :when_ptr => :compare }
295
+
296
+ Defined in the yaml file, they look more like this:
297
+
298
+ :cmock:
299
+ :attributes:
300
+ - __funky
301
+ - __intrinsic
302
+ :when_ptr: :compare
303
+
304
+ In all cases, you can just include the things that you want to override
305
+ from the defaults. We've tried to specify what the defaults are below.
306
+
307
+ * `:attributes`:
308
+ These are attributes that CMock should ignore for you for testing
309
+ purposes. Custom compiler extensions and externs are handy things to
310
+ put here. If your compiler is choking on some extended syntax, this
311
+ is often a good place to look.
312
+
313
+ * defaults: ['__ramfunc', '__irq', '__fiq', 'register', 'extern']
314
+ * **note:** this option will reinsert these attributes onto the mock's calls.
315
+ If that isn't what you are looking for, check out :strippables.
316
+
317
+ * `:c_calling_conventions`:
318
+ Similarly, CMock may need to understand which C calling conventions
319
+ might show up in your codebase. If it encounters something it doesn't
320
+ recognize, it's not going to mock it. We have the most common covered,
321
+ but there are many compilers out there, and therefore many other options.
322
+
323
+ * defaults: ['__stdcall', '__cdecl', '__fastcall']
324
+ * **note:** this option will reinsert these attributes onto the mock's calls.
325
+ If that isn't what you are looking for, check out :strippables.
326
+
327
+ * `:callback_after_arg_check`:
328
+ Tell `:callback` plugin to do the normal argument checking **before** it
329
+ calls the callback function by setting this to true. When false, the
330
+ callback function is called **instead** of the argument verification.
331
+
332
+ * default: false
333
+
334
+ * `:callback_include_count`:
335
+ Tell `:callback` plugin to include an extra parameter to specify the
336
+ number of times the callback has been called. If set to false, the
337
+ callback has the same interface as the mocked function. This can be
338
+ handy when you're wanting to use callback as a stub.
339
+
340
+ * default: true
341
+
342
+ * `:cexception_include`:
343
+ Tell `:cexception` plugin where to find CException.h... You only need to
344
+ define this if it's not in your build path already... which it usually
345
+ will be for the purpose of your builds.
346
+
347
+ * default: *nil*
348
+
349
+ * `:enforce_strict_ordering`:
350
+ CMock always enforces the order that you call a particular function,
351
+ so if you expect GrabNabber(int size) to be called three times, it
352
+ will verify that the sizes are in the order you specified. You might
353
+ *also* want to make sure that all different functions are called in a
354
+ particular order. If so, set this to true.
355
+
356
+ * default: false
357
+
358
+ * `:framework`:
359
+ Currently the only option is `:unity.` Eventually if we support other
360
+ unity test frameworks (or if you write one for us), they'll get added
361
+ here.
362
+
363
+ : default: :unity
364
+
365
+ * `:includes`:
366
+ An array of additional include files which should be added to the
367
+ mocks. Useful for global types and definitions used in your project.
368
+ There are more specific versions if you care WHERE in the mock files
369
+ the includes get placed. You can define any or all of these options.
370
+
371
+ * `:includes`
372
+ * `:includes_h_pre_orig_header`
373
+ * `:includes_h_post_orig_header`
374
+ * `:includes_c_pre_header`
375
+ * `:includes_c_post_header`
376
+ * default: nil #for all 5 options
377
+
378
+ * `:memcmp_if_unknown`:
379
+ C developers create a lot of types, either through typedef or preprocessor
380
+ macros. CMock isn't going to automatically know what you were thinking all
381
+ the time (though it tries its best). If it comes across a type it doesn't
382
+ recognize, you have a choice on how you want it to handle it. It can either
383
+ perform a raw memory comparison and report any differences, or it can fail
384
+ with a meaningful message. Either way, this feature will only happen after
385
+ all other mechanisms have failed (The thing encountered isn't a standard
386
+ type. It isn't in the :treat_as list. It isn't in a custom unity_helper).
387
+
388
+ * default: true
389
+
390
+ * `:mock_path`:
391
+ The directory where you would like the mock files generated to be
392
+ placed.
393
+
394
+ * default: mocks
395
+
396
+ * `:mock_prefix`:
397
+ The prefix to prepend to your mock files. For example, if it's “Mock”, a file
398
+ “USART.h” will get a mock called “MockUSART.c”. This CAN be used with a suffix
399
+ at the same time.
400
+
401
+ * default: Mock
402
+
403
+ * `:mock_suffix`:
404
+ The suffix to append to your mock files. For example, it it's "_Mock", a file
405
+ "USART.h" will get a mock called "USART_Mock.h". This CAN be used with a prefix
406
+ at the same time.
407
+
408
+ * default: ""
409
+
410
+ * `:plugins`:
411
+ An array of which plugins to enable. ':expect' is always active. Also
412
+ available currently:
413
+
414
+ * `:ignore`
415
+ * `:ignore_arg`
416
+ * `:expect_any_args`
417
+ * `:array`
418
+ * `:cexception`
419
+ * `:callback`
420
+ * `:return_thru_ptr`
421
+
422
+ * `:strippables`:
423
+ An array containing a list of items to remove from the header
424
+ before deciding what should be mocked. This can be something simple
425
+ like a compiler extension CMock wouldn't recognize, or could be a
426
+ regex to reject certain function name patterns. This is a great way to
427
+ get rid of compiler extensions when your test compiler doesn't support
428
+ them. For example, use `:strippables: ['(?:functionName\s*\(+.*?\)+)']`
429
+ to prevent a function `functionName` from being mocked. By default, it
430
+ is ignoring all gcc attribute extensions.
431
+
432
+ * default: ['(?:__attribute__\s*\(+.*?\)+)']
433
+
434
+ * `:subdir`:
435
+ This is a relative subdirectory for your mocks. Set this to e.g. "sys" in
436
+ order to create a mock for `sys/types.h` in `(:mock_path)/sys/`.
437
+
438
+ * default: ""
439
+
440
+ * `:treat_as`:
441
+ The `:treat_as` list is a shortcut for when you have created typedefs
442
+ of standard types. Why create a custom unity helper for UINT16 when
443
+ the unity function TEST_ASSERT_EQUAL_HEX16 will work just perfectly?
444
+ Just add 'UINT16' => 'HEX16' to your list (actually, don't. We already
445
+ did that one for you). Maybe you have a type that is a pointer to an
446
+ array of unsigned characters? No problem, just add 'UINT8_T*' =>
447
+ 'HEX8*'
448
+
449
+ * NOTE: unlike the other options, your specifications MERGE with the
450
+ default list. Therefore, if you want to override something, you must
451
+ reassign it to something else (or to *nil* if you don't want it)
452
+
453
+ * default:
454
+ * 'int': 'INT'
455
+ * 'char': 'INT8'
456
+ * 'short': 'INT16'
457
+ * 'long': 'INT'
458
+ * 'int8': 'INT8'
459
+ * 'int16': 'INT16'
460
+ * 'int32': 'INT'
461
+ * 'int8_t': 'INT8'
462
+ * 'int16_t': 'INT16'
463
+ * 'int32_t': 'INT'
464
+ * 'INT8_T': 'INT8'
465
+ * 'INT16_T': 'INT16'
466
+ * 'INT32_T': 'INT'
467
+ * 'bool': 'INT'
468
+ * 'bool_t': 'INT'
469
+ * 'BOOL': 'INT'
470
+ * 'BOOL_T': 'INT'
471
+ * 'unsigned int': 'HEX32'
472
+ * 'unsigned long': 'HEX32'
473
+ * 'uint32': 'HEX32'
474
+ * 'uint32_t': 'HEX32'
475
+ * 'UINT32': 'HEX32'
476
+ * 'UINT32_T': 'HEX32'
477
+ * 'void*': 'HEX8_ARRAY'
478
+ * 'unsigned short': 'HEX16'
479
+ * 'uint16': 'HEX16'
480
+ * 'uint16_t': 'HEX16'
481
+ * 'UINT16': 'HEX16'
482
+ * 'UINT16_T': 'HEX16'
483
+ * 'unsigned char': 'HEX8'
484
+ * 'uint8': 'HEX8'
485
+ * 'uint8_t': 'HEX8'
486
+ * 'UINT8': 'HEX8'
487
+ * 'UINT8_T': 'HEX8'
488
+ * 'char*': 'STRING'
489
+ * 'pCHAR': 'STRING'
490
+ * 'cstring': 'STRING'
491
+ * 'CSTRING': 'STRING'
492
+ * 'float': 'FLOAT'
493
+ * 'double': 'FLOAT'
494
+
495
+ * `:treat_as_array`:
496
+ A specialized sort of `:treat_as` to be used when you've created a
497
+ typedef of an array type, such as `typedef int TenIntegers[10];`. This
498
+ is a hash of typedef name to element type. For example:
499
+
500
+ { "TenIntegers" => "int",
501
+ "ArrayOfFloat" => "float" }
502
+
503
+ Telling CMock about these typedefs allows it to be more intelligent
504
+ about parameters of such types, so that you can use features like
505
+ ExpectWithArray and ReturnArrayThruPtr with them.
506
+
507
+ * `:treat_as_void`:
508
+ We've seen "fun" legacy systems typedef 'void' with a custom type,
509
+ like MY_VOID. Add any instances of those to this list to help CMock
510
+ understand how to deal with your code.
511
+
512
+ * default: []
513
+
514
+ * `:treat_externs`:
515
+ This specifies how you want CMock to handle functions that have been
516
+ marked as extern in the header file. Should it mock them?
517
+
518
+ * `:include` will mock externed functions
519
+ * `:exclude` will ignore externed functions (default).
520
+
521
+ * `:unity_helper_path`:
522
+ If you have created a header with your own extensions to unity to
523
+ handle your own types, you can set this argument to that path. CMock
524
+ will then automagically pull in your helpers and use them. The only
525
+ trick is that you make sure you follow the naming convention:
526
+ `UNITY_TEST_ASSERT_EQUAL_YourType`. If it finds macros of the right
527
+ shape that match that pattern, it'll use them.
528
+
529
+ * default: []
530
+
531
+ * `:verbosity`:
532
+ How loud should CMock be?
533
+
534
+ * 0 for errors only
535
+ * 1 for errors and warnings
536
+ * 2 for normal (default)
537
+ * 3 for verbose
538
+
539
+ * `:weak`:
540
+ When set this to some value, the generated mocks are defined as weak
541
+ symbols using the configured format. This allows them to be overridden
542
+ in particular tests.
543
+
544
+ * Set to '__attribute ((weak))' for weak mocks when using GCC.
545
+ * Set to any non-empty string for weak mocks when using IAR.
546
+ * default: ""
547
+
548
+ * `:when_no_prototypes`:
549
+ When you give CMock a header file and ask it to create a mock out of
550
+ it, it usually contains function prototypes (otherwise what was the
551
+ point?). You can control what happens when this isn't true. You can
552
+ set this to `:warn,` `:ignore,` or `:error`
553
+
554
+ * default: :warn
555
+
556
+ * `:when_ptr`:
557
+ You can customize how CMock deals with pointers (c strings result in
558
+ string comparisons... we're talking about **other** pointers here). Your
559
+ options are `:compare_ptr` to just verify the pointers are the same,
560
+ `:compare_data` or `:smart` to verify that the data is the same.
561
+ `:compare_data` and `:smart` behaviors will change slightly based on
562
+ if you have the array plugin enabled. By default, they compare a
563
+ single element of what is being pointed to. So if you have a pointer
564
+ to a struct called ORGAN_T, it will compare one ORGAN_T (whatever that
565
+ is).
566
+
567
+ * default: :smart
568
+
569
+ * `:array_size_type`:
570
+ * `:array_size_name`:
571
+ When the `:array` plugin is disabled, these options do nothing.
572
+
573
+ When the `:array` plugin is enabled, these options allow CMock to recognize
574
+ functions with parameters that might refer to an array, like the following,
575
+ and treat them more intelligently:
576
+
577
+ * `void GoBananas(Banana * bananas, int num_bananas)`
578
+ * `int write_data(int fd, const uint8_t * data, uint32_t size)`
579
+
580
+ To recognize functions like these, CMock looks for a parameter list
581
+ containing a pointer (which could be an array) followed by something that
582
+ could be an array size. "Something", by default, means an `int` or `size_t`
583
+ parameter with a name containing "size" or "len".
584
+
585
+ `:array_size_type` is a list of additional types (besides `int` and `size_t`)
586
+ that could be used for an array size parameter. For example, to get CMock to
587
+ recognize that `uint32_t size` is an array size, you'd need to say:
588
+
589
+ cfg[:array_size_type] = ['uint32_t']
590
+
591
+ `:array_size_name` is a regular expression used to match an array size
592
+ parameter by name. By default, it's 'size|len'. To get CMock to recognize a
593
+ name like `num_bananas`, you could tell it to also accept names containing
594
+ 'num_' like this:
595
+
596
+ cfg[:array_size_name] = 'size|len|num_'
597
+
598
+ Parameters must match *both* `:array_size_type` and `:array_size_name` (and
599
+ must come right after a pointer parameter) to be treated as an array size.
600
+
601
+ Once you've told it how to recognize your arrays, CMock will give you _Expect
602
+ calls that work more like _ExpectWithArray, and compare an array of objects
603
+ rather than just a single object.
604
+
605
+ For example, if you write the following, CMock will check that GoBananas is
606
+ called and passed an array containing a green banana followed by a yellow
607
+ banana:
608
+
609
+ Banana b[2] = {GreenBanana, YellowBanana};
610
+ GoBananas_Expect(b, 2);
611
+
612
+ In other words, `GoBananas_Expect(b, 2)` now works just the same as:
613
+
614
+ GoBananas_ExpectWithArray(b, 2, 2);
615
+
616
+ * `:fail_on_unexpected_calls`:
617
+ By default, CMock will fail a test if a mock is called without _Expect and _Ignore
618
+ called first. While this forces test writers to be more explicit in their expectations,
619
+ it can clutter tests with _Expect or _Ignore calls for functions which are not the focus
620
+ of the test. While this is a good indicator that this module should be refactored, some
621
+ users are not fans of the additional noise.
622
+
623
+ Therefore, :fail_on_unexpected_calls can be set to false to force all mocks to start with
624
+ the assumption that they are operating as _Ignore unless otherwise specified.
625
+
626
+ * default: true
627
+ * **note:**
628
+ If this option is disabled, the mocked functions will return
629
+ a default value (0) when called (and only if they have to return something of course).
630
+
631
+
632
+ Compiled Options:
633
+ -----------------
634
+
635
+ A number of #defines also exist for customizing the cmock experience.
636
+ Feel free to pass these into your compiler or whatever is most
637
+ convenient. CMock will otherwise do its best to guess what you want
638
+ based on other settings, particularly Unity's settings.
639
+
640
+ * `CMOCK_MEM_STATIC` or `CMOCK_MEM_DYNAMIC`
641
+ Define one of these to determine if you want to dynamically add
642
+ memory during tests as required from the heap. If static, you
643
+ can control the total footprint of Cmock. If dynamic, you will
644
+ need to make sure you make some heap space available for Cmock.
645
+
646
+ * `CMOCK_MEM_SIZE`
647
+ In static mode this is the total amount of memory you are allocating
648
+ to Cmock. In Dynamic mode this is the size of each chunk allocated
649
+ at once (larger numbers grab more memory but require fewer mallocs).
650
+
651
+ * `CMOCK_MEM_ALIGN`
652
+ The way to align your data to. Not everything is as flexible as
653
+ a PC, as most embedded designers know. This defaults to 2, meaning
654
+ align to the closest 2^2 -> 4 bytes (32 bits). You can turn off alignment
655
+ by setting 0, force alignment to the closest uint16 with 1 or even
656
+ to the closest uint64 with 3.
657
+
658
+ * `CMOCK_MEM_PTR_AS_INT`
659
+ This is used internally to hold pointers... it needs to be big
660
+ enough. On most processors a pointer is the same as an unsigned
661
+ long... but maybe that's not true for yours?
662
+
663
+ * `CMOCK_MEM_INDEX_TYPE`
664
+ This needs to be something big enough to point anywhere in Cmock's
665
+ memory space... usually it's an unsigned int.
666
+
667
+ Other Tips
668
+ ==========
669
+
670
+ resetTest
671
+ ---------
672
+
673
+ While this isn't strictly a CMock feature, often users of CMock are using
674
+ either the test runner generator scripts in Unity or using Ceedling. In
675
+ either case, there is a handy function called `resetTest` which gets
676
+ generated with your runner. You can then use this handy function in your tests
677
+ themselves. Call it during a test to have CMock validate everything to this point
678
+ and start over clean. This is really useful when wanting to test a function in
679
+ an iterative manner with different arguments.
680
+
681
+ Examples
682
+ ========
683
+
684
+ You can look in the [examples directory](/examples/) for a couple of examples on how
685
+ you might tool CMock into your build process. You may also want to consider
686
+ using [Ceedling](https://throwtheswitch.org/ceedling). Please note that
687
+ these examples are meant to show how the build process works. They have
688
+ failing tests ON PURPOSE to show what that would look like. Don't be alarmed. ;)
689
+