ceedling 0.9.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1282) hide show
  1. checksums.yaml +7 -0
  2. data/GIT_COMMIT_SHA +1 -0
  3. data/Gemfile +23 -2
  4. data/Gemfile.lock +50 -0
  5. data/README.md +728 -42
  6. data/Rakefile +21 -75
  7. data/assets/ceedling +9 -0
  8. data/assets/ceedling.cmd +1 -0
  9. data/assets/default_gitignore +7 -0
  10. data/assets/example_file.c +16 -0
  11. data/assets/example_file.h +15 -0
  12. data/assets/example_file_call.c +13 -0
  13. data/assets/example_file_call.h +13 -0
  14. data/assets/project.yml +402 -0
  15. data/assets/test_example_file.c +20 -0
  16. data/assets/test_example_file_boom.c +20 -0
  17. data/assets/test_example_file_crash.c +25 -0
  18. data/assets/test_example_file_success.c +21 -0
  19. data/assets/test_example_file_unity_printf.c +19 -0
  20. data/assets/test_example_file_verbose.c +19 -0
  21. data/assets/test_example_file_with_mock.c +20 -0
  22. data/assets/test_example_with_parameterized_tests.c +28 -0
  23. data/assets/tests_with_defines/src/adc_hardware.c +18 -0
  24. data/assets/tests_with_defines/src/adc_hardware.h +13 -0
  25. data/assets/tests_with_defines/src/adc_hardware_configurator.c +18 -0
  26. data/assets/tests_with_defines/src/adc_hardware_configurator.h +17 -0
  27. data/assets/tests_with_defines/test/test_adc_hardware.c +28 -0
  28. data/assets/tests_with_defines/test/test_adc_hardware_special.c +28 -0
  29. data/assets/tests_with_preprocessing/src/adc_hardwareA.c +17 -0
  30. data/assets/tests_with_preprocessing/src/adc_hardwareA.h +13 -0
  31. data/assets/tests_with_preprocessing/src/adc_hardwareB.c +14 -0
  32. data/assets/tests_with_preprocessing/src/adc_hardwareB.h +13 -0
  33. data/assets/tests_with_preprocessing/src/adc_hardwareC.c +14 -0
  34. data/assets/tests_with_preprocessing/src/adc_hardwareC.h +13 -0
  35. data/assets/tests_with_preprocessing/src/adc_hardware_configuratorA.h +13 -0
  36. data/assets/tests_with_preprocessing/src/adc_hardware_configuratorB.h +15 -0
  37. data/assets/tests_with_preprocessing/src/adc_hardware_configuratorC.h +15 -0
  38. data/assets/tests_with_preprocessing/test/test_adc_hardwareA.c +41 -0
  39. data/assets/tests_with_preprocessing/test/test_adc_hardwareB.c +25 -0
  40. data/assets/tests_with_preprocessing/test/test_adc_hardwareC.c +29 -0
  41. data/assets/uncovered_example_file.c +12 -0
  42. data/bin/actions_wrapper.rb +50 -0
  43. data/bin/app_cfg.rb +134 -0
  44. data/bin/ceedling +146 -57
  45. data/bin/cli.rb +542 -0
  46. data/bin/cli_handler.rb +480 -0
  47. data/bin/cli_helper.rb +512 -0
  48. data/bin/configinator.rb +111 -0
  49. data/bin/mixinator.rb +136 -0
  50. data/bin/mixins.rb +12 -0
  51. data/bin/objects.yml +80 -0
  52. data/bin/path_validator.rb +54 -0
  53. data/bin/projectinator.rb +244 -0
  54. data/bin/versionator.rb +81 -0
  55. data/ceedling.gemspec +54 -14
  56. data/config/test_environment.rb +14 -0
  57. data/docs/BreakingChanges.md +260 -0
  58. data/docs/CODE_OF_CONDUCT.md +138 -0
  59. data/docs/CONTRIBUTING.md +240 -0
  60. data/docs/Ceedling Basic Porting.pdf +0 -0
  61. data/docs/Ceedling Managing Release Code.pdf +0 -0
  62. data/docs/Ceedling Working with IDEs.pdf +0 -0
  63. data/docs/CeedlingPacket.md +5651 -0
  64. data/docs/CeedlingPullRequestChecklist.md +24 -0
  65. data/docs/CeedlingUpgrade.md +83 -0
  66. data/docs/Changelog.md +493 -0
  67. data/docs/PluginDevelopmentGuide.md +764 -0
  68. data/docs/ReleaseNotes.md +353 -0
  69. data/docs/SECURITY.md +41 -0
  70. data/docs/ThrowTheSwitchCodingStandard.md +207 -0
  71. data/examples/temp_sensor/README.md +18 -0
  72. data/examples/temp_sensor/mixin/add_gcov.yml +51 -0
  73. data/examples/temp_sensor/mixin/add_unity_helper.yml +26 -0
  74. data/examples/temp_sensor/project.yml +355 -70
  75. data/examples/temp_sensor/src/AdcConductor.c +49 -42
  76. data/examples/temp_sensor/src/AdcConductor.h +20 -11
  77. data/examples/temp_sensor/src/AdcHardware.c +34 -27
  78. data/examples/temp_sensor/src/AdcHardware.h +18 -11
  79. data/examples/temp_sensor/src/AdcHardwareConfigurator.c +25 -18
  80. data/examples/temp_sensor/src/AdcHardwareConfigurator.h +17 -10
  81. data/examples/temp_sensor/src/AdcModel.c +40 -33
  82. data/examples/temp_sensor/src/AdcModel.h +20 -13
  83. data/examples/temp_sensor/src/AdcTemperatureSensor.c +58 -51
  84. data/examples/temp_sensor/src/AdcTemperatureSensor.h +17 -10
  85. data/examples/temp_sensor/src/Executor.c +32 -25
  86. data/examples/temp_sensor/src/Executor.h +16 -9
  87. data/examples/temp_sensor/src/IntrinsicsWrapper.c +25 -18
  88. data/examples/temp_sensor/src/IntrinsicsWrapper.h +14 -7
  89. data/examples/temp_sensor/src/Main.c +53 -46
  90. data/examples/temp_sensor/src/Main.h +14 -7
  91. data/examples/temp_sensor/src/Model.c +17 -10
  92. data/examples/temp_sensor/src/Model.h +15 -8
  93. data/examples/temp_sensor/src/ModelConfig.h +14 -7
  94. data/examples/temp_sensor/src/TaskScheduler.c +79 -72
  95. data/examples/temp_sensor/src/TaskScheduler.h +18 -11
  96. data/examples/temp_sensor/src/TemperatureCalculator.c +38 -27
  97. data/examples/temp_sensor/src/TemperatureCalculator.h +15 -6
  98. data/examples/temp_sensor/src/TemperatureFilter.c +45 -39
  99. data/examples/temp_sensor/src/TemperatureFilter.h +17 -10
  100. data/examples/temp_sensor/src/TimerConductor.c +22 -15
  101. data/examples/temp_sensor/src/TimerConductor.h +16 -9
  102. data/examples/temp_sensor/src/TimerConfigurator.c +58 -51
  103. data/examples/temp_sensor/src/TimerConfigurator.h +22 -15
  104. data/examples/temp_sensor/src/TimerHardware.c +22 -15
  105. data/examples/temp_sensor/src/TimerHardware.h +15 -8
  106. data/examples/temp_sensor/src/TimerInterruptConfigurator.c +62 -55
  107. data/examples/temp_sensor/src/TimerInterruptConfigurator.h +20 -13
  108. data/examples/temp_sensor/src/TimerInterruptHandler.c +32 -25
  109. data/examples/temp_sensor/src/TimerInterruptHandler.h +17 -10
  110. data/examples/temp_sensor/src/TimerModel.c +16 -9
  111. data/examples/temp_sensor/src/TimerModel.h +15 -8
  112. data/examples/temp_sensor/src/Types.h +97 -103
  113. data/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.c +25 -18
  114. data/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.h +15 -6
  115. data/examples/temp_sensor/src/UsartConductor.c +28 -21
  116. data/examples/temp_sensor/src/UsartConductor.h +14 -7
  117. data/examples/temp_sensor/src/UsartConfigurator.c +46 -39
  118. data/examples/temp_sensor/src/UsartConfigurator.h +20 -13
  119. data/examples/temp_sensor/src/UsartHardware.c +29 -34
  120. data/examples/temp_sensor/src/UsartHardware.h +16 -10
  121. data/examples/temp_sensor/src/UsartModel.c +41 -34
  122. data/examples/temp_sensor/src/UsartModel.h +17 -10
  123. data/examples/temp_sensor/src/UsartPutChar.c +23 -16
  124. data/examples/temp_sensor/src/UsartPutChar.h +15 -8
  125. data/examples/temp_sensor/src/UsartTransmitBufferStatus.c +14 -7
  126. data/examples/temp_sensor/src/UsartTransmitBufferStatus.h +15 -8
  127. data/examples/temp_sensor/test/TestExecutor.c +43 -0
  128. data/examples/temp_sensor/test/TestMain.c +31 -0
  129. data/examples/temp_sensor/test/TestModel.c +27 -0
  130. data/examples/temp_sensor/test/TestTaskScheduler.c +111 -0
  131. data/examples/temp_sensor/test/TestTemperatureCalculator.c +43 -0
  132. data/examples/temp_sensor/test/TestTemperatureFilter.c +86 -0
  133. data/examples/temp_sensor/test/TestTimerConductor.c +39 -0
  134. data/examples/temp_sensor/test/TestTimerHardware.c +33 -0
  135. data/examples/temp_sensor/test/TestTimerIntegrated.c +53 -0
  136. data/examples/temp_sensor/test/TestTimerModel.c +25 -0
  137. data/examples/temp_sensor/test/TestUsartBaudRateRegisterCalculator.c +28 -0
  138. data/examples/temp_sensor/test/TestUsartConductor.c +47 -0
  139. data/examples/temp_sensor/test/TestUsartHardware.c +43 -0
  140. data/examples/temp_sensor/test/TestUsartIntegrated.c +63 -0
  141. data/examples/temp_sensor/test/TestUsartModel.c +47 -0
  142. data/examples/temp_sensor/test/adc/TestAdcConductor.c +128 -0
  143. data/examples/temp_sensor/test/adc/TestAdcHardware.c +51 -0
  144. data/examples/temp_sensor/test/adc/TestAdcModel.c +40 -0
  145. data/examples/temp_sensor/test/support/UnityHelper.c +19 -10
  146. data/examples/temp_sensor/test/support/UnityHelper.h +17 -12
  147. data/lib/ceedling/application.rb +26 -0
  148. data/lib/ceedling/backtrace.gdb +5 -0
  149. data/lib/ceedling/build_batchinator.rb +113 -0
  150. data/lib/ceedling/cacheinator.rb +53 -0
  151. data/lib/ceedling/cacheinator_helper.rb +41 -0
  152. data/lib/ceedling/config_matchinator.rb +192 -0
  153. data/lib/ceedling/config_walkinator.rb +35 -0
  154. data/lib/ceedling/configurator.rb +735 -0
  155. data/lib/ceedling/configurator_builder.rb +558 -0
  156. data/lib/ceedling/configurator_plugins.rb +165 -0
  157. data/lib/ceedling/configurator_setup.rb +799 -0
  158. data/lib/ceedling/configurator_validator.rb +203 -0
  159. data/lib/ceedling/constants.rb +160 -0
  160. data/lib/ceedling/defaults.rb +477 -0
  161. data/lib/ceedling/defineinator.rb +90 -0
  162. data/lib/ceedling/dependinator.rb +31 -0
  163. data/lib/ceedling/encodinator.rb +26 -0
  164. data/lib/ceedling/erb_wrapper.rb +16 -0
  165. data/lib/ceedling/exceptions.rb +47 -0
  166. data/lib/ceedling/file_finder.rb +183 -0
  167. data/lib/ceedling/file_finder_helper.rb +116 -0
  168. data/lib/ceedling/file_path_collection_utils.rb +137 -0
  169. data/lib/ceedling/file_path_utils.rb +190 -0
  170. data/lib/ceedling/file_system_wrapper.rb +16 -0
  171. data/lib/ceedling/file_wrapper.rb +122 -0
  172. data/lib/ceedling/flaginator.rb +65 -0
  173. data/lib/ceedling/generator.rb +365 -0
  174. data/lib/ceedling/generator_helper.rb +78 -0
  175. data/lib/ceedling/generator_mocks.rb +41 -0
  176. data/lib/ceedling/generator_test_results.rb +270 -0
  177. data/lib/ceedling/generator_test_results_backtrace.rb +215 -0
  178. data/lib/ceedling/generator_test_results_sanity_checker.rb +70 -0
  179. data/lib/ceedling/generator_test_runner.rb +84 -0
  180. data/lib/ceedling/include_pathinator.rb +83 -0
  181. data/lib/ceedling/loginator.rb +326 -0
  182. data/lib/ceedling/makefile.rb +52 -0
  183. data/lib/ceedling/objects.yml +352 -0
  184. data/lib/ceedling/parsing_parcels.rb +77 -0
  185. data/lib/ceedling/plugin.rb +30 -0
  186. data/lib/ceedling/plugin_manager.rb +133 -0
  187. data/lib/ceedling/plugin_manager_helper.rb +25 -0
  188. data/lib/ceedling/plugin_reportinator.rb +139 -0
  189. data/lib/ceedling/plugin_reportinator_helper.rb +84 -0
  190. data/lib/ceedling/preprocessinator.rb +239 -0
  191. data/lib/ceedling/preprocessinator_extractor.rb +257 -0
  192. data/lib/ceedling/preprocessinator_file_handler.rb +229 -0
  193. data/lib/ceedling/preprocessinator_includes_handler.rb +382 -0
  194. data/lib/ceedling/rake_utils.rb +23 -0
  195. data/lib/ceedling/rake_wrapper.rb +40 -0
  196. data/lib/ceedling/rakefile.rb +145 -0
  197. data/lib/ceedling/release_invoker.rb +68 -0
  198. data/lib/ceedling/release_invoker_helper.rb +12 -0
  199. data/lib/ceedling/reportinator.rb +124 -0
  200. data/lib/ceedling/rules_release.rake +107 -0
  201. data/lib/ceedling/rules_tests.rake +62 -0
  202. data/lib/ceedling/setupinator.rb +199 -0
  203. data/lib/ceedling/stream_wrapper.rb +51 -0
  204. data/lib/ceedling/system_utils.rb +43 -0
  205. data/lib/ceedling/system_wrapper.rb +150 -0
  206. data/lib/ceedling/task_invoker.rb +70 -0
  207. data/lib/ceedling/tasks_base.rake +39 -0
  208. data/lib/ceedling/tasks_filesystem.rake +99 -0
  209. data/lib/ceedling/tasks_release.rake +43 -0
  210. data/lib/ceedling/tasks_tests.rake +71 -0
  211. data/lib/ceedling/test_context_extractor.rb +379 -0
  212. data/lib/ceedling/test_invoker.rb +506 -0
  213. data/lib/ceedling/test_invoker_helper.rb +347 -0
  214. data/lib/ceedling/test_runner_manager.rb +47 -0
  215. data/lib/ceedling/tool_executor.rb +233 -0
  216. data/lib/ceedling/tool_executor_helper.rb +107 -0
  217. data/lib/ceedling/tool_validator.rb +149 -0
  218. data/lib/ceedling/verbosinator.rb +22 -0
  219. data/lib/ceedling/yaml_wrapper.rb +37 -0
  220. data/lib/ceedling.rb +12 -4
  221. data/lib/version.rb +24 -0
  222. data/license.txt +24 -0
  223. data/plugins/beep/README.md +133 -0
  224. data/plugins/beep/config/defaults.yml +12 -0
  225. data/plugins/beep/config/defaults_beep.rb +67 -0
  226. data/plugins/beep/lib/beep.rb +85 -0
  227. data/plugins/bullseye/README.md +81 -0
  228. data/plugins/bullseye/bullseye.rake +180 -0
  229. data/plugins/bullseye/config/defaults.yml +66 -0
  230. data/plugins/bullseye/lib/bullseye.rb +203 -0
  231. data/plugins/command_hooks/README.md +241 -0
  232. data/plugins/command_hooks/lib/command_hooks.rb +231 -0
  233. data/plugins/compile_commands_json_db/README.md +40 -0
  234. data/plugins/compile_commands_json_db/lib/compile_commands_json_db.rb +51 -0
  235. data/plugins/dependencies/README.md +321 -0
  236. data/plugins/dependencies/Rakefile +188 -0
  237. data/plugins/dependencies/config/defaults.yml +78 -0
  238. data/plugins/dependencies/dependencies.rake +157 -0
  239. data/plugins/dependencies/example/boss/project.yml +231 -0
  240. data/plugins/dependencies/example/boss/src/boss.c +80 -0
  241. data/plugins/dependencies/example/boss/src/boss.h +16 -0
  242. data/plugins/dependencies/example/boss/src/main.c +45 -0
  243. data/plugins/dependencies/example/boss/test/test_boss.c +118 -0
  244. data/plugins/dependencies/example/supervisor/project.yml +165 -0
  245. data/plugins/dependencies/example/supervisor/src/supervisor.c +45 -0
  246. data/plugins/dependencies/example/supervisor/src/supervisor.h +14 -0
  247. data/plugins/dependencies/example/supervisor/test/test_supervisor.c +58 -0
  248. data/plugins/dependencies/example/version.tar.gzip +0 -0
  249. data/plugins/dependencies/example/workerbees.zip +0 -0
  250. data/plugins/dependencies/lib/dependencies.rb +531 -0
  251. data/plugins/fff/README.md +242 -0
  252. data/plugins/fff/Rakefile +26 -0
  253. data/plugins/fff/config/fff.yml +13 -0
  254. data/plugins/fff/examples/fff_example/project.yml +145 -0
  255. data/plugins/fff/examples/fff_example/src/bar.c +8 -0
  256. data/plugins/fff/examples/fff_example/src/bar.h +21 -0
  257. data/plugins/fff/examples/fff_example/src/custom_types.h +13 -0
  258. data/plugins/fff/examples/fff_example/src/display.c +14 -0
  259. data/plugins/fff/examples/fff_example/src/display.h +23 -0
  260. data/plugins/fff/examples/fff_example/src/event_processor.c +100 -0
  261. data/plugins/fff/examples/fff_example/src/event_processor.h +18 -0
  262. data/plugins/fff/examples/fff_example/src/foo.c +23 -0
  263. data/plugins/fff/examples/fff_example/src/foo.h +15 -0
  264. data/plugins/fff/examples/fff_example/src/subfolder/zzz.c +8 -0
  265. data/plugins/fff/examples/fff_example/src/subfolder/zzz.h +13 -0
  266. data/plugins/fff/examples/fff_example/test/test_event_processor.c +160 -0
  267. data/plugins/fff/examples/fff_example/test/test_foo.c +54 -0
  268. data/plugins/fff/lib/fff.rb +90 -0
  269. data/plugins/fff/lib/fff_mock_generator.rb +172 -0
  270. data/plugins/fff/spec/fff_mock_header_generator_spec.rb +311 -0
  271. data/plugins/fff/spec/fff_mock_source_generator_spec.rb +156 -0
  272. data/plugins/fff/spec/header_generator.rb +58 -0
  273. data/plugins/fff/spec/spec_helper.rb +103 -0
  274. data/plugins/fff/src/fff_unity_helper.h +40 -0
  275. data/plugins/fff/vendor/fff/LICENSE +25 -0
  276. data/plugins/fff/vendor/fff/Makefile +10 -0
  277. data/plugins/fff/vendor/fff/README.md +454 -0
  278. data/plugins/fff/vendor/fff/buildandtest +15 -0
  279. data/plugins/fff/vendor/fff/examples/Makefile +7 -0
  280. data/plugins/fff/vendor/fff/examples/driver_testing/Makefile +64 -0
  281. data/plugins/fff/vendor/fff/examples/driver_testing/driver.c +32 -0
  282. data/plugins/fff/vendor/fff/examples/driver_testing/driver.h +21 -0
  283. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.cpp +58 -0
  284. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.fff.cpp +70 -0
  285. data/plugins/fff/vendor/fff/examples/driver_testing/hardware_abstraction.h +25 -0
  286. data/plugins/fff/vendor/fff/examples/driver_testing/registers.h +23 -0
  287. data/plugins/fff/vendor/fff/examples/embedded_ui/DISPLAY.h +27 -0
  288. data/plugins/fff/vendor/fff/examples/embedded_ui/Kata.txt +25 -0
  289. data/plugins/fff/vendor/fff/examples/embedded_ui/Makefile +67 -0
  290. data/plugins/fff/vendor/fff/examples/embedded_ui/SYSTEM.h +31 -0
  291. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.c +56 -0
  292. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.h +22 -0
  293. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_ansic.c +191 -0
  294. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_cpp.cpp +144 -0
  295. data/plugins/fff/vendor/fff/examples/embedded_ui/test_suite_template.c +42 -0
  296. data/plugins/fff/vendor/fff/fakegen.rb +428 -0
  297. data/plugins/fff/vendor/fff/fff.h +5122 -0
  298. data/plugins/fff/vendor/fff/gtest/Makefile +22 -0
  299. data/plugins/fff/vendor/fff/gtest/gtest-all.cc +9118 -0
  300. data/plugins/fff/vendor/fff/gtest/gtest-main.cc +6 -0
  301. data/plugins/fff/vendor/fff/gtest/gtest.h +19547 -0
  302. data/plugins/fff/vendor/fff/test/Makefile +81 -0
  303. data/plugins/fff/vendor/fff/test/c_test_framework.h +25 -0
  304. data/plugins/fff/vendor/fff/test/fff_test_c.c +116 -0
  305. data/plugins/fff/vendor/fff/test/fff_test_cpp.cpp +53 -0
  306. data/plugins/fff/vendor/fff/test/fff_test_global_c.c +84 -0
  307. data/plugins/fff/vendor/fff/test/fff_test_global_cpp.cpp +31 -0
  308. data/plugins/fff/vendor/fff/test/global_fakes.c +21 -0
  309. data/plugins/fff/vendor/fff/test/global_fakes.h +47 -0
  310. data/plugins/fff/vendor/fff/test/test_cases.include +276 -0
  311. data/plugins/gcov/README.md +893 -0
  312. data/plugins/gcov/config/defaults.yml +30 -0
  313. data/plugins/gcov/config/defaults_gcov.rb +109 -0
  314. data/plugins/gcov/gcov.rake +100 -0
  315. data/plugins/gcov/lib/gcov.rb +282 -0
  316. data/plugins/gcov/lib/gcov_constants.rb +63 -0
  317. data/plugins/gcov/lib/gcovr_reportinator.rb +425 -0
  318. data/plugins/gcov/lib/reportgenerator_reportinator.rb +220 -0
  319. data/plugins/gcov/lib/reportinator_helper.rb +30 -0
  320. data/plugins/module_generator/README.md +267 -0
  321. data/plugins/module_generator/Rakefile +232 -0
  322. data/plugins/module_generator/assets/stubby1.h +13 -0
  323. data/plugins/module_generator/assets/stubby2.h +15 -0
  324. data/plugins/module_generator/config/module_generator.yml +13 -0
  325. data/plugins/module_generator/example/project.yml +174 -0
  326. data/plugins/module_generator/lib/module_generator.rb +122 -0
  327. data/plugins/module_generator/module_generator.rake +69 -0
  328. data/plugins/report_build_warnings_log/README.md +40 -0
  329. data/plugins/report_build_warnings_log/config/defaults.yml +12 -0
  330. data/plugins/report_build_warnings_log/lib/report_build_warnings_log.rb +143 -0
  331. data/plugins/report_tests_gtestlike_stdout/README.md +96 -0
  332. data/plugins/report_tests_gtestlike_stdout/assets/template.erb +83 -0
  333. data/plugins/report_tests_gtestlike_stdout/config/report_tests_gtestlike_stdout.yml +11 -0
  334. data/plugins/report_tests_gtestlike_stdout/lib/report_tests_gtestlike_stdout.rb +69 -0
  335. data/plugins/report_tests_ide_stdout/README.md +62 -0
  336. data/plugins/report_tests_ide_stdout/config/report_tests_ide_stdout.yml +11 -0
  337. data/plugins/report_tests_ide_stdout/lib/report_tests_ide_stdout.rb +72 -0
  338. data/plugins/report_tests_log_factory/README.md +446 -0
  339. data/plugins/report_tests_log_factory/config/defaults.yml +11 -0
  340. data/plugins/report_tests_log_factory/lib/cppunit_tests_reporter.rb +100 -0
  341. data/plugins/report_tests_log_factory/lib/html_tests_reporter.rb +181 -0
  342. data/plugins/report_tests_log_factory/lib/json_tests_reporter.rb +72 -0
  343. data/plugins/report_tests_log_factory/lib/junit_tests_reporter.rb +197 -0
  344. data/plugins/report_tests_log_factory/lib/report_tests_log_factory.rb +135 -0
  345. data/plugins/report_tests_log_factory/lib/tests_reporter.rb +70 -0
  346. data/plugins/report_tests_log_factory/sample_html_report.png +0 -0
  347. data/plugins/report_tests_pretty_stdout/README.md +54 -0
  348. data/plugins/report_tests_pretty_stdout/assets/template.erb +63 -0
  349. data/plugins/report_tests_pretty_stdout/config/report_tests_pretty_stdout.yml +11 -0
  350. data/plugins/report_tests_pretty_stdout/lib/report_tests_pretty_stdout.rb +73 -0
  351. data/plugins/report_tests_raw_output_log/README.md +50 -0
  352. data/plugins/report_tests_raw_output_log/lib/report_tests_raw_output_log.rb +129 -0
  353. data/plugins/report_tests_teamcity_stdout/README.md +94 -0
  354. data/plugins/report_tests_teamcity_stdout/config/defaults.yml +12 -0
  355. data/plugins/report_tests_teamcity_stdout/config/report_tests_teamcity_stdout.yml +11 -0
  356. data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +163 -0
  357. data/spec/config_walkinator_spec.rb +62 -0
  358. data/spec/configurator_builder_spec.rb +16 -0
  359. data/spec/configurator_helper_spec.rb +12 -0
  360. data/spec/configurator_spec.rb +18 -0
  361. data/spec/file_finder_helper_spec.rb +73 -0
  362. data/spec/gcov/gcov_deployment_spec.rb +135 -0
  363. data/spec/gcov/gcov_test_cases_spec.rb +344 -0
  364. data/spec/generator_test_results_sanity_checker_spec.rb +104 -0
  365. data/spec/generator_test_results_spec.rb +131 -0
  366. data/spec/manual/stress_test.rb +31 -0
  367. data/spec/parsing_parcels_spec.rb +66 -0
  368. data/spec/preprocessinator_extractor_spec.rb +408 -0
  369. data/spec/preprocessinator_includes_handler_spec.rb +289 -0
  370. data/spec/reportinator_spec.rb +26 -0
  371. data/spec/spec_helper.rb +31 -0
  372. data/spec/spec_system_helper.rb +994 -0
  373. data/spec/support/other_target.yml +7 -0
  374. data/spec/support/target.yml +7 -0
  375. data/spec/support/test_example.fail +25 -0
  376. data/spec/support/test_example.pass +25 -0
  377. data/spec/support/test_example_empty.pass +15 -0
  378. data/spec/support/test_example_ignore.pass +25 -0
  379. data/spec/support/test_example_mangled.pass +22 -0
  380. data/spec/support/test_example_with_time.pass +25 -0
  381. data/spec/system/deployment_as_gem_spec.rb +76 -0
  382. data/spec/system/deployment_as_vendor_spec.rb +123 -0
  383. data/spec/system/example_temp_sensor_spec.rb +264 -0
  384. data/spec/system/upgrade_as_vendor_spec.rb +68 -0
  385. data/spec/system_utils_spec.rb +65 -0
  386. data/spec/test_context_extractor_spec.rb +328 -0
  387. data/spec/tool_executor_helper_spec.rb +219 -0
  388. data/spec/uncategorized_specs_spec.rb +15 -0
  389. data/vendor/c_exception/README.md +236 -0
  390. data/vendor/c_exception/docs/CException.md +289 -0
  391. data/vendor/c_exception/docs/CODE_OF_CONDUCT.md +138 -0
  392. data/vendor/c_exception/docs/CONTRIBUTING.md +238 -0
  393. data/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -0
  394. data/vendor/c_exception/lib/CException.c +59 -0
  395. data/vendor/c_exception/lib/CException.h +122 -0
  396. data/vendor/c_exception/lib/meson.build +11 -0
  397. data/vendor/c_exception/license.txt +22 -0
  398. data/vendor/c_exception/meson.build +14 -0
  399. data/vendor/c_exception/project.yml +263 -0
  400. data/vendor/c_exception/test/TestException.c +398 -0
  401. data/vendor/c_exception/test/support/CExceptionConfig.h +53 -0
  402. data/vendor/cmock/Gemfile +1 -0
  403. data/vendor/cmock/LICENSE.txt +21 -0
  404. data/vendor/cmock/README.md +55 -0
  405. data/vendor/cmock/cmock.gemspec +34 -0
  406. data/vendor/cmock/config/production_environment.rb +13 -0
  407. data/vendor/cmock/config/test_environment.rb +17 -0
  408. data/vendor/cmock/docs/CMockChangeLog.md +166 -0
  409. data/vendor/cmock/docs/CMockKnownIssues.md +13 -0
  410. data/vendor/cmock/docs/CMock_ArgumentValidation.md +274 -0
  411. data/vendor/cmock/docs/CMock_Summary.md +866 -0
  412. data/vendor/cmock/docs/CODE_OF_CONDUCT.md +138 -0
  413. data/vendor/cmock/docs/CONTRIBUTING.md +238 -0
  414. data/vendor/cmock/docs/ThrowTheSwitchCodingStandard.md +207 -0
  415. data/vendor/cmock/examples/make_example/Makefile +30 -0
  416. data/vendor/cmock/examples/make_example/src/foo.c +12 -0
  417. data/vendor/cmock/examples/make_example/src/foo.h +12 -0
  418. data/vendor/cmock/examples/make_example/src/main.c +22 -0
  419. data/vendor/cmock/examples/make_example/test/test_foo.c +24 -0
  420. data/vendor/cmock/examples/make_example/test/test_main.c +22 -0
  421. data/vendor/cmock/examples/temp_sensor/rakefile.rb +49 -0
  422. data/vendor/cmock/examples/temp_sensor/rakefile_helper.rb +280 -0
  423. data/vendor/cmock/examples/temp_sensor/src/AT91SAM7X256.h +2564 -0
  424. data/vendor/cmock/examples/temp_sensor/src/AdcConductor.c +49 -0
  425. data/vendor/cmock/examples/temp_sensor/src/AdcConductor.h +18 -0
  426. data/vendor/cmock/examples/temp_sensor/src/AdcHardware.c +34 -0
  427. data/vendor/cmock/examples/temp_sensor/src/AdcHardware.h +16 -0
  428. data/vendor/cmock/examples/temp_sensor/src/AdcHardwareConfigurator.c +25 -0
  429. data/vendor/cmock/examples/temp_sensor/src/AdcHardwareConfigurator.h +17 -0
  430. data/vendor/cmock/examples/temp_sensor/src/AdcModel.c +40 -0
  431. data/vendor/cmock/examples/temp_sensor/src/AdcModel.h +20 -0
  432. data/vendor/cmock/examples/temp_sensor/src/AdcTemperatureSensor.c +58 -0
  433. data/vendor/cmock/examples/temp_sensor/src/AdcTemperatureSensor.h +17 -0
  434. data/vendor/cmock/examples/temp_sensor/src/Executor.c +32 -0
  435. data/vendor/cmock/examples/temp_sensor/src/Executor.h +16 -0
  436. data/vendor/cmock/examples/temp_sensor/src/IntrinsicsWrapper.c +25 -0
  437. data/vendor/cmock/examples/temp_sensor/src/IntrinsicsWrapper.h +14 -0
  438. data/vendor/cmock/examples/temp_sensor/src/Main.c +53 -0
  439. data/vendor/cmock/examples/temp_sensor/src/Main.h +14 -0
  440. data/vendor/cmock/examples/temp_sensor/src/Model.c +17 -0
  441. data/vendor/cmock/examples/temp_sensor/src/Model.h +15 -0
  442. data/vendor/cmock/examples/temp_sensor/src/ModelConfig.h +14 -0
  443. data/vendor/cmock/examples/temp_sensor/src/TaskScheduler.c +79 -0
  444. data/vendor/cmock/examples/temp_sensor/src/TaskScheduler.h +18 -0
  445. data/vendor/cmock/examples/temp_sensor/src/TemperatureCalculator.c +34 -0
  446. data/vendor/cmock/examples/temp_sensor/src/TemperatureCalculator.h +13 -0
  447. data/vendor/cmock/examples/temp_sensor/src/TemperatureFilter.c +49 -0
  448. data/vendor/cmock/examples/temp_sensor/src/TemperatureFilter.h +17 -0
  449. data/vendor/cmock/examples/temp_sensor/src/TimerConductor.c +22 -0
  450. data/vendor/cmock/examples/temp_sensor/src/TimerConductor.h +16 -0
  451. data/vendor/cmock/examples/temp_sensor/src/TimerConfigurator.c +58 -0
  452. data/vendor/cmock/examples/temp_sensor/src/TimerConfigurator.h +22 -0
  453. data/vendor/cmock/examples/temp_sensor/src/TimerHardware.c +22 -0
  454. data/vendor/cmock/examples/temp_sensor/src/TimerHardware.h +15 -0
  455. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptConfigurator.c +62 -0
  456. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptConfigurator.h +20 -0
  457. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptHandler.c +32 -0
  458. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptHandler.h +17 -0
  459. data/vendor/cmock/examples/temp_sensor/src/TimerModel.c +16 -0
  460. data/vendor/cmock/examples/temp_sensor/src/TimerModel.h +15 -0
  461. data/vendor/cmock/examples/temp_sensor/src/Types.h +110 -0
  462. data/vendor/cmock/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.c +25 -0
  463. data/vendor/cmock/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.h +13 -0
  464. data/vendor/cmock/examples/temp_sensor/src/UsartConductor.c +28 -0
  465. data/vendor/cmock/examples/temp_sensor/src/UsartConductor.h +14 -0
  466. data/vendor/cmock/examples/temp_sensor/src/UsartConfigurator.c +46 -0
  467. data/vendor/cmock/examples/temp_sensor/src/UsartConfigurator.h +20 -0
  468. data/vendor/cmock/examples/temp_sensor/src/UsartHardware.c +29 -0
  469. data/vendor/cmock/examples/temp_sensor/src/UsartHardware.h +16 -0
  470. data/vendor/cmock/examples/temp_sensor/src/UsartModel.c +41 -0
  471. data/vendor/cmock/examples/temp_sensor/src/UsartModel.h +17 -0
  472. data/vendor/cmock/examples/temp_sensor/src/UsartPutChar.c +23 -0
  473. data/vendor/cmock/examples/temp_sensor/src/UsartPutChar.h +15 -0
  474. data/vendor/cmock/examples/temp_sensor/src/UsartTransmitBufferStatus.c +14 -0
  475. data/vendor/cmock/examples/temp_sensor/src/UsartTransmitBufferStatus.h +15 -0
  476. data/vendor/cmock/examples/temp_sensor/targets/gcc.yml +97 -0
  477. data/vendor/cmock/examples/temp_sensor/targets/iar_v4.yml +143 -0
  478. data/vendor/cmock/examples/temp_sensor/targets/iar_v5.yml +132 -0
  479. data/vendor/cmock/examples/temp_sensor/test/TestAdcConductor.c +128 -0
  480. data/vendor/cmock/examples/temp_sensor/test/TestAdcHardware.c +51 -0
  481. data/vendor/cmock/examples/temp_sensor/test/TestAdcHardwareConfigurator.c +50 -0
  482. data/vendor/cmock/examples/temp_sensor/test/TestAdcModel.c +40 -0
  483. data/vendor/cmock/examples/temp_sensor/test/TestAdcTemperatureSensor.c +54 -0
  484. data/vendor/cmock/examples/temp_sensor/test/TestExecutor.c +43 -0
  485. data/vendor/cmock/examples/temp_sensor/test/TestMain.c +31 -0
  486. data/vendor/cmock/examples/temp_sensor/test/TestModel.c +27 -0
  487. data/vendor/cmock/examples/temp_sensor/test/TestTaskScheduler.c +111 -0
  488. data/vendor/cmock/examples/temp_sensor/test/TestTemperatureCalculator.c +40 -0
  489. data/vendor/cmock/examples/temp_sensor/test/TestTemperatureFilter.c +76 -0
  490. data/vendor/cmock/examples/temp_sensor/test/TestTimerConductor.c +39 -0
  491. data/vendor/cmock/examples/temp_sensor/test/TestTimerConfigurator.c +119 -0
  492. data/vendor/cmock/examples/temp_sensor/test/TestTimerHardware.c +33 -0
  493. data/vendor/cmock/examples/temp_sensor/test/TestTimerInterruptConfigurator.c +85 -0
  494. data/vendor/cmock/examples/temp_sensor/test/TestTimerInterruptHandler.c +73 -0
  495. data/vendor/cmock/examples/temp_sensor/test/TestTimerModel.c +25 -0
  496. data/vendor/cmock/examples/temp_sensor/test/TestUsartBaudRateRegisterCalculator.c +28 -0
  497. data/vendor/cmock/examples/temp_sensor/test/TestUsartConductor.c +47 -0
  498. data/vendor/cmock/examples/temp_sensor/test/TestUsartConfigurator.c +84 -0
  499. data/vendor/cmock/examples/temp_sensor/test/TestUsartHardware.c +44 -0
  500. data/vendor/cmock/examples/temp_sensor/test/TestUsartModel.c +47 -0
  501. data/vendor/cmock/examples/temp_sensor/test/TestUsartPutChar.c +50 -0
  502. data/vendor/cmock/examples/temp_sensor/test/TestUsartTransmitBufferStatus.c +29 -0
  503. data/vendor/cmock/lib/cmock.rb +127 -0
  504. data/vendor/cmock/lib/cmock_config.rb +184 -0
  505. data/vendor/cmock/lib/cmock_file_writer.rb +48 -0
  506. data/vendor/cmock/lib/cmock_generator.rb +379 -0
  507. data/vendor/cmock/lib/cmock_generator_plugin_array.rb +68 -0
  508. data/vendor/cmock/lib/cmock_generator_plugin_callback.rb +88 -0
  509. data/vendor/cmock/lib/cmock_generator_plugin_cexception.rb +50 -0
  510. data/vendor/cmock/lib/cmock_generator_plugin_expect.rb +105 -0
  511. data/vendor/cmock/lib/cmock_generator_plugin_expect_any_args.rb +52 -0
  512. data/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +90 -0
  513. data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +49 -0
  514. data/vendor/cmock/lib/cmock_generator_plugin_ignore_stateless.rb +87 -0
  515. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +102 -0
  516. data/vendor/cmock/lib/cmock_generator_utils.rb +251 -0
  517. data/vendor/cmock/lib/cmock_header_parser.rb +629 -0
  518. data/vendor/cmock/lib/cmock_plugin_manager.rb +51 -0
  519. data/vendor/cmock/lib/cmock_unityhelper_parser.rb +82 -0
  520. data/vendor/cmock/lib/cmock_version.rb +29 -0
  521. data/vendor/cmock/meson.build +17 -0
  522. data/vendor/cmock/scripts/create_makefile.rb +210 -0
  523. data/vendor/cmock/scripts/create_mock.rb +15 -0
  524. data/vendor/cmock/scripts/create_runner.rb +25 -0
  525. data/vendor/cmock/scripts/test_summary.rb +25 -0
  526. data/vendor/cmock/src/cmock.c +238 -0
  527. data/vendor/cmock/src/cmock.h +54 -0
  528. data/vendor/cmock/src/cmock_internals.h +98 -0
  529. data/vendor/cmock/src/meson.build +12 -0
  530. data/vendor/cmock/test/c/TestCMockC.c +340 -0
  531. data/vendor/cmock/test/c/TestCMockC.yml +21 -0
  532. data/vendor/cmock/test/c/TestCMockCDynamic.c +193 -0
  533. data/vendor/cmock/test/c/TestCMockCDynamic.yml +19 -0
  534. data/vendor/cmock/test/c/TestCMockCDynamic_Runner.c +43 -0
  535. data/vendor/cmock/test/c/TestCMockC_Runner.c +48 -0
  536. data/vendor/cmock/test/iar/iar_v4/Resource/SAM7_FLASH.mac +71 -0
  537. data/vendor/cmock/test/iar/iar_v4/Resource/SAM7_RAM.mac +94 -0
  538. data/vendor/cmock/test/iar/iar_v4/Resource/SAM7_SIM.mac +67 -0
  539. data/vendor/cmock/test/iar/iar_v4/Resource/at91SAM7X256_FLASH.xcl +185 -0
  540. data/vendor/cmock/test/iar/iar_v4/Resource/at91SAM7X256_RAM.xcl +185 -0
  541. data/vendor/cmock/test/iar/iar_v4/Resource/ioat91sam7x256.ddf +2259 -0
  542. data/vendor/cmock/test/iar/iar_v4/cmock_demo.dep +3691 -0
  543. data/vendor/cmock/test/iar/iar_v4/cmock_demo.ewd +1696 -0
  544. data/vendor/cmock/test/iar/iar_v4/cmock_demo.ewp +2581 -0
  545. data/vendor/cmock/test/iar/iar_v4/cmock_demo.eww +10 -0
  546. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X-EK.h +68 -0
  547. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256.inc +2314 -0
  548. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256.rdf +4704 -0
  549. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256.tcl +3407 -0
  550. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256_inc.h +2275 -0
  551. data/vendor/cmock/test/iar/iar_v4/incIAR/ioat91sam7x256.h +4387 -0
  552. data/vendor/cmock/test/iar/iar_v4/incIAR/lib_AT91SAM7X256.h +4211 -0
  553. data/vendor/cmock/test/iar/iar_v4/settings/cmock_demo.cspy.bat +32 -0
  554. data/vendor/cmock/test/iar/iar_v4/settings/cmock_demo.dbgdt +86 -0
  555. data/vendor/cmock/test/iar/iar_v4/settings/cmock_demo.dni +42 -0
  556. data/vendor/cmock/test/iar/iar_v4/settings/cmock_demo.wsdt +76 -0
  557. data/vendor/cmock/test/iar/iar_v4/srcIAR/Cstartup.s79 +266 -0
  558. data/vendor/cmock/test/iar/iar_v4/srcIAR/Cstartup_SAM7.c +105 -0
  559. data/vendor/cmock/test/iar/iar_v5/Resource/SAM7_FLASH.mac +71 -0
  560. data/vendor/cmock/test/iar/iar_v5/Resource/SAM7_RAM.mac +94 -0
  561. data/vendor/cmock/test/iar/iar_v5/Resource/SAM7_SIM.mac +67 -0
  562. data/vendor/cmock/test/iar/iar_v5/Resource/at91SAM7X256_FLASH.icf +43 -0
  563. data/vendor/cmock/test/iar/iar_v5/Resource/at91SAM7X256_RAM.icf +42 -0
  564. data/vendor/cmock/test/iar/iar_v5/cmock_demo.dep +4204 -0
  565. data/vendor/cmock/test/iar/iar_v5/cmock_demo.ewd +1906 -0
  566. data/vendor/cmock/test/iar/iar_v5/cmock_demo.ewp +2426 -0
  567. data/vendor/cmock/test/iar/iar_v5/cmock_demo.eww +26 -0
  568. data/vendor/cmock/test/iar/iar_v5/incIAR/AT91SAM7X-EK.h +68 -0
  569. data/vendor/cmock/test/iar/iar_v5/incIAR/AT91SAM7X256_inc.h +2275 -0
  570. data/vendor/cmock/test/iar/iar_v5/incIAR/lib_AT91SAM7X256.h +4211 -0
  571. data/vendor/cmock/test/iar/iar_v5/incIAR/project.h +37 -0
  572. data/vendor/cmock/test/iar/iar_v5/settings/BasicInterrupt_SAM7X.cspy.bat +33 -0
  573. data/vendor/cmock/test/iar/iar_v5/settings/BasicInterrupt_SAM7X.dbgdt +5 -0
  574. data/vendor/cmock/test/iar/iar_v5/settings/BasicInterrupt_SAM7X.dni +18 -0
  575. data/vendor/cmock/test/iar/iar_v5/settings/BasicInterrupt_SAM7X.wsdt +74 -0
  576. data/vendor/cmock/test/iar/iar_v5/settings/BasicInterrupt_SAM7X_FLASH_Debug.jlink +12 -0
  577. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo.cspy.bat +33 -0
  578. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo.dbgdt +85 -0
  579. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo.dni +44 -0
  580. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo.wsdt +73 -0
  581. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo_Binary.jlink +12 -0
  582. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo_FLASH_Debug.jlink +12 -0
  583. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo_RAM_Debug.jlink +12 -0
  584. data/vendor/cmock/test/iar/iar_v5/srcIAR/Cstartup.s +299 -0
  585. data/vendor/cmock/test/iar/iar_v5/srcIAR/Cstartup_SAM7.c +105 -0
  586. data/vendor/cmock/test/rakefile +150 -0
  587. data/vendor/cmock/test/rakefile_helper.rb +417 -0
  588. data/vendor/cmock/test/system/systest_generator.rb +206 -0
  589. data/vendor/cmock/test/system/test_compilation/callingconv.h +18 -0
  590. data/vendor/cmock/test/system/test_compilation/config.yml +17 -0
  591. data/vendor/cmock/test/system/test_compilation/const.h +44 -0
  592. data/vendor/cmock/test/system/test_compilation/inline.h +30 -0
  593. data/vendor/cmock/test/system/test_compilation/osek.h +282 -0
  594. data/vendor/cmock/test/system/test_compilation/parsing.h +99 -0
  595. data/vendor/cmock/test/system/test_interactions/all_plugins_but_other_limits.yml +382 -0
  596. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +467 -0
  597. data/vendor/cmock/test/system/test_interactions/array_and_pointer_handling.yml +453 -0
  598. data/vendor/cmock/test/system/test_interactions/basic_expect_and_return.yml +131 -0
  599. data/vendor/cmock/test/system/test_interactions/const_primitives_handling.yml +94 -0
  600. data/vendor/cmock/test/system/test_interactions/doesnt_leave_details_behind.yml +315 -0
  601. data/vendor/cmock/test/system/test_interactions/enforce_strict_ordering.yml +254 -0
  602. data/vendor/cmock/test/system/test_interactions/expect_and_return_custom_types.yml +115 -0
  603. data/vendor/cmock/test/system/test_interactions/expect_and_return_treat_as.yml +180 -0
  604. data/vendor/cmock/test/system/test_interactions/expect_and_throw.yml +177 -0
  605. data/vendor/cmock/test/system/test_interactions/expect_any_args.yml +245 -0
  606. data/vendor/cmock/test/system/test_interactions/fancy_pointer_handling.yml +217 -0
  607. data/vendor/cmock/test/system/test_interactions/function_pointer_handling.yml +90 -0
  608. data/vendor/cmock/test/system/test_interactions/ignore_and_return.yml +336 -0
  609. data/vendor/cmock/test/system/test_interactions/ignore_and_return_stateless.yml +332 -0
  610. data/vendor/cmock/test/system/test_interactions/ignore_strict_mock_calling.yml +44 -0
  611. data/vendor/cmock/test/system/test_interactions/newer_standards_stuff1.yml +59 -0
  612. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_1.yml +98 -0
  613. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_2.yml +66 -0
  614. data/vendor/cmock/test/system/test_interactions/out_of_memory.yml +72 -0
  615. data/vendor/cmock/test/system/test_interactions/parsing_challenges.yml +249 -0
  616. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_and_expect_any_args.yml +242 -0
  617. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +238 -0
  618. data/vendor/cmock/test/system/test_interactions/skeleton.yml +62 -0
  619. data/vendor/cmock/test/system/test_interactions/skeleton_update.yml +83 -0
  620. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return.yml +284 -0
  621. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return_with_plugins.yml +287 -0
  622. data/vendor/cmock/test/system/test_interactions/stubs_with_callbacks.yml +228 -0
  623. data/vendor/cmock/test/system/test_interactions/unity_64bit_support.yml +84 -0
  624. data/vendor/cmock/test/system/test_interactions/unity_ignores.yml +146 -0
  625. data/vendor/cmock/test/system/test_interactions/unity_void_pointer_compare.yml +98 -0
  626. data/vendor/cmock/test/system/test_interactions/wrong_expect_and_return.yml +149 -0
  627. data/vendor/cmock/test/targets/clang_strict.yml +97 -0
  628. data/vendor/cmock/test/targets/gcc.yml +65 -0
  629. data/vendor/cmock/test/targets/gcc_64.yml +65 -0
  630. data/vendor/cmock/test/targets/gcc_tiny.yml +87 -0
  631. data/vendor/cmock/test/targets/iar_arm_v4.yml +117 -0
  632. data/vendor/cmock/test/targets/iar_arm_v5.yml +102 -0
  633. data/vendor/cmock/test/test_helper.rb +45 -0
  634. data/vendor/cmock/test/unit/cmock_config_test.rb +127 -0
  635. data/vendor/cmock/test/unit/cmock_config_test.yml +14 -0
  636. data/vendor/cmock/test/unit/cmock_file_writer_test.rb +28 -0
  637. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +706 -0
  638. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +145 -0
  639. data/vendor/cmock/test/unit/cmock_generator_plugin_callback_test.rb +282 -0
  640. data/vendor/cmock/test/unit/cmock_generator_plugin_cexception_test.rb +109 -0
  641. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_a_test.rb +189 -0
  642. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_any_args_test.rb +71 -0
  643. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_b_test.rb +205 -0
  644. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +117 -0
  645. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_stateless_test.rb +121 -0
  646. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +124 -0
  647. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +209 -0
  648. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +404 -0
  649. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +2886 -0
  650. data/vendor/cmock/test/unit/cmock_plugin_manager_test.rb +102 -0
  651. data/vendor/cmock/test/unit/cmock_unityhelper_parser_test.rb +224 -0
  652. data/vendor/cmock/vendor/behaviors/Manifest.txt +9 -0
  653. data/vendor/cmock/vendor/behaviors/Rakefile +19 -0
  654. data/vendor/cmock/vendor/behaviors/lib/behaviors/reporttask.rb +158 -0
  655. data/vendor/cmock/vendor/behaviors/lib/behaviors.rb +76 -0
  656. data/vendor/cmock/vendor/behaviors/test/behaviors_tasks_test.rb +73 -0
  657. data/vendor/cmock/vendor/behaviors/test/behaviors_test.rb +50 -0
  658. data/vendor/cmock/vendor/behaviors/test/tasks_test/Rakefile +19 -0
  659. data/vendor/cmock/vendor/behaviors/test/tasks_test/lib/user.rb +2 -0
  660. data/vendor/cmock/vendor/behaviors/test/tasks_test/test/user_test.rb +17 -0
  661. data/vendor/cmock/vendor/c_exception/README.md +236 -0
  662. data/vendor/cmock/vendor/c_exception/docs/CException.md +289 -0
  663. data/vendor/cmock/vendor/c_exception/docs/CODE_OF_CONDUCT.md +138 -0
  664. data/vendor/cmock/vendor/c_exception/docs/CONTRIBUTING.md +238 -0
  665. data/vendor/cmock/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -0
  666. data/vendor/cmock/vendor/c_exception/lib/CException.c +59 -0
  667. data/vendor/cmock/vendor/c_exception/lib/CException.h +122 -0
  668. data/vendor/cmock/vendor/c_exception/lib/meson.build +11 -0
  669. data/vendor/cmock/vendor/c_exception/license.txt +22 -0
  670. data/vendor/cmock/vendor/c_exception/meson.build +14 -0
  671. data/vendor/cmock/vendor/c_exception/project.yml +263 -0
  672. data/vendor/cmock/vendor/c_exception/test/TestException.c +398 -0
  673. data/vendor/cmock/vendor/c_exception/test/support/CExceptionConfig.h +53 -0
  674. data/vendor/cmock/vendor/unity/CMakeLists.txt +172 -0
  675. data/vendor/cmock/vendor/unity/LICENSE.txt +21 -0
  676. data/vendor/cmock/vendor/unity/README.md +234 -0
  677. data/vendor/cmock/vendor/unity/auto/__init__.py +7 -0
  678. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +120 -0
  679. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +40 -0
  680. data/vendor/cmock/vendor/unity/auto/extract_version.py +22 -0
  681. data/vendor/cmock/vendor/unity/auto/generate_config.yml +43 -0
  682. data/vendor/cmock/vendor/unity/auto/generate_module.rb +318 -0
  683. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +547 -0
  684. data/vendor/cmock/vendor/unity/auto/parse_output.rb +390 -0
  685. data/vendor/cmock/vendor/unity/auto/run_test.erb +37 -0
  686. data/vendor/cmock/vendor/unity/auto/stylize_as_junit.py +161 -0
  687. data/vendor/cmock/vendor/unity/auto/stylize_as_junit.rb +253 -0
  688. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +28 -0
  689. data/vendor/cmock/vendor/unity/auto/type_sanitizer.rb +13 -0
  690. data/vendor/cmock/vendor/unity/auto/unity_test_summary.py +140 -0
  691. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +140 -0
  692. data/vendor/cmock/vendor/unity/auto/yaml_helper.rb +23 -0
  693. data/vendor/cmock/vendor/unity/docs/CODE_OF_CONDUCT.md +138 -0
  694. data/vendor/cmock/vendor/unity/docs/CONTRIBUTING.md +238 -0
  695. data/vendor/cmock/vendor/unity/docs/MesonGeneratorRunner.md +18 -0
  696. data/vendor/cmock/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +187 -0
  697. data/vendor/cmock/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  698. data/vendor/cmock/vendor/unity/docs/UnityAssertionsReference.md +860 -0
  699. data/vendor/cmock/vendor/unity/docs/UnityChangeLog.md +110 -0
  700. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +654 -0
  701. data/vendor/cmock/vendor/unity/docs/UnityGettingStartedGuide.md +242 -0
  702. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +533 -0
  703. data/vendor/cmock/vendor/unity/docs/UnityKnownIssues.md +13 -0
  704. data/vendor/cmock/vendor/unity/examples/example_1/makefile +73 -0
  705. data/vendor/cmock/vendor/unity/examples/example_1/meson.build +48 -0
  706. data/vendor/cmock/vendor/unity/examples/example_1/readme.txt +12 -0
  707. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.c +30 -0
  708. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.h +9 -0
  709. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.c +17 -0
  710. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.h +8 -0
  711. data/vendor/cmock/vendor/unity/examples/example_1/subprojects/unity.wrap +3 -0
  712. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode.c +68 -0
  713. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode2.c +37 -0
  714. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
  715. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
  716. data/vendor/cmock/vendor/unity/examples/example_2/makefile +72 -0
  717. data/vendor/cmock/vendor/unity/examples/example_2/readme.txt +5 -0
  718. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.c +30 -0
  719. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.h +9 -0
  720. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.c +17 -0
  721. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.h +8 -0
  722. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode.c +71 -0
  723. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode2.c +40 -0
  724. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +16 -0
  725. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +18 -0
  726. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/all_tests.c +19 -0
  727. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.c +17 -0
  728. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.h +19 -0
  729. data/vendor/cmock/vendor/unity/examples/example_3/rakefile.rb +45 -0
  730. data/vendor/cmock/vendor/unity/examples/example_3/rakefile_helper.rb +255 -0
  731. data/vendor/cmock/vendor/unity/examples/example_3/readme.txt +13 -0
  732. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.c +30 -0
  733. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.h +9 -0
  734. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.c +17 -0
  735. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.h +8 -0
  736. data/vendor/cmock/vendor/unity/examples/example_3/target_gcc_32.yml +54 -0
  737. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode.c +68 -0
  738. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode2.c +37 -0
  739. data/vendor/cmock/vendor/unity/examples/example_4/meson.build +12 -0
  740. data/vendor/cmock/vendor/unity/examples/example_4/readme.txt +15 -0
  741. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode.c +30 -0
  742. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode.h +9 -0
  743. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode2.c +17 -0
  744. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode2.h +8 -0
  745. data/vendor/cmock/vendor/unity/examples/example_4/src/meson.build +16 -0
  746. data/vendor/cmock/vendor/unity/examples/example_4/subprojects/unity.wrap +6 -0
  747. data/vendor/cmock/vendor/unity/examples/example_4/test/TestProductionCode.c +69 -0
  748. data/vendor/cmock/vendor/unity/examples/example_4/test/TestProductionCode2.c +41 -0
  749. data/vendor/cmock/vendor/unity/examples/example_4/test/meson.build +7 -0
  750. data/vendor/cmock/vendor/unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +53 -0
  751. data/vendor/cmock/vendor/unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +57 -0
  752. data/vendor/cmock/vendor/unity/examples/example_4/test/test_runners/meson.build +13 -0
  753. data/vendor/cmock/vendor/unity/examples/unity_config.h +251 -0
  754. data/vendor/cmock/vendor/unity/extras/bdd/readme.md +40 -0
  755. data/vendor/cmock/vendor/unity/extras/bdd/src/unity_bdd.h +44 -0
  756. data/vendor/cmock/vendor/unity/extras/bdd/test/meson.build +9 -0
  757. data/vendor/cmock/vendor/unity/extras/bdd/test/test_bdd.c +129 -0
  758. data/vendor/cmock/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  759. data/vendor/cmock/vendor/unity/extras/fixture/readme.md +26 -0
  760. data/vendor/cmock/vendor/unity/extras/fixture/src/meson.build +10 -0
  761. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +310 -0
  762. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +94 -0
  763. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +50 -0
  764. data/vendor/cmock/vendor/unity/extras/fixture/test/Makefile +72 -0
  765. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +20 -0
  766. data/vendor/cmock/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -0
  767. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +245 -0
  768. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +32 -0
  769. data/vendor/cmock/vendor/unity/extras/memory/readme.md +42 -0
  770. data/vendor/cmock/vendor/unity/extras/memory/src/meson.build +9 -0
  771. data/vendor/cmock/vendor/unity/extras/memory/src/unity_memory.c +203 -0
  772. data/vendor/cmock/vendor/unity/extras/memory/src/unity_memory.h +61 -0
  773. data/vendor/cmock/vendor/unity/extras/memory/test/Makefile +85 -0
  774. data/vendor/cmock/vendor/unity/extras/memory/test/unity_memory_Test.c +326 -0
  775. data/vendor/cmock/vendor/unity/extras/memory/test/unity_memory_TestRunner.c +50 -0
  776. data/vendor/cmock/vendor/unity/extras/memory/test/unity_output_Spy.c +57 -0
  777. data/vendor/cmock/vendor/unity/extras/memory/test/unity_output_Spy.h +17 -0
  778. data/vendor/cmock/vendor/unity/library.json +25 -0
  779. data/vendor/cmock/vendor/unity/meson.build +80 -0
  780. data/vendor/cmock/vendor/unity/meson_options.txt +3 -0
  781. data/vendor/cmock/vendor/unity/platformio-build.py +24 -0
  782. data/vendor/cmock/vendor/unity/src/meson.build +17 -0
  783. data/vendor/cmock/vendor/unity/src/unity.c +2501 -0
  784. data/vendor/cmock/vendor/unity/src/unity.h +698 -0
  785. data/vendor/cmock/vendor/unity/src/unity_internals.h +1183 -0
  786. data/vendor/cmock/vendor/unity/test/Makefile +167 -0
  787. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +61 -0
  788. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +57 -0
  789. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.c +55 -0
  790. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.h +15 -0
  791. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -0
  792. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +76 -0
  793. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  794. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -0
  795. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -0
  796. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -0
  797. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +77 -0
  798. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -0
  799. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -0
  800. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -0
  801. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +67 -0
  802. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +70 -0
  803. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +58 -0
  804. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +67 -0
  805. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +70 -0
  806. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +71 -0
  807. data/vendor/cmock/vendor/unity/test/rakefile +164 -0
  808. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +316 -0
  809. data/vendor/cmock/vendor/unity/test/spec/generate_module_existing_file_spec.rb +164 -0
  810. data/vendor/cmock/vendor/unity/test/targets/ansi.yml +51 -0
  811. data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +79 -0
  812. data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +79 -0
  813. data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +52 -0
  814. data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +53 -0
  815. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_limits.yml +50 -0
  816. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_stdint.yml +62 -0
  817. data/vendor/cmock/vendor/unity/test/targets/gcc_manual_math.yml +50 -0
  818. data/vendor/cmock/vendor/unity/test/targets/hitech_picc18.yml +98 -0
  819. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v4.yml +105 -0
  820. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5.yml +99 -0
  821. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5_3.yml +99 -0
  822. data/vendor/cmock/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +97 -0
  823. data/vendor/cmock/vendor/unity/test/targets/iar_cortexm3_v5.yml +101 -0
  824. data/vendor/cmock/vendor/unity/test/targets/iar_msp430.yml +119 -0
  825. data/vendor/cmock/vendor/unity/test/targets/iar_sh2a_v6.yml +106 -0
  826. data/vendor/cmock/vendor/unity/test/testdata/CException.h +18 -0
  827. data/vendor/cmock/vendor/unity/test/testdata/Defs.h +16 -0
  828. data/vendor/cmock/vendor/unity/test/testdata/cmock.h +21 -0
  829. data/vendor/cmock/vendor/unity/test/testdata/mockMock.h +20 -0
  830. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGenerator.c +204 -0
  831. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +73 -0
  832. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +200 -0
  833. data/vendor/cmock/vendor/unity/test/tests/self_assessment_utils.h +151 -0
  834. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +1341 -0
  835. data/vendor/cmock/vendor/unity/test/tests/test_unity_arrays.c +2941 -0
  836. data/vendor/cmock/vendor/unity/test/tests/test_unity_core.c +375 -0
  837. data/vendor/cmock/vendor/unity/test/tests/test_unity_doubles.c +1285 -0
  838. data/vendor/cmock/vendor/unity/test/tests/test_unity_floats.c +1395 -0
  839. data/vendor/cmock/vendor/unity/test/tests/test_unity_integers.c +2863 -0
  840. data/vendor/cmock/vendor/unity/test/tests/test_unity_integers_64.c +783 -0
  841. data/vendor/cmock/vendor/unity/test/tests/test_unity_memory.c +82 -0
  842. data/vendor/cmock/vendor/unity/test/tests/test_unity_parameterized.c +309 -0
  843. data/vendor/cmock/vendor/unity/test/tests/test_unity_parameterizedDemo.c +28 -0
  844. data/vendor/cmock/vendor/unity/test/tests/test_unity_strings.c +330 -0
  845. data/vendor/cmock/vendor/unity/test/tests/types_for_test.h +21 -0
  846. data/vendor/cmock/vendor/unity/unityConfig.cmake +1 -0
  847. data/vendor/diy/History.txt +28 -0
  848. data/vendor/diy/LICENSE.txt +7 -0
  849. data/vendor/diy/README.rdoc +215 -0
  850. data/vendor/diy/Rakefile +33 -0
  851. data/vendor/diy/TODO.txt +9 -0
  852. data/vendor/diy/diy.gemspec +131 -0
  853. data/vendor/diy/lib/diy/factory.rb +44 -0
  854. data/vendor/diy/lib/diy.rb +411 -0
  855. data/vendor/diy/sample_code/car.rb +15 -0
  856. data/vendor/diy/sample_code/chassis.rb +13 -0
  857. data/vendor/diy/sample_code/diy_example.rb +34 -0
  858. data/vendor/diy/sample_code/engine.rb +13 -0
  859. data/vendor/diy/sample_code/objects.yml +18 -0
  860. data/vendor/diy/test/constructor.rb +127 -0
  861. data/vendor/diy/test/diy_test.rb +616 -0
  862. data/vendor/diy/test/factory_test.rb +87 -0
  863. data/vendor/diy/test/files/broken_construction.yml +15 -0
  864. data/vendor/diy/test/files/cat/cat.rb +11 -0
  865. data/vendor/diy/test/files/cat/extra_conflict.yml +13 -0
  866. data/vendor/diy/test/files/cat/heritage.rb +10 -0
  867. data/vendor/diy/test/files/cat/needs_input.yml +11 -0
  868. data/vendor/diy/test/files/cat/the_cat_lineage.rb +9 -0
  869. data/vendor/diy/test/files/dog/dog_model.rb +11 -0
  870. data/vendor/diy/test/files/dog/dog_presenter.rb +11 -0
  871. data/vendor/diy/test/files/dog/dog_view.rb +10 -0
  872. data/vendor/diy/test/files/dog/file_resolver.rb +10 -0
  873. data/vendor/diy/test/files/dog/other_thing.rb +10 -0
  874. data/vendor/diy/test/files/dog/simple.yml +19 -0
  875. data/vendor/diy/test/files/donkey/foo/bar/qux.rb +15 -0
  876. data/vendor/diy/test/files/donkey/foo.rb +16 -0
  877. data/vendor/diy/test/files/factory/beef.rb +13 -0
  878. data/vendor/diy/test/files/factory/dog.rb +14 -0
  879. data/vendor/diy/test/files/factory/factory.yml +27 -0
  880. data/vendor/diy/test/files/factory/farm/llama.rb +15 -0
  881. data/vendor/diy/test/files/factory/farm/pork.rb +15 -0
  882. data/vendor/diy/test/files/factory/kitten.rb +21 -0
  883. data/vendor/diy/test/files/fud/objects.yml +21 -0
  884. data/vendor/diy/test/files/fud/toy.rb +22 -0
  885. data/vendor/diy/test/files/functions/attached_things_builder.rb +10 -0
  886. data/vendor/diy/test/files/functions/invalid_method.yml +13 -0
  887. data/vendor/diy/test/files/functions/method_extractor.rb +11 -0
  888. data/vendor/diy/test/files/functions/nonsingleton_objects.yml +14 -0
  889. data/vendor/diy/test/files/functions/objects.yml +30 -0
  890. data/vendor/diy/test/files/functions/thing.rb +11 -0
  891. data/vendor/diy/test/files/functions/thing_builder.rb +33 -0
  892. data/vendor/diy/test/files/functions/things_builder.rb +11 -0
  893. data/vendor/diy/test/files/gnu/objects.yml +22 -0
  894. data/vendor/diy/test/files/gnu/thinger.rb +15 -0
  895. data/vendor/diy/test/files/goat/base.rb +16 -0
  896. data/vendor/diy/test/files/goat/can.rb +14 -0
  897. data/vendor/diy/test/files/goat/goat.rb +14 -0
  898. data/vendor/diy/test/files/goat/objects.yml +20 -0
  899. data/vendor/diy/test/files/goat/paper.rb +14 -0
  900. data/vendor/diy/test/files/goat/plane.rb +15 -0
  901. data/vendor/diy/test/files/goat/shirt.rb +14 -0
  902. data/vendor/diy/test/files/goat/wings.rb +16 -0
  903. data/vendor/diy/test/files/horse/holder_thing.rb +11 -0
  904. data/vendor/diy/test/files/horse/objects.yml +15 -0
  905. data/vendor/diy/test/files/namespace/animal/bird.rb +13 -0
  906. data/vendor/diy/test/files/namespace/animal/cat.rb +13 -0
  907. data/vendor/diy/test/files/namespace/animal/reptile/hardshell/turtle.rb +16 -0
  908. data/vendor/diy/test/files/namespace/animal/reptile/lizard.rb +15 -0
  909. data/vendor/diy/test/files/namespace/bad_module_specified.yml +16 -0
  910. data/vendor/diy/test/files/namespace/class_name_combine.yml +16 -0
  911. data/vendor/diy/test/files/namespace/hello.txt +1 -0
  912. data/vendor/diy/test/files/namespace/no_module_specified.yml +16 -0
  913. data/vendor/diy/test/files/namespace/objects.yml +29 -0
  914. data/vendor/diy/test/files/namespace/road.rb +10 -0
  915. data/vendor/diy/test/files/namespace/sky.rb +10 -0
  916. data/vendor/diy/test/files/namespace/subcontext.yml +30 -0
  917. data/vendor/diy/test/files/non_singleton/air.rb +10 -0
  918. data/vendor/diy/test/files/non_singleton/fat_cat.rb +11 -0
  919. data/vendor/diy/test/files/non_singleton/objects.yml +27 -0
  920. data/vendor/diy/test/files/non_singleton/pig.rb +11 -0
  921. data/vendor/diy/test/files/non_singleton/thread_spinner.rb +11 -0
  922. data/vendor/diy/test/files/non_singleton/tick.rb +11 -0
  923. data/vendor/diy/test/files/non_singleton/yard.rb +10 -0
  924. data/vendor/diy/test/files/yak/core_model.rb +11 -0
  925. data/vendor/diy/test/files/yak/core_presenter.rb +11 -0
  926. data/vendor/diy/test/files/yak/core_view.rb +9 -0
  927. data/vendor/diy/test/files/yak/data_source.rb +9 -0
  928. data/vendor/diy/test/files/yak/fringe_model.rb +11 -0
  929. data/vendor/diy/test/files/yak/fringe_presenter.rb +11 -0
  930. data/vendor/diy/test/files/yak/fringe_view.rb +9 -0
  931. data/vendor/diy/test/files/yak/giant_squid.rb +11 -0
  932. data/vendor/diy/test/files/yak/krill.rb +10 -0
  933. data/vendor/diy/test/files/yak/my_objects.yml +29 -0
  934. data/vendor/diy/test/files/yak/sub_sub_context_test.yml +35 -0
  935. data/vendor/diy/test/test_helper.rb +63 -0
  936. data/vendor/unity/CMakeLists.txt +172 -0
  937. data/vendor/unity/LICENSE.txt +21 -0
  938. data/vendor/unity/README.md +234 -0
  939. data/vendor/unity/auto/__init__.py +7 -0
  940. data/vendor/unity/auto/colour_prompt.rb +120 -0
  941. data/vendor/unity/auto/colour_reporter.rb +40 -0
  942. data/vendor/unity/auto/extract_version.py +22 -0
  943. data/vendor/unity/auto/generate_config.yml +43 -0
  944. data/vendor/unity/auto/generate_module.rb +318 -0
  945. data/vendor/unity/auto/generate_test_runner.rb +547 -0
  946. data/vendor/unity/auto/parse_output.rb +390 -0
  947. data/vendor/unity/auto/run_test.erb +37 -0
  948. data/vendor/unity/auto/stylize_as_junit.py +161 -0
  949. data/vendor/unity/auto/stylize_as_junit.rb +253 -0
  950. data/vendor/unity/auto/test_file_filter.rb +28 -0
  951. data/vendor/unity/auto/type_sanitizer.rb +13 -0
  952. data/vendor/unity/auto/unity_test_summary.py +140 -0
  953. data/vendor/unity/auto/unity_test_summary.rb +140 -0
  954. data/vendor/unity/auto/yaml_helper.rb +23 -0
  955. data/vendor/unity/docs/CODE_OF_CONDUCT.md +138 -0
  956. data/vendor/unity/docs/CONTRIBUTING.md +238 -0
  957. data/vendor/unity/docs/MesonGeneratorRunner.md +18 -0
  958. data/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +187 -0
  959. data/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  960. data/vendor/unity/docs/UnityAssertionsReference.md +860 -0
  961. data/vendor/unity/docs/UnityChangeLog.md +110 -0
  962. data/vendor/unity/docs/UnityConfigurationGuide.md +654 -0
  963. data/vendor/unity/docs/UnityGettingStartedGuide.md +242 -0
  964. data/vendor/unity/docs/UnityHelperScriptsGuide.md +533 -0
  965. data/vendor/unity/docs/UnityKnownIssues.md +13 -0
  966. data/vendor/unity/examples/example_1/makefile +73 -0
  967. data/vendor/unity/examples/example_1/meson.build +48 -0
  968. data/vendor/unity/examples/example_1/readme.txt +12 -0
  969. data/vendor/unity/examples/example_1/src/ProductionCode.c +30 -0
  970. data/vendor/unity/examples/example_1/src/ProductionCode.h +9 -0
  971. data/vendor/unity/examples/example_1/src/ProductionCode2.c +17 -0
  972. data/vendor/unity/examples/example_1/src/ProductionCode2.h +8 -0
  973. data/vendor/unity/examples/example_1/subprojects/unity.wrap +3 -0
  974. data/vendor/unity/examples/example_1/test/TestProductionCode.c +68 -0
  975. data/vendor/unity/examples/example_1/test/TestProductionCode2.c +37 -0
  976. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
  977. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
  978. data/vendor/unity/examples/example_2/makefile +72 -0
  979. data/vendor/unity/examples/example_2/readme.txt +5 -0
  980. data/vendor/unity/examples/example_2/src/ProductionCode.c +30 -0
  981. data/vendor/unity/examples/example_2/src/ProductionCode.h +9 -0
  982. data/vendor/unity/examples/example_2/src/ProductionCode2.c +17 -0
  983. data/vendor/unity/examples/example_2/src/ProductionCode2.h +8 -0
  984. data/vendor/unity/examples/example_2/test/TestProductionCode.c +71 -0
  985. data/vendor/unity/examples/example_2/test/TestProductionCode2.c +40 -0
  986. data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +16 -0
  987. data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +18 -0
  988. data/vendor/unity/examples/example_2/test/test_runners/all_tests.c +19 -0
  989. data/vendor/unity/examples/example_3/helper/UnityHelper.c +17 -0
  990. data/vendor/unity/examples/example_3/helper/UnityHelper.h +19 -0
  991. data/vendor/unity/examples/example_3/rakefile.rb +45 -0
  992. data/vendor/unity/examples/example_3/rakefile_helper.rb +255 -0
  993. data/vendor/unity/examples/example_3/readme.txt +13 -0
  994. data/vendor/unity/examples/example_3/src/ProductionCode.c +30 -0
  995. data/vendor/unity/examples/example_3/src/ProductionCode.h +9 -0
  996. data/vendor/unity/examples/example_3/src/ProductionCode2.c +17 -0
  997. data/vendor/unity/examples/example_3/src/ProductionCode2.h +8 -0
  998. data/vendor/unity/examples/example_3/target_gcc_32.yml +54 -0
  999. data/vendor/unity/examples/example_3/test/TestProductionCode.c +68 -0
  1000. data/vendor/unity/examples/example_3/test/TestProductionCode2.c +37 -0
  1001. data/vendor/unity/examples/example_4/meson.build +12 -0
  1002. data/vendor/unity/examples/example_4/readme.txt +15 -0
  1003. data/vendor/unity/examples/example_4/src/ProductionCode.c +30 -0
  1004. data/vendor/unity/examples/example_4/src/ProductionCode.h +9 -0
  1005. data/vendor/unity/examples/example_4/src/ProductionCode2.c +17 -0
  1006. data/vendor/unity/examples/example_4/src/ProductionCode2.h +8 -0
  1007. data/vendor/unity/examples/example_4/src/meson.build +16 -0
  1008. data/vendor/unity/examples/example_4/subprojects/unity.wrap +6 -0
  1009. data/vendor/unity/examples/example_4/test/TestProductionCode.c +69 -0
  1010. data/vendor/unity/examples/example_4/test/TestProductionCode2.c +41 -0
  1011. data/vendor/unity/examples/example_4/test/meson.build +7 -0
  1012. data/vendor/unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +53 -0
  1013. data/vendor/unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +57 -0
  1014. data/vendor/unity/examples/example_4/test/test_runners/meson.build +13 -0
  1015. data/vendor/unity/examples/unity_config.h +251 -0
  1016. data/vendor/unity/extras/bdd/readme.md +40 -0
  1017. data/vendor/unity/extras/bdd/src/unity_bdd.h +44 -0
  1018. data/vendor/unity/extras/bdd/test/meson.build +9 -0
  1019. data/vendor/unity/extras/bdd/test/test_bdd.c +129 -0
  1020. data/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  1021. data/vendor/unity/extras/fixture/readme.md +26 -0
  1022. data/vendor/unity/extras/fixture/src/meson.build +10 -0
  1023. data/vendor/unity/extras/fixture/src/unity_fixture.c +310 -0
  1024. data/vendor/unity/extras/fixture/src/unity_fixture.h +94 -0
  1025. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +50 -0
  1026. data/vendor/unity/extras/fixture/test/Makefile +72 -0
  1027. data/vendor/unity/extras/fixture/test/main/AllTests.c +20 -0
  1028. data/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -0
  1029. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +245 -0
  1030. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +32 -0
  1031. data/vendor/unity/extras/memory/readme.md +42 -0
  1032. data/vendor/unity/extras/memory/src/meson.build +9 -0
  1033. data/vendor/unity/extras/memory/src/unity_memory.c +203 -0
  1034. data/vendor/unity/extras/memory/src/unity_memory.h +61 -0
  1035. data/vendor/unity/extras/memory/test/Makefile +85 -0
  1036. data/vendor/unity/extras/memory/test/unity_memory_Test.c +326 -0
  1037. data/vendor/unity/extras/memory/test/unity_memory_TestRunner.c +50 -0
  1038. data/vendor/unity/extras/memory/test/unity_output_Spy.c +57 -0
  1039. data/vendor/unity/extras/memory/test/unity_output_Spy.h +17 -0
  1040. data/vendor/unity/library.json +25 -0
  1041. data/vendor/unity/meson.build +80 -0
  1042. data/vendor/unity/meson_options.txt +3 -0
  1043. data/vendor/unity/platformio-build.py +24 -0
  1044. data/vendor/unity/src/meson.build +17 -0
  1045. data/vendor/unity/src/unity.c +2501 -0
  1046. data/vendor/unity/src/unity.h +698 -0
  1047. data/vendor/unity/src/unity_internals.h +1183 -0
  1048. data/vendor/unity/test/Makefile +167 -0
  1049. data/vendor/unity/test/expectdata/testsample_cmd.c +61 -0
  1050. data/vendor/unity/test/expectdata/testsample_def.c +57 -0
  1051. data/vendor/unity/test/expectdata/testsample_head1.c +55 -0
  1052. data/vendor/unity/test/expectdata/testsample_head1.h +15 -0
  1053. data/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -0
  1054. data/vendor/unity/test/expectdata/testsample_mock_def.c +76 -0
  1055. data/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  1056. data/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -0
  1057. data/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -0
  1058. data/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -0
  1059. data/vendor/unity/test/expectdata/testsample_mock_param.c +77 -0
  1060. data/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -0
  1061. data/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -0
  1062. data/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -0
  1063. data/vendor/unity/test/expectdata/testsample_new1.c +67 -0
  1064. data/vendor/unity/test/expectdata/testsample_new2.c +70 -0
  1065. data/vendor/unity/test/expectdata/testsample_param.c +58 -0
  1066. data/vendor/unity/test/expectdata/testsample_run1.c +67 -0
  1067. data/vendor/unity/test/expectdata/testsample_run2.c +70 -0
  1068. data/vendor/unity/test/expectdata/testsample_yaml.c +71 -0
  1069. data/vendor/unity/test/rakefile +164 -0
  1070. data/vendor/unity/test/rakefile_helper.rb +316 -0
  1071. data/vendor/unity/test/spec/generate_module_existing_file_spec.rb +164 -0
  1072. data/vendor/unity/test/targets/ansi.yml +51 -0
  1073. data/vendor/unity/test/targets/clang_file.yml +79 -0
  1074. data/vendor/unity/test/targets/clang_strict.yml +79 -0
  1075. data/vendor/unity/test/targets/gcc_32.yml +52 -0
  1076. data/vendor/unity/test/targets/gcc_64.yml +53 -0
  1077. data/vendor/unity/test/targets/gcc_auto_limits.yml +50 -0
  1078. data/vendor/unity/test/targets/gcc_auto_stdint.yml +62 -0
  1079. data/vendor/unity/test/targets/gcc_manual_math.yml +50 -0
  1080. data/vendor/unity/test/targets/hitech_picc18.yml +98 -0
  1081. data/vendor/unity/test/targets/iar_arm_v4.yml +105 -0
  1082. data/vendor/unity/test/targets/iar_arm_v5.yml +99 -0
  1083. data/vendor/unity/test/targets/iar_arm_v5_3.yml +99 -0
  1084. data/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +97 -0
  1085. data/vendor/unity/test/targets/iar_cortexm3_v5.yml +101 -0
  1086. data/vendor/unity/test/targets/iar_msp430.yml +119 -0
  1087. data/vendor/unity/test/targets/iar_sh2a_v6.yml +106 -0
  1088. data/vendor/unity/test/testdata/CException.h +18 -0
  1089. data/vendor/unity/test/testdata/Defs.h +16 -0
  1090. data/vendor/unity/test/testdata/cmock.h +21 -0
  1091. data/vendor/unity/test/testdata/mockMock.h +20 -0
  1092. data/vendor/unity/test/testdata/testRunnerGenerator.c +204 -0
  1093. data/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +73 -0
  1094. data/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +200 -0
  1095. data/vendor/unity/test/tests/self_assessment_utils.h +151 -0
  1096. data/vendor/unity/test/tests/test_generate_test_runner.rb +1341 -0
  1097. data/vendor/unity/test/tests/test_unity_arrays.c +2941 -0
  1098. data/vendor/unity/test/tests/test_unity_core.c +375 -0
  1099. data/vendor/unity/test/tests/test_unity_doubles.c +1285 -0
  1100. data/vendor/unity/test/tests/test_unity_floats.c +1395 -0
  1101. data/vendor/unity/test/tests/test_unity_integers.c +2863 -0
  1102. data/vendor/unity/test/tests/test_unity_integers_64.c +783 -0
  1103. data/vendor/unity/test/tests/test_unity_memory.c +82 -0
  1104. data/vendor/unity/test/tests/test_unity_parameterized.c +309 -0
  1105. data/vendor/unity/test/tests/test_unity_parameterizedDemo.c +28 -0
  1106. data/vendor/unity/test/tests/test_unity_strings.c +330 -0
  1107. data/vendor/unity/test/tests/types_for_test.h +21 -0
  1108. data/vendor/unity/unityConfig.cmake +1 -0
  1109. metadata +1211 -251
  1110. data/.gitignore +0 -14
  1111. data/.vim +0 -1
  1112. data/.yardopts +0 -1
  1113. data/LICENSE +0 -19
  1114. data/ceedling-gem.sublime-project +0 -575
  1115. data/examples/temp_sensor/rakefile.rb +0 -4
  1116. data/examples/temp_sensor/src/AT91SAM7X256.h +0 -2556
  1117. data/examples/temp_sensor/src/UsartGetChar.c +0 -6
  1118. data/examples/temp_sensor/src/UsartGetChar.h +0 -8
  1119. data/examples/temp_sensor/test/test_AdcConductor.c +0 -121
  1120. data/examples/temp_sensor/test/test_AdcHardware.c +0 -44
  1121. data/examples/temp_sensor/test/test_AdcHardwareConfigurator.c +0 -43
  1122. data/examples/temp_sensor/test/test_AdcModel.c +0 -33
  1123. data/examples/temp_sensor/test/test_AdcTemperatureSensor.c +0 -47
  1124. data/examples/temp_sensor/test/test_Executor.c +0 -36
  1125. data/examples/temp_sensor/test/test_Main.c +0 -24
  1126. data/examples/temp_sensor/test/test_Model.c +0 -20
  1127. data/examples/temp_sensor/test/test_TaskScheduler.c +0 -104
  1128. data/examples/temp_sensor/test/test_TemperatureCalculator.c +0 -33
  1129. data/examples/temp_sensor/test/test_TemperatureFilter.c +0 -71
  1130. data/examples/temp_sensor/test/test_TimerConductor.c +0 -32
  1131. data/examples/temp_sensor/test/test_TimerConfigurator.c +0 -112
  1132. data/examples/temp_sensor/test/test_TimerHardware.c +0 -26
  1133. data/examples/temp_sensor/test/test_TimerInterruptConfigurator.c +0 -78
  1134. data/examples/temp_sensor/test/test_TimerInterruptHandler.c +0 -66
  1135. data/examples/temp_sensor/test/test_TimerModel.c +0 -18
  1136. data/examples/temp_sensor/test/test_UsartBaudRateRegisterCalculator.c +0 -21
  1137. data/examples/temp_sensor/test/test_UsartConductor.c +0 -40
  1138. data/examples/temp_sensor/test/test_UsartConfigurator.c +0 -77
  1139. data/examples/temp_sensor/test/test_UsartGetChar.c +0 -17
  1140. data/examples/temp_sensor/test/test_UsartHardware.c +0 -56
  1141. data/examples/temp_sensor/test/test_UsartModel.c +0 -40
  1142. data/examples/temp_sensor/test/test_UsartPutChar.c +0 -43
  1143. data/examples/temp_sensor/test/test_UsartTransmitBufferStatus.c +0 -22
  1144. data/lib/ceedling/version.rb +0 -16
  1145. data/lib/ceedling/version.rb.erb +0 -16
  1146. data/new_project_template/build/.gitkeep +0 -0
  1147. data/new_project_template/project.yml +0 -65
  1148. data/new_project_template/rakefile.rb +0 -4
  1149. data/new_project_template/src/.gitkeep +0 -0
  1150. data/new_project_template/test/.gitkeep +0 -0
  1151. data/new_project_template/test/support/.gitkeep +0 -0
  1152. data/new_project_template/vendor/ceedling/docs/CExceptionSummary.pdf +0 -0
  1153. data/new_project_template/vendor/ceedling/docs/CMock Summary.pdf +0 -0
  1154. data/new_project_template/vendor/ceedling/docs/Ceedling Packet.pdf +0 -0
  1155. data/new_project_template/vendor/ceedling/docs/Unity Summary.pdf +0 -0
  1156. data/new_project_template/vendor/ceedling/lib/build_invoker_utils.rb +0 -27
  1157. data/new_project_template/vendor/ceedling/lib/cacheinator.rb +0 -42
  1158. data/new_project_template/vendor/ceedling/lib/cacheinator_helper.rb +0 -12
  1159. data/new_project_template/vendor/ceedling/lib/cmock_builder.rb +0 -15
  1160. data/new_project_template/vendor/ceedling/lib/configurator.rb +0 -329
  1161. data/new_project_template/vendor/ceedling/lib/configurator_builder.rb +0 -419
  1162. data/new_project_template/vendor/ceedling/lib/configurator_plugins.rb +0 -93
  1163. data/new_project_template/vendor/ceedling/lib/configurator_setup.rb +0 -123
  1164. data/new_project_template/vendor/ceedling/lib/configurator_validator.rb +0 -184
  1165. data/new_project_template/vendor/ceedling/lib/constants.rb +0 -91
  1166. data/new_project_template/vendor/ceedling/lib/defaults.rb +0 -378
  1167. data/new_project_template/vendor/ceedling/lib/dependinator.rb +0 -92
  1168. data/new_project_template/vendor/ceedling/lib/file_finder.rb +0 -132
  1169. data/new_project_template/vendor/ceedling/lib/file_finder_helper.rb +0 -54
  1170. data/new_project_template/vendor/ceedling/lib/file_path_utils.rb +0 -189
  1171. data/new_project_template/vendor/ceedling/lib/file_system_utils.rb +0 -69
  1172. data/new_project_template/vendor/ceedling/lib/file_wrapper.rb +0 -74
  1173. data/new_project_template/vendor/ceedling/lib/flaginator.rb +0 -54
  1174. data/new_project_template/vendor/ceedling/lib/generator.rb +0 -162
  1175. data/new_project_template/vendor/ceedling/lib/generator_helper.rb +0 -40
  1176. data/new_project_template/vendor/ceedling/lib/generator_test_results.rb +0 -89
  1177. data/new_project_template/vendor/ceedling/lib/generator_test_results_sanity_checker.rb +0 -62
  1178. data/new_project_template/vendor/ceedling/lib/generator_test_runner.rb +0 -63
  1179. data/new_project_template/vendor/ceedling/lib/loginator.rb +0 -31
  1180. data/new_project_template/vendor/ceedling/lib/makefile.rb +0 -46
  1181. data/new_project_template/vendor/ceedling/lib/objects.yml +0 -301
  1182. data/new_project_template/vendor/ceedling/lib/plugin.rb +0 -79
  1183. data/new_project_template/vendor/ceedling/lib/plugin_manager.rb +0 -95
  1184. data/new_project_template/vendor/ceedling/lib/plugin_manager_helper.rb +0 -19
  1185. data/new_project_template/vendor/ceedling/lib/plugin_reportinator.rb +0 -75
  1186. data/new_project_template/vendor/ceedling/lib/plugin_reportinator_helper.rb +0 -52
  1187. data/new_project_template/vendor/ceedling/lib/preprocessinator.rb +0 -43
  1188. data/new_project_template/vendor/ceedling/lib/preprocessinator_extractor.rb +0 -36
  1189. data/new_project_template/vendor/ceedling/lib/preprocessinator_file_handler.rb +0 -21
  1190. data/new_project_template/vendor/ceedling/lib/preprocessinator_helper.rb +0 -46
  1191. data/new_project_template/vendor/ceedling/lib/preprocessinator_includes_handler.rb +0 -55
  1192. data/new_project_template/vendor/ceedling/lib/project_config_manager.rb +0 -38
  1193. data/new_project_template/vendor/ceedling/lib/project_file_loader.rb +0 -64
  1194. data/new_project_template/vendor/ceedling/lib/rake_utils.rb +0 -17
  1195. data/new_project_template/vendor/ceedling/lib/rake_wrapper.rb +0 -31
  1196. data/new_project_template/vendor/ceedling/lib/rakefile.rb +0 -61
  1197. data/new_project_template/vendor/ceedling/lib/release_invoker.rb +0 -58
  1198. data/new_project_template/vendor/ceedling/lib/release_invoker_helper.rb +0 -16
  1199. data/new_project_template/vendor/ceedling/lib/reportinator.rb +0 -9
  1200. data/new_project_template/vendor/ceedling/lib/rules_cmock.rake +0 -9
  1201. data/new_project_template/vendor/ceedling/lib/rules_preprocess.rake +0 -26
  1202. data/new_project_template/vendor/ceedling/lib/rules_release.rake +0 -79
  1203. data/new_project_template/vendor/ceedling/lib/rules_release_deep_dependencies.rake +0 -15
  1204. data/new_project_template/vendor/ceedling/lib/rules_tests.rake +0 -59
  1205. data/new_project_template/vendor/ceedling/lib/rules_tests_deep_dependencies.rake +0 -15
  1206. data/new_project_template/vendor/ceedling/lib/setupinator.rb +0 -51
  1207. data/new_project_template/vendor/ceedling/lib/stream_wrapper.rb +0 -20
  1208. data/new_project_template/vendor/ceedling/lib/streaminator.rb +0 -41
  1209. data/new_project_template/vendor/ceedling/lib/streaminator_helper.rb +0 -15
  1210. data/new_project_template/vendor/ceedling/lib/system_utils.rb +0 -32
  1211. data/new_project_template/vendor/ceedling/lib/system_wrapper.rb +0 -75
  1212. data/new_project_template/vendor/ceedling/lib/task_invoker.rb +0 -85
  1213. data/new_project_template/vendor/ceedling/lib/tasks_base.rake +0 -104
  1214. data/new_project_template/vendor/ceedling/lib/tasks_filesystem.rake +0 -91
  1215. data/new_project_template/vendor/ceedling/lib/tasks_release.rake +0 -28
  1216. data/new_project_template/vendor/ceedling/lib/tasks_release_deep_dependencies.rake +0 -9
  1217. data/new_project_template/vendor/ceedling/lib/tasks_tests.rake +0 -52
  1218. data/new_project_template/vendor/ceedling/lib/tasks_tests_deep_dependencies.rake +0 -9
  1219. data/new_project_template/vendor/ceedling/lib/tasks_vendor.rake +0 -36
  1220. data/new_project_template/vendor/ceedling/lib/test_includes_extractor.rb +0 -81
  1221. data/new_project_template/vendor/ceedling/lib/test_invoker.rb +0 -97
  1222. data/new_project_template/vendor/ceedling/lib/test_invoker_helper.rb +0 -28
  1223. data/new_project_template/vendor/ceedling/lib/tool_executor.rb +0 -212
  1224. data/new_project_template/vendor/ceedling/lib/tool_executor_helper.rb +0 -115
  1225. data/new_project_template/vendor/ceedling/lib/verbosinator.rb +0 -10
  1226. data/new_project_template/vendor/ceedling/lib/yaml_wrapper.rb +0 -16
  1227. data/new_project_template/vendor/ceedling/plugins/bullseye/bullseye.rake +0 -162
  1228. data/new_project_template/vendor/ceedling/plugins/bullseye/bullseye.rb +0 -173
  1229. data/new_project_template/vendor/ceedling/plugins/bullseye/defaults.yml +0 -53
  1230. data/new_project_template/vendor/ceedling/plugins/bullseye/readme.txt +0 -0
  1231. data/new_project_template/vendor/ceedling/plugins/gcov/defaults.yml +0 -34
  1232. data/new_project_template/vendor/ceedling/plugins/gcov/gcov.rake +0 -152
  1233. data/new_project_template/vendor/ceedling/plugins/gcov/gcov.rb +0 -128
  1234. data/new_project_template/vendor/ceedling/plugins/gcov/readme.txt +0 -0
  1235. data/new_project_template/vendor/ceedling/plugins/gcov/template.erb +0 -15
  1236. data/new_project_template/vendor/ceedling/plugins/module_generator/module_generator.rake +0 -14
  1237. data/new_project_template/vendor/ceedling/plugins/module_generator/module_generator.rb +0 -218
  1238. data/new_project_template/vendor/ceedling/plugins/module_generator/module_generator.yml +0 -4
  1239. data/new_project_template/vendor/ceedling/plugins/stdout_ide_tests_report/stdout_ide_tests_report.rb +0 -44
  1240. data/new_project_template/vendor/ceedling/plugins/stdout_ide_tests_report/stdout_ide_tests_report.yml +0 -4
  1241. data/new_project_template/vendor/ceedling/plugins/stdout_pretty_tests_report/stdout_pretty_tests_report.rb +0 -48
  1242. data/new_project_template/vendor/ceedling/plugins/stdout_pretty_tests_report/stdout_pretty_tests_report.yml +0 -4
  1243. data/new_project_template/vendor/ceedling/plugins/stdout_pretty_tests_report/template.erb +0 -59
  1244. data/new_project_template/vendor/ceedling/plugins/warnings_report/warnings_report.rb +0 -71
  1245. data/new_project_template/vendor/ceedling/plugins/xml_tests_report/xml_tests_report.rb +0 -110
  1246. data/new_project_template/vendor/ceedling/release/build.info +0 -1
  1247. data/new_project_template/vendor/ceedling/release/version.info +0 -1
  1248. data/new_project_template/vendor/ceedling/vendor/c_exception/lib/CException.c +0 -39
  1249. data/new_project_template/vendor/ceedling/vendor/c_exception/lib/CException.h +0 -70
  1250. data/new_project_template/vendor/ceedling/vendor/c_exception/release/build.info +0 -1
  1251. data/new_project_template/vendor/ceedling/vendor/c_exception/release/version.info +0 -2
  1252. data/new_project_template/vendor/ceedling/vendor/cmock/config/production_environment.rb +0 -14
  1253. data/new_project_template/vendor/ceedling/vendor/cmock/config/test_environment.rb +0 -16
  1254. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock.rb +0 -65
  1255. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_config.rb +0 -129
  1256. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_file_writer.rb +0 -33
  1257. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_generator.rb +0 -194
  1258. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_generator_plugin_array.rb +0 -57
  1259. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_generator_plugin_callback.rb +0 -78
  1260. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_generator_plugin_cexception.rb +0 -51
  1261. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_generator_plugin_expect.rb +0 -86
  1262. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +0 -85
  1263. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_generator_utils.rb +0 -177
  1264. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_header_parser.rb +0 -273
  1265. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_plugin_manager.rb +0 -40
  1266. data/new_project_template/vendor/ceedling/vendor/cmock/lib/cmock_unityhelper_parser.rb +0 -74
  1267. data/new_project_template/vendor/ceedling/vendor/cmock/release/build.info +0 -1
  1268. data/new_project_template/vendor/ceedling/vendor/cmock/release/version.info +0 -2
  1269. data/new_project_template/vendor/ceedling/vendor/cmock/src/cmock.c +0 -186
  1270. data/new_project_template/vendor/ceedling/vendor/cmock/src/cmock.h +0 -30
  1271. data/new_project_template/vendor/ceedling/vendor/constructor/lib/constructor.rb +0 -127
  1272. data/new_project_template/vendor/ceedling/vendor/constructor/lib/constructor_struct.rb +0 -33
  1273. data/new_project_template/vendor/ceedling/vendor/deep_merge/lib/deep_merge.rb +0 -211
  1274. data/new_project_template/vendor/ceedling/vendor/diy/lib/diy/factory.rb +0 -36
  1275. data/new_project_template/vendor/ceedling/vendor/diy/lib/diy.rb +0 -403
  1276. data/new_project_template/vendor/ceedling/vendor/unity/auto/generate_test_runner.rb +0 -308
  1277. data/new_project_template/vendor/ceedling/vendor/unity/release/build.info +0 -1
  1278. data/new_project_template/vendor/ceedling/vendor/unity/release/version.info +0 -2
  1279. data/new_project_template/vendor/ceedling/vendor/unity/src/unity.c +0 -960
  1280. data/new_project_template/vendor/ceedling/vendor/unity/src/unity.h +0 -232
  1281. data/new_project_template/vendor/ceedling/vendor/unity/src/unity_internals.h +0 -414
  1282. /data/{new_project_template/vendor/ceedling/plugins/bullseye → plugins/bullseye/assets}/template.erb +0 -0
data/README.md CHANGED
@@ -1,66 +1,752 @@
1
- Description
2
- ===========
3
- [Ceedling](http://throwtheswitch.org/) is a set of tools and libraries for testing and building C applications. This gem is the distribution mechanism for ceedling. Be aware that gem is *not* ceedling itself.
1
+ Ceedling ![CI](https://github.com/ThrowTheSwitch/Ceedling/workflows/CI/badge.svg)
2
+ ========
4
3
 
5
- Usage
6
- =====
4
+ Welcome to **Ceedling 1.0.1**
7
5
 
8
- New project
9
- -----------
6
+ See the [Release Notes](docs/ReleaseNotes.md) for an overview
7
+ of all that’s new since 0.31.1 plus links to the detailed Changelog and list of
8
+ Breaking Changes.
10
9
 
11
- ceedling new PROJECT
10
+ # 🌱 Ceedling is a handy-dandy build system for C projects
12
11
 
13
- Creates a new directory named PROJECT and deposits ceedling into the new directory.
12
+ ## Developer-friendly release _and_ test builds
14
13
 
15
- Update project
16
- --------------
14
+ Ceedling can build your release artifact but is especially adept at building
15
+ unit test suites for your C projects — even in tricky embedded systems.
17
16
 
18
- ceedling update DIRECTORY
17
+ Ceedling and its complementary pieces and parts are (and always will be) freely
18
+ available and open source. **_[Ceedling Assist][ceedling-pro]_** is a growing list
19
+ of paid products and services to help you do even more with these tools.
19
20
 
20
- Updates an existing project with the newest ceedling code in the gem. To update, follow these steps:
21
+ [ceedling-pro]: https://www.thingamabyte.com/ceedling
21
22
 
22
- 1. Remove the vendor/ceedling directory. Take care when doing this; make sure you do it in a way that your version control system can handle.
23
- 1. Run ceedling update. Pass it the name of the directory that vendor/ceedling should go into.
23
+ ⭐️ **Eager to just get going? Jump to
24
+ [📚 Documentation & Learning](#-documentation--learning) and
25
+ [🚀 Getting Started](#-getting-started).**
24
26
 
25
- `ceedling update .`
27
+ Ceedling works the way developers want to work. It is flexible and entirely
28
+ command-line driven. It drives code generation and command line tools for you.
29
+ All generated and framework code is easy to see and understand.
26
30
 
27
- will copy ceedling to ./vendor/ceedling.
28
- 1. Add the new directory to your version control system.
31
+ Ceedling’s features support all types of C development from low-level embedded
32
+ to enterprise systems. No tool is perfect, but Ceedling can do a whole lot to
33
+ help you and your team produce quality software.
29
34
 
30
- List example project
31
- --------------------
35
+ ## Ceedling is a suite of tools
32
36
 
33
- ceedling examples
37
+ Ceedling is also a suite of tools. It is the glue for bringing together three
38
+ other awesome open-source projects you can’t live without if you‘re creating
39
+ awesomeness in the C language.
34
40
 
35
- List the available example projects.
41
+ 1. **[Unity]**, an [xUnit]-style test framework.
42
+ 1. **[CMock]**<sup>†</sup>, a code generating,
43
+ [function mocking & stubbing][test-doubles] kit for interaction-based testing.
44
+ 1. **[CException]**, a framework for adding simple exception handling to C projects
45
+ in the style of higher-order programming languages.
36
46
 
37
- Create example project
38
- ----------------------
47
+ <sup>†</sup> Through a [plugin][FFF-plugin], Ceedling also supports [FFF] for
48
+ [fake functions][test-doubles] as an alternative to CMock’s mocks and stubs.
39
49
 
40
- ceedling example PROJECT_NAME [DEST]
50
+ ## But, wait. There’s more.
41
51
 
42
- Creates the specified example project in the current directory (or in destination directoy, if specified).
52
+ For simple project structures, Ceedling can build and test an entire project
53
+ from just a few lines in its project configuration file.
43
54
 
44
- Valid PROJECT_NAMEs
55
+ Because it handles all the nitty-gritty of rebuilds and becuase of Unity and
56
+ CMock, Ceedling makes [Test-Driven Development][TDD] in C a breeze. It even
57
+ provides handy backtrace debugging options for finding the source of crashing
58
+ code exercised by your unit tests.
45
59
 
46
- * temp_sensor
60
+ Ceedling is extensible with a simple plugin mechanism. It comes with a
61
+ number of [built-in plugins][ceedling-plugins] for code coverage, test suite
62
+ report generation, Continuous Integration features, IDE integration, release
63
+ library builds & dependency management, and more.
64
+
65
+ [Unity]: https://github.com/throwtheswitch/unity
66
+ [xUnit]: https://en.wikipedia.org/wiki/XUnit
67
+ [CMock]: https://github.com/throwtheswitch/cmock
68
+ [CException]: https://github.com/throwtheswitch/cexception
69
+ [TDD]: http://en.wikipedia.org/wiki/Test-driven_development
70
+ [test-doubles]: https://blog.pragmatists.com/test-doubles-fakes-mocks-and-stubs-1a7491dfa3da
71
+ [FFF]: https://github.com/ElectronVector/fake_function_framework
72
+ [FFF-plugin]: plugins/fff
73
+ [ceedling-plugins]: docs/CeedlingPacket.md#ceedling-plugins
74
+
75
+ <br/>
76
+
77
+ # 🙋‍♀️ Need Help? Want to Help?
78
+
79
+ * Found a bug or want to suggest a feature?
80
+ **[Submit an issue][ceedling-issues]** at this repo.
81
+ * Trying to understand features or solve a testing problem? Hit the
82
+ **[discussion forums][forums]**.
83
+ * Paid training, customizations, and support contracts are available through
84
+ **[Ceedling Pro][ceedling-pro]**.
85
+
86
+ The ThrowTheSwitch community follows a **[code of conduct](docs/CODE_OF_CONDUCT.md)**.
87
+
88
+ Please familiarize yourself with our guidelines for **[contributing](docs/CONTRIBUTING.md)** to this project, be it code, reviews, documentation, or reports.
89
+
90
+ Yes, work has begun on certified versions of the Ceedling suite of tools to be available through **[Ceedling Pro][ceedling-pro]**. [Reach out to ThingamaByte][thingama-contact] for more.
91
+
92
+ [ceedling-issues]: https://github.com/ThrowTheSwitch/Ceedling/issues
93
+ [forums]: https://www.throwtheswitch.org/forums
94
+ [thingama-contact]: https://www.thingamabyte.com/contact
95
+
96
+ <br/>
97
+
98
+ # 🧑‍🍳 Sample Unit Testing Code
99
+
100
+ While Ceedling can build your release artifact, its claim to fame is building and running test suites.
101
+
102
+ There’s a good chance you’re looking at Ceedling because of its test suite abilities. And, you’d probably like to see what that looks like, huh? Well, let’s cook you up some realistic examples of tested code and running Ceedling with that code.
103
+
104
+ (A sample Ceedling project configuration file and links to documentation for it are a bit further down in _[🚀 Getting Started](#-getting-started)_.)
105
+
106
+ ## First, we start with servings of source code to be tested…
107
+
108
+ ### Recipe.c
109
+
110
+ ```c
111
+ #include "Recipe.h"
112
+ #include "Kitchen.h"
113
+ #include <stdio.h>
114
+
115
+ #define MAX_SPICE_COUNT (4)
116
+ #define MAX_SPICE_AMOUNT_TSP (8.0f)
117
+
118
+ static float spice_amount = 0;
119
+ static uint8_t spice_count = 0;
120
+
121
+ void Recipe_Reset(char* recipe, size_t size) {
122
+ memset(recipe, 0, size);
123
+ spice_amount = 0;
124
+ spice_count = 0;
125
+ }
126
+
127
+ // Add ingredients to a spice list string with amounts (tsp.)
128
+ bool_t Recipe_BuildSpiceListTsp(char* list, size_t maxLen, SpiceId spice, float amount) {
129
+ if ((++spice_count > MAX_SPICE_COUNT) || ((spice_amount += amount) > MAX_SPICE_AMOUNT_TSP)) {
130
+ snprintf( list, maxLen, "Too spicy!" );
131
+ return FALSE;
132
+ }
133
+
134
+ // Kitchen_Ingredient() not shown
135
+ snprintf( list + strlen(list), maxLen, "%s\n", Kitchen_Ingredient( spice, amount, TEASPOON ) );
136
+ return TRUE;
137
+ }
138
+ ```
139
+
140
+ ### Baking.c
141
+
142
+ ```c
143
+ #include "Oven.h"
144
+ #include "Time.h"
145
+ #include "Baking.h"
146
+
147
+ bool_t Baking_PreheatOven(float setTempF, duration_t timeout) {
148
+ float temperature = 0.0;
149
+ Timer* timer = Time_StartTimer( timeout );
150
+
151
+ Oven_SetTemperatureF( setTempF );
152
+
153
+ while (temperature < setTempF) {
154
+ Time_SleepMs( 250 );
155
+ if (Time_IsTimerExpired( timer )) break;
156
+ temperature = Oven_GetTemperatureReadingF();
157
+ }
158
+
159
+ return (temperature >= setTempF);
160
+ }
161
+
162
+ ```
163
+
164
+ ## Next, a sprinkle of unit test code…
165
+
166
+ Some of what Ceedling does is by naming conventions. See Ceedling’s [documentation](#-documentation--learning) for much more on this.
167
+
168
+ ### TestRecipe.c
169
+
170
+ ```c
171
+ #include "unity.h" // Unity, unit test framework
172
+ #include "Recipe.h" // By convention, Recipe.c is part of TestRecipe executable build
173
+ #include "Kitchen.h" // By convention, Kitchen.c (not shown) is part of TestRecipe executable build
174
+
175
+ char recipe[100];
176
+
177
+ void setUp(void) {
178
+ // Execute reset before each test case
179
+ Recipe_Reset( recipe, sizeof(recipe) );
180
+ }
181
+
182
+ void test_Recipe_BuildSpiceListTsp_shouldBuildSpiceList(void) {
183
+ TEST_ASSERT_TRUE( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), OREGANO, 0.5 ) );
184
+ TEST_ASSERT_TRUE( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), ROSEMARY, 1.0 ) );
185
+ TEST_ASSERT_TRUE( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), THYME, 0.33 ) );
186
+ TEST_ASSERT_EQUAL_STRING( "1/2 tsp. Oregano\n1 tsp. Rosemary\n1/3 tsp. Thyme\n", recipe );
187
+ }
188
+
189
+ void test_Recipe_BuildSpiceListTsp_shouldFailIfTooMuchSpice(void) {
190
+ TEST_ASSERT_TRUE ( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), CORIANDER, 4.0 ) );
191
+ TEST_ASSERT_TRUE ( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), BLACK_PEPPER, 4.0 ) );
192
+ // Total spice = 8.0 + 0.1 tsp.
193
+ TEST_ASSERT_FALSE( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), BASIL, 0.1 ) );
194
+ TEST_ASSERT_EQUAL_STRING( "Too spicy!", recipe );
195
+ }
196
+
197
+ void test_Recipe_BuildSpiceListTsp_shouldFailIfTooManySpices(void) {
198
+ TEST_ASSERT_TRUE ( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), OREGANO, 1.0 ) );
199
+ TEST_ASSERT_TRUE ( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), CORIANDER, 1.0 ) );
200
+ TEST_ASSERT_TRUE ( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), BLACK_PEPPER, 1.0 ) );
201
+ TEST_ASSERT_TRUE ( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), THYME, 1.0 ) );
202
+ // Attempt to add 5th spice
203
+ TEST_ASSERT_FALSE( Recipe_BuildSpiceListTsp( recipe, sizeof(recipe), BASIL, 1.0 ) );
204
+ TEST_ASSERT_EQUAL_STRING( "Too spicy!", recipe );
205
+ }
206
+ ```
207
+
208
+ ### TestBaking.c
209
+
210
+ Let’s flavor our test code with a dash of mocks as well…
211
+
212
+ ```c
213
+ #include "unity.h" // Unity, unit test framework
214
+ #include "Baking.h" // By convention, Baking.c is part of TestBaking executable build
215
+ #include "MockOven.h" // By convention, mock .h/.c code generated from Oven.h by CMock
216
+ #include "MockTime.h" // By convention, mock .h/.c code generated from Time.h by CMock
217
+
218
+ /*
219
+ * 🚫 This test will fail! Find the missing logic in `Baking_PreheatOven()`.
220
+ * (`Oven_SetTemperatureF()` returns success / failure.)
221
+ */
222
+ void test_Baking_PreheatOven_shouldFailIfSettingOvenTemperatureFails(void) {
223
+ Timer timer; // Uninitialized struct
224
+
225
+ Time_StartTimer_ExpectAndReturn( TWENTY_MIN, &timer );
226
+
227
+ // Tell source code that setting the oven temperature did not work
228
+ Oven_SetTemperatureF_ExpectAndReturn( 350.0, FALSE );
229
+
230
+ TEST_ASSERT_FALSE( Baking_PreheatOven( 350.0, TWENTY_MIN ) );
231
+ }
232
+
233
+ void test_Baking_PreheatOven_shouldFailIfTimeoutExpires(void) {
234
+ Timer timer; // Uninitialized struct
235
+
236
+ Time_StartTimer_ExpectAndReturn( TEN_MIN, &timer );
237
+
238
+ Oven_SetTemperatureF_ExpectAndReturn( 200.0, TRUE );
239
+
240
+ // We only care that `sleep()` is called, not necessarily every call to it
241
+ Time_SleepMs_Ignore();
242
+
243
+ // Unrolled loop of timeout and temperature checks
244
+ Time_IsTimerExpired_ExpectAndReturn( &timer, FALSE );
245
+ Oven_GetTemperatureReadingF_ExpectAndReturn( 100.0 );
246
+ Time_IsTimerExpired_ExpectAndReturn( &timer, FALSE );
247
+ Oven_GetTemperatureReadingF_ExpectAndReturn( 105.0 );
248
+ Time_IsTimerExpired_ExpectAndReturn( &timer, FALSE );
249
+ Oven_GetTemperatureReadingF_ExpectAndReturn( 110.0 );
250
+ Time_IsTimerExpired_ExpectAndReturn( &timer, TRUE );
251
+
252
+ TEST_ASSERT_FALSE( Baking_PreheatOven( 200.0, TEN_MIN ) );
253
+ }
254
+
255
+ void test_Baking_PreheatOven_shouldSucceedAfterAWhile(void) {
256
+ Timer timer; // Uninitialized struct
257
+
258
+ Time_StartTimer_ExpectAndReturn( TEN_MIN, &timer );
259
+
260
+ Oven_SetTemperatureF_ExpectAndReturn( 400.0, TRUE );
261
+
262
+ // We only care that `sleep()` is called, not necessarily every call to it
263
+ Time_SleepMs_Ignore();
264
+
265
+ // Unrolled loop of timeout and temperature checks
266
+ Time_IsTimerExpired_ExpectAndReturn( &timer, FALSE );
267
+ Oven_GetTemperatureReadingF_ExpectAndReturn( 390.0 );
268
+ Time_IsTimerExpired_ExpectAndReturn( &timer, FALSE );
269
+ Oven_GetTemperatureReadingF_ExpectAndReturn( 395.0 );
270
+ Time_IsTimerExpired_ExpectAndReturn( &timer, FALSE );
271
+ Oven_GetTemperatureReadingF_ExpectAndReturn( 399.0 );
272
+ Time_IsTimerExpired_ExpectAndReturn( &timer, FALSE );
273
+ Oven_GetTemperatureReadingF_ExpectAndReturn( 401.0 );
274
+
275
+ TEST_ASSERT_TRUE( Baking_PreheatOven( 400.0, TEN_MIN ) );
276
+ }
277
+ ```
278
+
279
+ ## Add a pinch of command line…
280
+
281
+ See Ceedling’s [documentation](#-documentation--learning) for examples and everything you need to know about Ceedling’s configuration file options (not shown here).
282
+
283
+ The super duper short version is that your project configuration file tells Ceedling where to find test and source files, what testing options you’re using, sets compilation symbols and build tool flags, enables your plugins, and configures your build tool command lines (Ceedling defaults to using the GNU compiler collection — which must be installed, if used).
284
+
285
+ ```shell
286
+ > ceedling test:all
287
+ ```
288
+
289
+ ## Voilà! Test results. `#ChefsKiss`
290
+
291
+ The test results below are one of the last bits of logging Ceedling produces for a test suite build. Not shown here are all the steps for extracting build details, C code generation, and compilation and linking.
292
+
293
+ ```
294
+ -------------------
295
+ FAILED TEST SUMMARY
296
+ -------------------
297
+ [test/TestBaking.c]
298
+ Test: test_Baking_PreheatOven_shouldFailIfSettingOvenTemperatureFails
299
+ At line (7): "Function Time_SleepMs() called more times than expected."
47
300
 
48
- Print ceedling versions
49
301
  -----------------------
302
+ ❌ OVERALL TEST SUMMARY
303
+ -----------------------
304
+ TESTED: 6
305
+ PASSED: 5
306
+ FAILED: 1
307
+ IGNORED: 0
308
+ ```
309
+
310
+ ## Ceedling also supports various side dishes in your delicious test suite
311
+
312
+ The Unity project supports parameterized test cases like this:
313
+
314
+ ```C
315
+ TEST_RANGE([5, 100, 5])
316
+ void test_should_handle_divisible_by_5_for_parameterized_test_range(int num) {
317
+ TEST_ASSERT_EQUAL(0, (num % 5));
318
+ }
319
+ ```
320
+
321
+ Ceedling can do all the magic to build and run this test code simply by enabling parameterized test cases in its project configuration. Keep reading for more on how to configure a Ceedling build.
322
+
323
+ ```yaml
324
+ :unity:
325
+ :use_param_tests: TRUE
326
+ ```
327
+
328
+ <br/>
329
+
330
+ # 📚 Documentation & Learning
331
+
332
+ A variety of options for [community-based support][TTS-help] exist.
333
+
334
+ Training and support contracts are available through **_[Ceedling Pro][ceedling-pro]_**
335
+
336
+ [TTS-help]: https://www.throwtheswitch.org/#help-section
337
+
338
+ The [Agile Embedded Podcast][ae-podcast] includes an [episode on Ceedling][ceedling-episode]!
339
+
340
+ [ae-podcast]: https://agileembeddedpodcast.com/
341
+ [ceedling-episode]: https://agileembeddedpodcast.com/episodes/ceedling
342
+
343
+ ## Ceedling docs
344
+
345
+ * **_[Ceedling Packet][ceedling-packet]_** is Ceedling’s user manual. It also references and links to the documentation of the projects, _Unity_, _CMock_, and _CException_, that it weaves together into your test and release builds.
346
+ * **[Release Notes][release-notes]**, **[Breaking Changes][breaking-changes]**, and **[Changelog][changelog]** can be found in the **[docs/](docs/)** directory along with a variety of guides and much more.
347
+ * The **[Plugins section](https://github.com/ThrowTheSwitch/Ceedling/blob/test/ceedling_0_32_rc/docs/CeedlingPacket.md#ceedling-plugins)** within _Ceedling Packet_ lists all of Ceedling’s built-in plugins providing overviews and links to their documentation.
348
+
349
+ _Note:_ Check the [Release Notes][release-notes] for a “cheat sheet” illustrating project configuration option changes for new releases in the form of a Ceedling project YAML configuration file. This may be especially useful to those already familiar with the tool wanting to update to the latest and greatest as quickly as possible.
350
+
351
+ ## Library and courses
352
+
353
+ [ThrowTheSwitch.org][TTS]:
354
+
355
+ * Provides a small but useful **[library of resources and guides][library]** on testing and using the Ceedling suite of tools.
356
+ * Discusses your **[options for running a test suite][running-options]**, particularly in the context of embedded systems.
357
+ * Links to paid courses, **_[Dr. Surly’s School for Mad Scientists][courses]_**, that provide in-depth training on creating C unit tests and using Unity, CMock, and Ceedling to do so.
358
+
359
+ ## Online tutorial
360
+
361
+ Matt Chernosky’s **[detailed tutorial][tutorial]** demonstrates using Ceedling to build a C project with test suite. As the tutorial is a number of years old, the content is a bit out of date. That said, it provides an excellent overview of a real project. Matt is the author of [FFF] and the [FFF plugin][FFF-plugin] for Ceedling.
362
+
363
+ [ceedling-packet]: docs/CeedlingPacket.md
364
+ [release-notes]: docs/ReleaseNotes.md
365
+ [breaking-changes]: docs/BreakingChanges.md
366
+ [changelog]: docs/Changelog.md
367
+ [TTS]: https://throwtheswitch.org
368
+ [library]: http://www.throwtheswitch.org/library
369
+ [running-options]: http://www.throwtheswitch.org/build/which
370
+ [courses]: http://www.throwtheswitch.org/dr-surlys-school
371
+ [tutorial]: http://www.electronvector.com/blog/add-unit-tests-to-your-current-project-with-ceedling
372
+
373
+ <br/>
374
+
375
+ # 🚀 Getting Started
376
+
377
+ 👀 See the **_[Quick Start](docs/CeedlingPacket.md#quick-start)_** section in Ceedling’s user manual, _Ceedling Packet_.
378
+
379
+ ## The basics
380
+
381
+ ### Local installation from the RubyGems repository
382
+
383
+ 1. Install [Ruby]. (Only Ruby 3+ supported.)
384
+ 1. Install the Ceedling gem from the RubyGems repository. All supporting frameworks are included and this style of installation installs dependencies as well.
385
+ ```shell
386
+ > gem install ceedling
387
+ ```
388
+ 1. Begin crafting your project:
389
+ 1. Create an empty Ceedling project.
390
+ ```shell
391
+ > ceedling new <name> [<destination path>]
392
+ ```
393
+ 1. Or, add a Ceedling project file to the root of an existing code project.
394
+ 1. Run tasks like so:
395
+ ```shell
396
+ > ceedling test:all release
397
+ ```
398
+ ### Local installation of the .gem file downloaded from this repo
399
+
400
+ If you are working with prerelease versions of Ceedling or some other off-the-beaten-path installation scenario, you may want to directly install the Ceedling .gem file attached to any of the Github releases. No problem.
401
+
402
+ The steps are similar to the preceding with two changes:
403
+
404
+ 1. `gem install --local <ceedling .gem filepath>`
405
+ 1. Any missing dependencies must be manually installed before installation of the local Ceedling gem will succeed. A local installation attempt will complain about any missing dependencies. Simply `gem install` them by name.
406
+
407
+ [Ruby]: https://www.ruby-lang.org/
408
+
409
+ ### _MadScienceLab_ Docker Images
410
+
411
+ As an alternative to local installation, fully packaged Docker images containing Ruby, Ceedling, the GCC toolchain, and more are also available. [Docker][docker-overview] is a virtualization technology that provides self-contained software bundles that are a portable, well-managed alternative to local installation of tools like Ceedling.
412
+
413
+ Four Docker image variants containing Ceedling and supporting tools exist. These four images are available for both Intel and ARM host platforms (Docker does the right thing based on your host environment). The latter includes ARM Linux and Apple’s M-series macOS devices.
414
+
415
+ 1. **_[MadScienceLab][docker-image-base]_**. This image contains Ruby, Ceedling, CMock, Unity, CException, the GNU Compiler Collection (gcc), and a handful of essential C libraries and command line utilities.
416
+ 1. **_[MadScienceLab Plugins][docker-image-plugins]_**. This image contains all of the above plus the command line tools that Ceedling’s built-in plugins rely on. Naturally, it is quite a bit larger than option (1) because of the additional tools and dependencies.
417
+ 1. **_[MadScienceLab ARM][docker-image-arm]_**. This image mirrors (1) with the compiler toolchain replaced with the GNU `arm-none-eabi` variant.
418
+ 1. **_[MadScienceLab ARM + Plugins][docker-image-arm-plugins]_**. This image is (3) with the addition of all the complementary plugin tooling just like (2) provides.
419
+
420
+ See the Docker Hub pages linked above for more documentation on these images.
421
+
422
+ Just to be clear here, most users of the _MadScienceLab_ Docker images will probably care about the ability to run unit tests on your own host. If you are one of those users, no matter what host platform you are on — Intel or ARM — you’ll want to go with (1) or (2) above. The tools within the image will automatically do the right thing within your environment. Options (3) and (4) are most useful for specialized cross-compilation scenarios.
423
+
424
+ #### _MadScienceLab_ Docker Image usage basics
425
+
426
+ To use a _MadScienceLab_ image from your local terminal:
427
+
428
+ 1. [Install Docker][docker-install]
429
+ 1. Determine:
430
+ 1. The local path of your Ceedling project
431
+ 1. The variant and revision of the Docker image you’ll be using
432
+ 1. Run the container with:
433
+ 1. The Docker `run` command and `-it --rm` command line options
434
+ 1. A Docker volume mapping from the root of your project to the default project path inside the container (_/home/dev/project_)
435
+
436
+ See the command line examples in the following two sections.
437
+
438
+ Note that all of these somewhat lengthy command lines lend themselves well to being wrapped up in simple helper scripts specific to your project and directory structure.
439
+
440
+ #### Run a _MadScienceLab_ Docker Image as an interactive terminal
441
+
442
+ When the container launches as shown below, it will drop you into a Z-shell command line that has access to all the tools and utilities available within the container. In this usage, the Docker container becomes just another terminal, including ending its execution with `exit`.
443
+
444
+ ```shell
445
+ > docker run -it --rm -v /my/local/project/path:/home/dev/project throwtheswitch/madsciencelab-plugins:1.0.0
446
+ ```
447
+
448
+ Once the _MadScienceLab_ container’s command line is available, to run Ceedling, execute it just as you would after installing Ceedling locally:
449
+
450
+ ```shell
451
+ ~/project > ceedling help
452
+ ```
453
+
454
+ ```shell
455
+ ~/project > ceedling new ...
456
+ ```
457
+
458
+ ```shell
459
+ ~/project > ceedling test:all
460
+ ```
461
+
462
+ #### Run a _MadScienceLab_ Docker Image as a command line utility
463
+
464
+ Alternatively, you can run Ceedling through the _MadScienceLab_ Docker container directly from the command line as a command line utility. The general pattern is immediately below.
465
+
466
+ ```shell
467
+ > docker run -it --rm -v /my/local/project/path:/home/dev/project throwtheswitch/madsciencelab-plugins:1.0.0 <Ceedling command line>
468
+ ```
469
+
470
+ As a specific example, to run all tests in a suite, the command line would be this:
471
+
472
+ ```shell
473
+ > docker run -it --rm -v /my/local/project/path:/home/dev/project throwtheswitch/madsciencelab-plugins:1.0.0 ceedling test:all
474
+ ```
475
+
476
+ In this usage, the container starts, executes Ceedling, and then ends.
477
+
478
+ [docker-overview]: https://www.ibm.com/topics/docker
479
+ [docker-install]: https://www.docker.com/products/docker-desktop/
480
+
481
+ [docker-image-base]: https://hub.docker.com/repository/docker/throwtheswitch/madsciencelab
482
+ [docker-image-plugins]: https://hub.docker.com/repository/docker/throwtheswitch/madsciencelab-plugins
483
+ [docker-image-arm]: https://hub.docker.com/repository/docker/throwtheswitch/madsciencelab-arm-none-eabi
484
+ [docker-image-arm-plugins]: https://hub.docker.com/repository/docker/throwtheswitch/madsciencelab-arm-none-eabi-plugins
485
+
486
+ ### Example super-duper simple Ceedling configuration file
487
+
488
+ ```yaml
489
+ :project:
490
+ :build_root: project/build/
491
+ :release_build: TRUE
492
+
493
+ :paths:
494
+ :test:
495
+ - tests/**
496
+ :source:
497
+ - source/**
498
+ :include:
499
+ - inc/**
500
+ ```
501
+
502
+ See this [commented project configuration file][example-config-file] for a much more complete and sophisticated example of a project configuration.
503
+
504
+ Or, use Ceedling’s built-in `examples` & `example` commands to extract a sample project and reference its project file.
505
+
506
+ See the [configuration section][ceedling-packet-config] in _Ceedling Packet_ for way more details on your project configuration options than we can provide here.
507
+
508
+ [example-config-file]: assets/project.yml
509
+ [ceedling-packet-config]: docs/CeedlingPacket.md#the-almighty-ceedling-project-configuration-file-in-glorious-yaml
510
+
511
+ ## Using Ceedling’s command line (and related)
512
+
513
+ ### Command line help
514
+
515
+ For an overview of all commands, it’s as easy as…
516
+
517
+ ```sh
518
+ > ceedling help
519
+ ```
520
+
521
+ For a detailed explanation of a single command…
522
+
523
+ ```sh
524
+ > ceedling help <command>
525
+ ```
526
+
527
+ ### Creating a project
528
+
529
+ Creating a project with Ceedling is easy. Simply tell Ceedling the name of the
530
+ project, and it will create a directory with that name and fill it with a
531
+ default subdirectory structure and configuration file. An optional destination
532
+ path is also possible.
533
+
534
+ ```shell
535
+ > ceedling new YourNewProjectName
536
+ ```
537
+
538
+ You can add files to your `src/` and `test/` directories, and they will
539
+ instantly become part of your test and/or release build. Need a different
540
+ structure? You can modify the `project.yml` file with your new path or
541
+ tooling setup.
542
+
543
+ #### Installing local documentation
544
+
545
+ Are you just getting started with Ceedling? Maybe you’d like your
546
+ project to be installed with some of its handy [documentation](docs/)?
547
+ No problem! You can do this when you create a new project…
548
+
549
+ ```shell
550
+ > ceedling new --docs MyAwesomeProject
551
+ ```
552
+
553
+ #### Attaching a Ceedling version to your project
554
+
555
+ Ceedling can be installed as a globally available Ruby gem. Ceedling can
556
+ also deploy all its guts into your project instead. This allows it to
557
+ be used without worrying about external dependencies. More importantly,
558
+ you don’t have to worry about Ceedling changing outside of your project
559
+ just because you updated your gems. No need to worry about changes in
560
+ Unity or CMock breaking your build in the future.
561
+
562
+ To use Ceedling this way, tell it you want a local copy when you create
563
+ your project:
564
+
565
+ ```shell
566
+ > ceedling new --local YourNewProjectName
567
+ ```
568
+
569
+ This will install all of Unity, CMock, CException, and Ceedling itself
570
+ into a new folder `vendor/` inside your project `YourNewProjectName/`.
571
+ It will create the same simple empty directory structure for you with
572
+ `src/` and `test/` folders as the standard `new` command.
573
+
574
+ ### Running build & plugin tasks
575
+
576
+ You can view all the build and plugin tasks available to you thanks to your
577
+ Ceedling project file with `ceedling help`. Ceedling’s command line help
578
+ provides a summary list from your project configuration if Ceedling is
579
+ able to find your project file (`ceedling help help` for more on this).
580
+
581
+ Running Ceedling build tasks tends to look like this…
582
+
583
+ ```shell
584
+ > ceedling test:all release
585
+ ```
586
+
587
+ ```shell
588
+ > ceedling gcov:all --verbosity=obnoxious --test-case=boot --mixin=code_cruncher_toolchain
589
+ ```
590
+
591
+ ### Upgrading / updating Ceedling
592
+
593
+ You can upgrade to the latest version of Ceedling at any time, automatically
594
+ gaining access to any accompanying updates to Unity, CMock, and CException.
595
+
596
+ To update a locally installed gem…
597
+
598
+ ```shell
599
+ > gem update ceedling
600
+ ```
601
+
602
+ Otherwise, if you are using the Docker image, you may upgrade by pulling
603
+ a newer version of the image…
604
+
605
+ ```shell
606
+ > docker pull throwtheswitch/madsciencelab:<tag>
607
+ ```
608
+
609
+ If you want to force a vendored version of Ceedling inside your project to
610
+ upgrade to match your latest gem, no problem. Just do the following…
611
+
612
+ ```shell
613
+ > ceedling upgrade --local YourNewProjectName
614
+ ```
615
+
616
+ Just like with the `new` command, an `upgrade` should be executed from
617
+ within the root directory of your project.
618
+
619
+ ### Git integration
620
+
621
+ Are you using Git? You might want Ceedling to create a `.gitignore`
622
+ that ignores the build folder while retaining control of the artifacts
623
+ folder. This will also add a `.gitkeep` file to your `test/support` folder.
624
+ You can enable this by adding `--gitsupport` to your `new` call.
625
+
626
+ ```shell
627
+ > ceedling new --gitsupport YourNewProjectName
628
+ ```
629
+ <br/>
630
+
631
+ # 💻 Contributing to Ceedling Development
632
+
633
+ ## Alternate installation options for Ceedling development
634
+
635
+ ### Alternate local installation for development
636
+
637
+ After installing Ruby…
638
+
639
+ ```shell
640
+ > git clone --recursive https://github.com/throwtheswitch/ceedling.git
641
+ > cd ceedling
642
+ > git submodule update --init --recursive
643
+ > bundle install
644
+ ```
645
+
646
+ The Ceedling repository incorporates its supporting frameworks and some
647
+ plugins via Git submodules. A simple clone may not pull in the latest
648
+ and greatest.
649
+
650
+ The `bundle` tool ensures you have all needed Ruby gems installed. If
651
+ Bundler isn’t installed on your system or you run into problems, you
652
+ might have to install it:
653
+
654
+ ```shell
655
+ > sudo gem install bundler
656
+ ```
657
+
658
+ If you run into trouble running bundler and get messages like _can’t
659
+ find gem bundler (>= 0.a) with executable bundle
660
+ (Gem::GemNotFoundException)_, you may need to install a different
661
+ version of Bundler. For this please reference the version in the
662
+ Gemfile.lock.
663
+
664
+ ```shell
665
+ > sudo gem install bundler -v <version in Gemfile.lock>
666
+ ```
667
+
668
+ ### Alternate Docker image usage for development
669
+
670
+ As an alternative to local installation of Ceedling, nearly all development
671
+ tasks can be accomplished with the _MadScienceLab_ Docker images.
672
+
673
+ When running an existing image as a development container, one merely needs
674
+ to map a volume from your local Ceedling code repository to Ceedling’s
675
+ installation location within the container. With that accomplished,
676
+ experimenting with project builds and running self-tests is simple.
677
+
678
+ 1. Start your target Docker container from your host system terminal:
679
+
680
+ ```shell
681
+ > docker run -it --rm throwtheswitch/<image>:<tag>
682
+ ```
683
+ 1. Look up and note Ceedling’s installation path (listed in `version` output) from within the container command line:
684
+
685
+ ```shell
686
+ ~/project > ceedling version
687
+
688
+
689
+ ```
690
+ 1. Exit the container.
691
+ 1. Restart the container from your host system with the Ceedling installation
692
+ volume mapping from (2) and any other command line options you need:
693
+
694
+ ```shell
695
+ > docker run -it --rm -v /my/local/ceedling/repo:<container installation path> -v /my/local/experiment/path:/home/dev/project throwtheswitch/<image>:<tag>
696
+ ```
697
+
698
+ For development tasks, from the container shell you can:
699
+
700
+ 1. Run experiment projects you map into the container (e.g. at _/home/dev/project_).
701
+ 1. Run the self-test suite. Navigate to the gem installation path discovered in (2) above. From this location, follow the instructions in the section that immediately follows.
702
+
703
+ ## Running Ceedling’s self-tests
704
+
705
+ Ceedling uses [RSpec] for its tests.
706
+
707
+ To execute tests you may run the following from the root of your local
708
+ Ceedling repository. This test suite build option balances test coverage
709
+ with suite execution time.
710
+
711
+ ```shell
712
+ > rake spec
713
+ ```
714
+
715
+ To run individual test files (Ceedling’s Ruby-based tests, that is) and
716
+ perform other tasks, use the available Rake tasks. From the root of your
717
+ local Ceedling repo, list those task like this:
718
+
719
+ ```shell
720
+ > rake -T
721
+ ```
722
+
723
+ [RSpec]: https://rspec.info
724
+
725
+ ## Working in `bin/` vs. `lib/`
726
+
727
+ Most of Ceedling’s functionality is contained in the application code residing
728
+ in `lib/`. Ceedling’s command line handling, startup configuration, project
729
+ file loading, and mixin handling are contained in a “bootloader” in `bin/`.
730
+ The code in `bin/` is the source of the `ceedling` command line tool and
731
+ launches the application from `lib/`.
732
+
733
+ Depending on what you’re working on you may need to run Ceedling using
734
+ a specialized approach.
735
+
736
+ If you are only working in `lib/`, you can:
737
+
738
+ 1. Run Ceedling using the `ceedling` command line utility you already have
739
+ installed. The code in `bin/` will run from your locally installed gem or
740
+ from within your Docker container and launch the Ceedling application for
741
+ you.
742
+ 1. Modify a project file by setting a path value for `:project` ↳ `:which_ceedling`
743
+ that points to the local copy of Ceedling you cloned from the Git repository.
744
+ See _CeedlingPacket_ for details.
50
745
 
51
- ceedling version
746
+ If you are working in `bin/`, running `ceedling` at the command line will not
747
+ call your modified code. Instead, you must execute the path to the executable
748
+ `ceedling` in the `bin/` folder of the local Ceedling repository you are
749
+ working on.
52
750
 
53
- This will print the version of the ceedling gem and all of the ceedling components it packages (Ceedling, Unity, CMock, CException).
54
751
 
55
- Resources
56
- =========
57
- Ceedling, Unity, CMock, and CException are all available at [throwtheswitch](http://throwtheswitch.org/).
58
752
 
59
- Authors
60
- =======
61
- * Mike Karlesky (michael@karlesky.net)
62
- * Mark VanderVoord (mvandervoord@gmail.com)
63
- * Greg Williams (williams@atomicobject.com)
64
- * Matt Fletcher (fletcher@atomicobject.com)
65
- * © 2011 [Atomic Object](http://www.atomicobject.com/)
66
- * More Atomic Object [open source](http://www.atomicobject.com/pages/Software+Commons) projects