ceedling 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1263) hide show
  1. checksums.yaml +4 -4
  2. data/GIT_COMMIT_SHA +1 -1
  3. data/Gemfile +7 -1
  4. data/Gemfile.lock +19 -12
  5. data/README.md +140 -156
  6. data/Rakefile +189 -9
  7. data/assets/example_file.c +1 -1
  8. data/assets/example_file.h +1 -1
  9. data/assets/example_file_call.c +1 -1
  10. data/assets/example_file_call.h +1 -1
  11. data/assets/example_file_with_statics.c +10 -0
  12. data/assets/example_file_with_stdio.c +13 -0
  13. data/assets/example_file_with_stdio.h +15 -0
  14. data/assets/project.yml +20 -18
  15. data/assets/test_example_file.c +1 -1
  16. data/assets/test_example_file_boom.c +1 -1
  17. data/assets/test_example_file_crash_assert.c +25 -0
  18. data/assets/{test_example_file_crash.c → test_example_file_crash_sigsegv.c} +4 -3
  19. data/assets/test_example_file_source_include.c +17 -0
  20. data/assets/test_example_file_success.c +1 -1
  21. data/assets/test_example_file_unity_printf.c +1 -1
  22. data/assets/test_example_file_verbose.c +1 -1
  23. data/assets/test_example_file_with_mock.c +1 -1
  24. data/assets/test_example_file_with_stdio.c +18 -0
  25. data/assets/test_example_with_parameterized_tests.c +1 -1
  26. data/assets/tests_with_defines/src/adc_hardware.c +1 -1
  27. data/assets/tests_with_defines/src/adc_hardware.h +1 -1
  28. data/assets/tests_with_defines/src/adc_hardware_configurator.c +1 -1
  29. data/assets/tests_with_defines/src/adc_hardware_configurator.h +1 -1
  30. data/assets/tests_with_defines/test/test_adc_hardware.c +1 -1
  31. data/assets/tests_with_defines/test/test_adc_hardware_special.c +1 -1
  32. data/assets/tests_with_encoding/src/unicoder.c +12 -0
  33. data/assets/tests_with_encoding/src/unicoder.h +14 -0
  34. data/assets/tests_with_encoding/test/test_unicoder.c +15 -0
  35. data/assets/tests_with_encoding/test/test_unicoder_partial.c +17 -0
  36. data/assets/tests_with_fallback_conditionals/src/conditional_module.c +18 -0
  37. data/assets/tests_with_fallback_conditionals/src/conditional_module.h +13 -0
  38. data/assets/tests_with_fallback_conditionals/src/optional_dep.h +12 -0
  39. data/assets/tests_with_fallback_conditionals/test/test_conditionals.c +49 -0
  40. data/assets/tests_with_preprocessing/src/adc_hardwareA.c +1 -1
  41. data/assets/tests_with_preprocessing/src/adc_hardwareA.h +1 -1
  42. data/assets/tests_with_preprocessing/src/adc_hardwareB.c +1 -1
  43. data/assets/tests_with_preprocessing/src/adc_hardwareB.h +1 -1
  44. data/assets/tests_with_preprocessing/src/adc_hardwareC.c +1 -1
  45. data/assets/tests_with_preprocessing/src/adc_hardwareC.h +1 -1
  46. data/assets/tests_with_preprocessing/src/adc_hardware_configuratorA.h +1 -1
  47. data/assets/tests_with_preprocessing/src/adc_hardware_configuratorB.h +1 -1
  48. data/assets/tests_with_preprocessing/src/adc_hardware_configuratorC.h +1 -1
  49. data/assets/tests_with_preprocessing/test/test_adc_hardwareA.c +1 -1
  50. data/assets/tests_with_preprocessing/test/test_adc_hardwareB.c +1 -1
  51. data/assets/tests_with_preprocessing/test/test_adc_hardwareC.c +1 -1
  52. data/assets/uncovered_example_file.c +1 -1
  53. data/bin/actions_wrapper.rb +1 -1
  54. data/bin/app_cfg.rb +1 -1
  55. data/bin/ceedling +14 -3
  56. data/bin/cli.rb +110 -38
  57. data/bin/cli_handler.rb +167 -68
  58. data/bin/cli_helper.rb +179 -55
  59. data/bin/configinator.rb +71 -12
  60. data/bin/merginator.rb +82 -0
  61. data/bin/mixin_standardizer.rb +127 -0
  62. data/bin/mixinator.rb +199 -33
  63. data/bin/mixins.rb +4 -2
  64. data/bin/objects.yml +22 -1
  65. data/bin/path_validator.rb +1 -1
  66. data/bin/projectinator.rb +29 -20
  67. data/bin/rake_patches.rb +31 -0
  68. data/bin/recursive_merger.rb +128 -0
  69. data/bin/versionator.rb +2 -2
  70. data/ceedling.gemspec +31 -14
  71. data/config/test_environment.rb +1 -1
  72. data/docs/BreakingChanges.md +16 -3
  73. data/docs/Changelog.md +177 -6
  74. data/docs/KnownIssues.md +26 -0
  75. data/docs/ReleaseNotes.md +133 -19
  76. data/docs/mkdocs/assets/images/ceedling-logo-circle.png +0 -0
  77. data/docs/mkdocs/assets/images/ceedling.svg +90 -0
  78. data/docs/mkdocs/assets/images/favicon.png +0 -0
  79. data/docs/mkdocs/assets/stylesheets/admonitions.css +152 -0
  80. data/docs/mkdocs/assets/stylesheets/fixes-local.css +15 -0
  81. data/docs/mkdocs/assets/stylesheets/styling.css +102 -0
  82. data/docs/mkdocs/configuration/environment-vars.md +14 -0
  83. data/docs/mkdocs/configuration/global-collections.md +156 -0
  84. data/docs/mkdocs/configuration/index.md +75 -0
  85. data/docs/mkdocs/configuration/loading.md +89 -0
  86. data/docs/mkdocs/configuration/mixins.md +607 -0
  87. data/docs/mkdocs/configuration/parallel-builds.md +97 -0
  88. data/docs/mkdocs/configuration/project-file.md +198 -0
  89. data/docs/mkdocs/configuration/reference/cexception.md +35 -0
  90. data/docs/mkdocs/configuration/reference/cmock.md +106 -0
  91. data/docs/mkdocs/configuration/reference/defines.md +352 -0
  92. data/docs/mkdocs/configuration/reference/environment.md +55 -0
  93. data/docs/mkdocs/configuration/reference/extension.md +63 -0
  94. data/docs/mkdocs/configuration/reference/files.md +154 -0
  95. data/docs/mkdocs/configuration/reference/flags.md +296 -0
  96. data/docs/mkdocs/configuration/reference/index.md +168 -0
  97. data/docs/mkdocs/configuration/reference/libraries.md +82 -0
  98. data/docs/mkdocs/configuration/reference/mixins.md +24 -0
  99. data/docs/mkdocs/configuration/reference/paths.md +276 -0
  100. data/docs/mkdocs/configuration/reference/plugins.md +60 -0
  101. data/docs/mkdocs/configuration/reference/project.md +333 -0
  102. data/docs/mkdocs/configuration/reference/release-build.md +62 -0
  103. data/docs/mkdocs/configuration/reference/test-build.md +55 -0
  104. data/docs/mkdocs/configuration/reference/test-runner.md +61 -0
  105. data/docs/mkdocs/configuration/reference/tools.md +457 -0
  106. data/docs/mkdocs/configuration/reference/unity.md +49 -0
  107. data/docs/mkdocs/configuration/which-ceedling.md +77 -0
  108. data/docs/mkdocs/development/index.md +50 -0
  109. data/docs/mkdocs/development/plugins/configuration.md +164 -0
  110. data/docs/mkdocs/development/plugins/index.md +84 -0
  111. data/docs/{PluginDevelopmentGuide.md → mkdocs/development/plugins/plugin-subclass.md} +61 -312
  112. data/docs/mkdocs/development/plugins/rake-tasks.md +54 -0
  113. data/docs/mkdocs/development/workflow.md +284 -0
  114. data/docs/mkdocs/getting-started/command-line.md +477 -0
  115. data/docs/mkdocs/getting-started/example-projects/cipher-quest.md +65 -0
  116. data/docs/mkdocs/getting-started/example-projects/index.md +49 -0
  117. data/docs/mkdocs/getting-started/example-projects/temp-sensor.md +60 -0
  118. data/docs/mkdocs/getting-started/example-projects/wondrous-forest.md +45 -0
  119. data/docs/mkdocs/getting-started/index.md +41 -0
  120. data/docs/mkdocs/getting-started/installation.md +172 -0
  121. data/docs/mkdocs/getting-started/quick-start.md +65 -0
  122. data/docs/mkdocs/help.md +49 -0
  123. data/docs/mkdocs/index.md +215 -0
  124. data/docs/mkdocs/overview/build-system.md +115 -0
  125. data/docs/mkdocs/overview/index.md +29 -0
  126. data/docs/mkdocs/overview/test-environments.md +33 -0
  127. data/docs/mkdocs/overview/tools-and-frameworks.md +115 -0
  128. data/{plugins/beep/README.md → docs/mkdocs/plugins/beep.md} +10 -9
  129. data/{plugins/bullseye/README.md → docs/mkdocs/plugins/bullseye.md} +8 -12
  130. data/{plugins/command_hooks/README.md → docs/mkdocs/plugins/command-hooks.md} +69 -47
  131. data/{plugins/compile_commands_json_db/README.md → docs/mkdocs/plugins/compile-commands-json-db.md} +7 -5
  132. data/docs/mkdocs/plugins/cppcheck.md +377 -0
  133. data/{plugins/dependencies/README.md → docs/mkdocs/plugins/dependencies.md} +39 -50
  134. data/{plugins/fff/README.md → docs/mkdocs/plugins/fff.md} +42 -37
  135. data/docs/mkdocs/plugins/gcov/examples.md +92 -0
  136. data/docs/mkdocs/plugins/gcov/gcovr.md +251 -0
  137. data/docs/mkdocs/plugins/gcov/index.md +68 -0
  138. data/docs/mkdocs/plugins/gcov/overview.md +145 -0
  139. data/docs/mkdocs/plugins/gcov/reportgenerator.md +58 -0
  140. data/docs/mkdocs/plugins/gcov/reporting.md +147 -0
  141. data/docs/mkdocs/plugins/gcov/setup.md +232 -0
  142. data/docs/mkdocs/plugins/gcov/tool-versions.md +60 -0
  143. data/docs/mkdocs/plugins/gcov/troubleshooting.md +78 -0
  144. data/docs/mkdocs/plugins/index.md +221 -0
  145. data/{plugins/module_generator/README.md → docs/mkdocs/plugins/module-generator.md} +44 -44
  146. data/{plugins/report_build_warnings_log/README.md → docs/mkdocs/plugins/report-build-warnings-log.md} +6 -4
  147. data/{plugins/report_tests_gtestlike_stdout/README.md → docs/mkdocs/plugins/report-tests-gtestlike-stdout.md} +9 -7
  148. data/{plugins/report_tests_ide_stdout/README.md → docs/mkdocs/plugins/report-tests-ide-stdout.md} +8 -7
  149. data/{plugins/report_tests_log_factory/README.md → docs/mkdocs/plugins/report-tests-log-factory.md} +44 -36
  150. data/{plugins/report_tests_pretty_stdout/README.md → docs/mkdocs/plugins/report-tests-pretty-stdout.md} +8 -6
  151. data/{plugins/report_tests_raw_output_log/README.md → docs/mkdocs/plugins/report-tests-raw-output-log.md} +9 -7
  152. data/{plugins/report_tests_teamcity_stdout/README.md → docs/mkdocs/plugins/report-tests-teamcity-stdout.md} +8 -6
  153. data/docs/mkdocs/plugins/sample_html_report.png +0 -0
  154. data/docs/mkdocs/plugins/valgrind.md +192 -0
  155. data/docs/mkdocs/project/release-history.md +61 -0
  156. data/docs/{CeedlingUpgrade.md → mkdocs/project/upgrade.md} +9 -7
  157. data/docs/mkdocs/reference/build-directives.md +37 -0
  158. data/docs/mkdocs/reference/command-line.md +323 -0
  159. data/docs/mkdocs/reference/environment-vars.md +60 -0
  160. data/docs/mkdocs/reference/gcov-plugin.md +577 -0
  161. data/docs/mkdocs/reference/global-collections.md +160 -0
  162. data/docs/mkdocs/reference/index.md +65 -0
  163. data/docs/mkdocs/reference/partials-macros.md +79 -0
  164. data/docs/mkdocs/reference/project-configuration.md +46 -0
  165. data/docs/mkdocs/snapshot/assets/project.yml +404 -0
  166. data/docs/mkdocs/snapshot/examples/cipher_quest/README.md +210 -0
  167. data/docs/mkdocs/snapshot/examples/temp_sensor/README.md +283 -0
  168. data/docs/mkdocs/snapshot/examples/wondrous_forest/README.md +92 -0
  169. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults.yml +33 -0
  170. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults_gcov.rb +136 -0
  171. data/docs/mkdocs/snapshot.yml +20 -0
  172. data/docs/mkdocs/testing-guide/build-directives.md +153 -0
  173. data/docs/mkdocs/testing-guide/conventions.md +616 -0
  174. data/docs/mkdocs/testing-guide/frameworks.md +192 -0
  175. data/docs/mkdocs/testing-guide/index.md +80 -0
  176. data/docs/mkdocs/testing-guide/partials/configuration.md +67 -0
  177. data/docs/mkdocs/testing-guide/partials/conventions.md +68 -0
  178. data/docs/mkdocs/testing-guide/partials/directives.md +212 -0
  179. data/docs/mkdocs/testing-guide/partials/example.md +149 -0
  180. data/docs/mkdocs/testing-guide/partials/index.md +79 -0
  181. data/docs/mkdocs/testing-guide/partials/overview.md +81 -0
  182. data/docs/mkdocs/testing-guide/partials/variables.md +244 -0
  183. data/docs/mkdocs/testing-guide/test-cases.md +194 -0
  184. data/docs/mkdocs/testing-guide/test-sample.md +94 -0
  185. data/docs/mkdocs/testing-guide/test-suite-anatomy.md +58 -0
  186. data/examples/cipher_quest/README.md +210 -0
  187. data/examples/cipher_quest/mixin/release_analyze.yml +28 -0
  188. data/examples/cipher_quest/mixin/release_caesar.yml +28 -0
  189. data/examples/cipher_quest/mixin/release_full.yml +30 -0
  190. data/examples/cipher_quest/mixin/release_rot13.yml +28 -0
  191. data/examples/cipher_quest/project.yml +108 -0
  192. data/examples/cipher_quest/src/analyzer.c +83 -0
  193. data/examples/cipher_quest/src/analyzer.h +29 -0
  194. data/examples/cipher_quest/src/cipher.c +59 -0
  195. data/examples/cipher_quest/src/cipher.h +27 -0
  196. data/examples/cipher_quest/src/main.c +151 -0
  197. data/examples/cipher_quest/src/text_utils.c +119 -0
  198. data/examples/cipher_quest/src/text_utils.h +23 -0
  199. data/examples/cipher_quest/test/TestAnalyzer.c +133 -0
  200. data/examples/cipher_quest/test/TestCipherCaesar.c +81 -0
  201. data/examples/cipher_quest/test/TestCipherRot13.c +74 -0
  202. data/examples/cipher_quest/test/TestTextUtils.c +184 -0
  203. data/examples/temp_sensor/README.md +279 -14
  204. data/examples/temp_sensor/mixin/add_gcov.yml +1 -1
  205. data/examples/temp_sensor/mixin/add_unity_helper.yml +1 -1
  206. data/examples/temp_sensor/project.yml +4 -15
  207. data/examples/temp_sensor/src/AdcConductor.c +5 -1
  208. data/examples/temp_sensor/src/AdcConductor.h +1 -1
  209. data/examples/temp_sensor/src/AdcHardware.c +1 -1
  210. data/examples/temp_sensor/src/AdcHardware.h +1 -1
  211. data/examples/temp_sensor/src/AdcHardwareConfigurator.c +2 -1
  212. data/examples/temp_sensor/src/AdcHardwareConfigurator.h +1 -1
  213. data/examples/temp_sensor/src/AdcModel.c +2 -2
  214. data/examples/temp_sensor/src/AdcModel.h +1 -1
  215. data/examples/temp_sensor/src/AdcTemperatureSensor.c +2 -1
  216. data/examples/temp_sensor/src/AdcTemperatureSensor.h +1 -1
  217. data/examples/temp_sensor/src/Executor.c +1 -1
  218. data/examples/temp_sensor/src/Executor.h +1 -1
  219. data/examples/temp_sensor/src/IntrinsicsWrapper.c +1 -1
  220. data/examples/temp_sensor/src/IntrinsicsWrapper.h +1 -1
  221. data/examples/temp_sensor/src/Main.c +3 -3
  222. data/examples/temp_sensor/src/Main.h +1 -1
  223. data/examples/temp_sensor/src/Model.c +1 -1
  224. data/examples/temp_sensor/src/Model.h +1 -1
  225. data/examples/temp_sensor/src/ModelConfig.h +1 -1
  226. data/examples/temp_sensor/src/TaskScheduler.c +1 -1
  227. data/examples/temp_sensor/src/TaskScheduler.h +1 -1
  228. data/examples/temp_sensor/src/TemperatureFilter.c +1 -1
  229. data/examples/temp_sensor/src/TemperatureFilter.h +1 -1
  230. data/examples/temp_sensor/src/TimerConductor.c +1 -1
  231. data/examples/temp_sensor/src/TimerConductor.h +1 -1
  232. data/examples/temp_sensor/src/TimerConfigurator.c +2 -1
  233. data/examples/temp_sensor/src/TimerConfigurator.h +1 -1
  234. data/examples/temp_sensor/src/TimerHardware.c +1 -1
  235. data/examples/temp_sensor/src/TimerHardware.h +1 -1
  236. data/examples/temp_sensor/src/TimerInterruptConfigurator.c +2 -1
  237. data/examples/temp_sensor/src/TimerInterruptConfigurator.h +1 -1
  238. data/examples/temp_sensor/src/TimerInterruptHandler.c +2 -1
  239. data/examples/temp_sensor/src/TimerInterruptHandler.h +1 -1
  240. data/examples/temp_sensor/src/TimerModel.c +1 -1
  241. data/examples/temp_sensor/src/TimerModel.h +1 -1
  242. data/examples/temp_sensor/src/Types.h +5 -2
  243. data/examples/temp_sensor/src/UsartConductor.c +1 -1
  244. data/examples/temp_sensor/src/UsartConductor.h +1 -1
  245. data/examples/temp_sensor/src/UsartConfigurator.c +2 -1
  246. data/examples/temp_sensor/src/UsartConfigurator.h +1 -1
  247. data/examples/temp_sensor/src/UsartHardware.c +1 -1
  248. data/examples/temp_sensor/src/UsartHardware.h +1 -1
  249. data/examples/temp_sensor/src/UsartModel.c +2 -2
  250. data/examples/temp_sensor/src/UsartModel.h +1 -1
  251. data/examples/temp_sensor/src/UsartPutChar.c +2 -1
  252. data/examples/temp_sensor/src/UsartPutChar.h +1 -1
  253. data/examples/temp_sensor/src/UsartTransmitBufferStatus.c +2 -1
  254. data/examples/temp_sensor/src/UsartTransmitBufferStatus.h +1 -1
  255. data/examples/temp_sensor/src/{TemperatureCalculator.c → calculators/TemperatureCalculator.c} +1 -1
  256. data/examples/temp_sensor/src/{TemperatureCalculator.h → calculators/TemperatureCalculator.h} +1 -1
  257. data/examples/temp_sensor/src/{UsartBaudRateRegisterCalculator.c → calculators/UsartBaudRateRegisterCalculator.c} +1 -1
  258. data/examples/temp_sensor/src/{UsartBaudRateRegisterCalculator.h → calculators/UsartBaudRateRegisterCalculator.h} +1 -1
  259. data/examples/temp_sensor/test/TestExecutor.c +1 -1
  260. data/examples/temp_sensor/test/TestMain.c +5 -1
  261. data/examples/temp_sensor/test/TestModel.c +1 -1
  262. data/examples/temp_sensor/test/TestTaskScheduler.c +1 -1
  263. data/examples/temp_sensor/test/TestTemperatureCalculator.c +2 -2
  264. data/examples/temp_sensor/test/TestTemperatureFilter.c +5 -2
  265. data/examples/temp_sensor/test/TestTimerConductor.c +1 -1
  266. data/examples/temp_sensor/test/TestTimerHardware.c +1 -1
  267. data/examples/temp_sensor/test/TestTimerIntegrated.c +8 -4
  268. data/examples/temp_sensor/test/TestTimerModel.c +1 -1
  269. data/examples/temp_sensor/test/TestTimerPlatformStandin.c +154 -0
  270. data/examples/temp_sensor/test/TestUsartBaudRateRegisterCalculator.c +1 -1
  271. data/examples/temp_sensor/test/TestUsartConductor.c +1 -1
  272. data/examples/temp_sensor/test/TestUsartHardware.c +1 -1
  273. data/examples/temp_sensor/test/TestUsartIntegrated.c +9 -5
  274. data/examples/temp_sensor/test/TestUsartModel.c +2 -2
  275. data/examples/temp_sensor/test/TestUsartPlatformStandin.c +145 -0
  276. data/examples/temp_sensor/test/adc/TestAdcConductor.c +1 -1
  277. data/examples/temp_sensor/test/adc/TestAdcHardware.c +1 -1
  278. data/examples/temp_sensor/test/adc/TestAdcModel.c +1 -1
  279. data/examples/temp_sensor/test/adc/TestAdcPlatformStandin.c +100 -0
  280. data/examples/temp_sensor/test/platform/at91sam7s256.c +25 -0
  281. data/examples/temp_sensor/test/platform/at91sam7s256.h +183 -0
  282. data/examples/temp_sensor/test/support/UnityHelper.c +1 -1
  283. data/examples/temp_sensor/test/support/UnityHelper.h +1 -1
  284. data/examples/wondrous_forest/README.md +92 -0
  285. data/{lib/ceedling/release_invoker_helper.rb → examples/wondrous_forest/mixin/add_gcov.yml} +14 -4
  286. data/examples/wondrous_forest/project.yml +86 -0
  287. data/examples/wondrous_forest/src/AlertManager.c +125 -0
  288. data/examples/wondrous_forest/src/AlertManager.h +30 -0
  289. data/examples/wondrous_forest/src/EventQueue.c +73 -0
  290. data/examples/wondrous_forest/src/EventQueue.h +22 -0
  291. data/examples/wondrous_forest/src/ForestMonitor.c +88 -0
  292. data/examples/wondrous_forest/src/ForestMonitor.h +18 -0
  293. data/examples/wondrous_forest/src/HumiditySensor.c +57 -0
  294. data/examples/wondrous_forest/src/HumiditySensor.h +17 -0
  295. data/examples/wondrous_forest/src/LightSensor.c +51 -0
  296. data/examples/wondrous_forest/src/LightSensor.h +18 -0
  297. data/examples/wondrous_forest/src/SensorHal.c +62 -0
  298. data/examples/wondrous_forest/src/SensorHal.h +19 -0
  299. data/examples/wondrous_forest/src/SoilMoisture.c +61 -0
  300. data/examples/wondrous_forest/src/SoilMoisture.h +19 -0
  301. data/examples/wondrous_forest/src/TemperatureSensor.c +67 -0
  302. data/examples/wondrous_forest/src/TemperatureSensor.h +18 -0
  303. data/examples/wondrous_forest/src/Types.h +84 -0
  304. data/examples/wondrous_forest/src/UartDriver.c +55 -0
  305. data/examples/wondrous_forest/src/UartDriver.h +18 -0
  306. data/examples/wondrous_forest/test/TestAlertManager.c +105 -0
  307. data/examples/wondrous_forest/test/TestEventQueue.c +117 -0
  308. data/examples/wondrous_forest/test/TestForestMonitor.c +118 -0
  309. data/examples/wondrous_forest/test/TestHumiditySensor.c +85 -0
  310. data/examples/wondrous_forest/test/TestLightSensor.c +79 -0
  311. data/examples/wondrous_forest/test/TestSensorHal.c +58 -0
  312. data/examples/wondrous_forest/test/TestSoilMoisture.c +96 -0
  313. data/examples/wondrous_forest/test/TestTemperatureSensor.c +100 -0
  314. data/examples/wondrous_forest/test/TestUartDriver.c +55 -0
  315. data/lib/ceedling/application.rb +1 -1
  316. data/lib/ceedling/array_patches.rb +28 -0
  317. data/lib/ceedling/batchinator.rb +76 -0
  318. data/lib/ceedling/c_extractor/c_extractor.rb +340 -0
  319. data/lib/ceedling/c_extractor/c_extractor_code_text.rb +283 -0
  320. data/lib/ceedling/c_extractor/c_extractor_constants.rb +38 -0
  321. data/lib/ceedling/c_extractor/c_extractor_declarations.rb +415 -0
  322. data/lib/ceedling/c_extractor/c_extractor_definitions.rb +157 -0
  323. data/lib/ceedling/c_extractor/c_extractor_functions.rb +402 -0
  324. data/lib/ceedling/c_extractor/c_extractor_preprocessing.rb +262 -0
  325. data/lib/ceedling/c_extractor/c_extractor_types.rb +122 -0
  326. data/lib/ceedling/cacheinator.rb +1 -1
  327. data/lib/ceedling/cacheinator_helper.rb +23 -4
  328. data/lib/ceedling/ceedling.h +40 -0
  329. data/lib/ceedling/{config_matchinator.rb → config/config_matchinator.rb} +67 -5
  330. data/lib/ceedling/{config_walkinator.rb → config/config_walkinator.rb} +1 -1
  331. data/lib/ceedling/{configurator.rb → config/configurator.rb} +269 -107
  332. data/lib/ceedling/{configurator_builder.rb → config/configurator_builder.rb} +25 -6
  333. data/lib/ceedling/{configurator_plugins.rb → config/configurator_plugins.rb} +2 -4
  334. data/lib/ceedling/{configurator_setup.rb → config/configurator_setup.rb} +39 -71
  335. data/lib/ceedling/{configurator_validator.rb → config/configurator_validator.rb} +1 -1
  336. data/lib/ceedling/constants.rb +59 -18
  337. data/lib/ceedling/defaults.rb +31 -44
  338. data/lib/ceedling/defineinator.rb +2 -2
  339. data/lib/ceedling/dependinator.rb +1 -1
  340. data/lib/ceedling/encodinator.rb +1 -1
  341. data/lib/ceedling/erb_wrapper.rb +1 -1
  342. data/lib/ceedling/exceptions.rb +23 -3
  343. data/lib/ceedling/file_finder.rb +39 -10
  344. data/lib/ceedling/file_finder_helper.rb +2 -2
  345. data/lib/ceedling/file_path_collection_utils.rb +37 -23
  346. data/lib/ceedling/file_path_utils.rb +183 -26
  347. data/lib/ceedling/file_system_wrapper.rb +1 -1
  348. data/lib/ceedling/file_wrapper.rb +14 -1
  349. data/lib/ceedling/flaginator.rb +1 -1
  350. data/lib/ceedling/{generator.rb → generators/generator.rb} +86 -23
  351. data/lib/ceedling/{generator_helper.rb → generators/generator_helper.rb} +17 -11
  352. data/lib/ceedling/{generator_mocks.rb → generators/generator_mocks.rb} +1 -1
  353. data/lib/ceedling/generators/generator_partials.rb +177 -0
  354. data/lib/ceedling/{generator_test_results.rb → generators/generator_test_results.rb} +43 -17
  355. data/lib/ceedling/generators/generator_test_results_backtrace.rb +290 -0
  356. data/lib/ceedling/{generator_test_results_sanity_checker.rb → generators/generator_test_results_sanity_checker.rb} +1 -1
  357. data/lib/ceedling/generators/generator_test_runner.rb +97 -0
  358. data/lib/ceedling/includes/include_factory.rb +43 -0
  359. data/lib/ceedling/{include_pathinator.rb → includes/include_pathinator.rb} +1 -1
  360. data/lib/ceedling/includes/includes.rb +341 -0
  361. data/lib/ceedling/loginator.rb +115 -12
  362. data/lib/ceedling/makefile.rb +1 -1
  363. data/lib/ceedling/objects.yml +145 -43
  364. data/lib/ceedling/parsing_parcels.rb +35 -9
  365. data/lib/ceedling/partials/partializer.rb +444 -0
  366. data/lib/ceedling/partials/partializer_config.rb +217 -0
  367. data/lib/ceedling/partials/partializer_helper.rb +344 -0
  368. data/lib/ceedling/partials/partializer_runtime.rb +29 -0
  369. data/lib/ceedling/partials/partializer_utils.rb +222 -0
  370. data/lib/ceedling/partials/partials.rb +82 -0
  371. data/lib/ceedling/{plugin.rb → plugins/plugin.rb} +1 -1
  372. data/lib/ceedling/{plugin_manager.rb → plugins/plugin_manager.rb} +47 -21
  373. data/lib/ceedling/{plugin_manager_helper.rb → plugins/plugin_manager_helper.rb} +1 -1
  374. data/lib/ceedling/{plugin_reportinator.rb → plugins/plugin_reportinator.rb} +10 -18
  375. data/lib/ceedling/{plugin_reportinator_helper.rb → plugins/plugin_reportinator_helper.rb} +22 -26
  376. data/lib/ceedling/plugins/report_tests_stdout_plugin.rb +88 -0
  377. data/lib/ceedling/preprocess/README.md +184 -0
  378. data/lib/ceedling/preprocess/c_comment_scanner.rb +194 -0
  379. data/lib/ceedling/preprocess/c_preprocessor_conditionals.rb +170 -0
  380. data/lib/ceedling/preprocess/preprocessinator.rb +605 -0
  381. data/lib/ceedling/preprocess/preprocessinator_bare_includes_extractor.rb +69 -0
  382. data/lib/ceedling/preprocess/preprocessinator_code_finder.rb +150 -0
  383. data/lib/ceedling/preprocess/preprocessinator_comment_stripper.rb +80 -0
  384. data/lib/ceedling/preprocess/preprocessinator_file_assembler.rb +378 -0
  385. data/lib/ceedling/preprocess/preprocessinator_includes_handler.rb +224 -0
  386. data/lib/ceedling/preprocess/preprocessinator_line_marker_includes_extractor.rb +215 -0
  387. data/lib/ceedling/preprocess/preprocessinator_reconstructor.rb +398 -0
  388. data/lib/ceedling/rake_app/rake_invocation_tracker.rb +39 -0
  389. data/lib/ceedling/rake_app/rake_task_registry.rb +210 -0
  390. data/lib/ceedling/{rake_utils.rb → rake_app/rake_utils.rb} +1 -1
  391. data/lib/ceedling/{rake_wrapper.rb → rake_app/rake_wrapper.rb} +1 -1
  392. data/lib/ceedling/rake_app/rakefile_component_resolver.rb +77 -0
  393. data/lib/ceedling/rakefile.rb +16 -8
  394. data/lib/ceedling/release_invoker.rb +48 -4
  395. data/lib/ceedling/reportinator.rb +39 -18
  396. data/lib/ceedling/ruby_expandinator.rb +61 -0
  397. data/lib/ceedling/rules_release.rake +4 -2
  398. data/lib/ceedling/rules_tests.rake +1 -23
  399. data/lib/ceedling/setupinator.rb +23 -11
  400. data/lib/ceedling/stream_wrapper.rb +1 -1
  401. data/lib/ceedling/system_utils.rb +1 -1
  402. data/lib/ceedling/system_wrapper.rb +18 -21
  403. data/lib/ceedling/tasks_base.rake +3 -3
  404. data/lib/ceedling/tasks_filesystem.rake +22 -12
  405. data/lib/ceedling/tasks_release.rake +11 -18
  406. data/lib/ceedling/tasks_tests.rake +1 -1
  407. data/lib/ceedling/test_context_extractor.rb +178 -109
  408. data/lib/ceedling/test_invoker/test_build_executor.rb +661 -0
  409. data/lib/ceedling/test_invoker/test_build_planner.rb +277 -0
  410. data/lib/ceedling/test_invoker/test_build_setup.rb +441 -0
  411. data/lib/ceedling/test_invoker/test_invoker.rb +251 -0
  412. data/lib/ceedling/test_invoker/test_invoker_types.rb +56 -0
  413. data/lib/ceedling/test_runner_manager.rb +1 -1
  414. data/lib/ceedling/tool_executor.rb +29 -19
  415. data/lib/ceedling/tool_executor_helper.rb +7 -15
  416. data/lib/ceedling/tool_validator.rb +24 -8
  417. data/lib/ceedling/verbosinator.rb +1 -1
  418. data/lib/ceedling/yaml_wrapper.rb +72 -12
  419. data/lib/ceedling.rb +1 -1
  420. data/lib/snapshot.rb +43 -0
  421. data/lib/version.rb +2 -2
  422. data/license.txt +1 -1
  423. data/mkdocs.local.yml +45 -0
  424. data/mkdocs.yml +202 -0
  425. data/plugins/beep/config/defaults.yml +1 -1
  426. data/plugins/beep/config/defaults_beep.rb +1 -1
  427. data/plugins/beep/lib/beep.rb +7 -5
  428. data/plugins/bullseye/assets/template.erb +1 -1
  429. data/plugins/bullseye/bullseye.rake +1 -1
  430. data/plugins/bullseye/config/defaults.yml +1 -1
  431. data/plugins/bullseye/lib/bullseye.rb +9 -9
  432. data/plugins/command_hooks/lib/command_hooks.rb +43 -38
  433. data/plugins/compile_commands_json_db/lib/compile_commands_json_db.rb +2 -2
  434. data/plugins/cppcheck/AUTHORS.md +8 -0
  435. data/plugins/cppcheck/config/defaults.yml +44 -0
  436. data/plugins/cppcheck/config/defaults_cppcheck.rb +32 -0
  437. data/plugins/cppcheck/cppcheck.rake +54 -0
  438. data/plugins/cppcheck/lib/cppcheck.rb +247 -0
  439. data/plugins/cppcheck/lib/cppcheck_constants.rb +20 -0
  440. data/plugins/cppcheck/lib/cppcheck_reports.rb +160 -0
  441. data/plugins/dependencies/Rakefile +1 -1
  442. data/plugins/dependencies/config/defaults.yml +1 -1
  443. data/plugins/dependencies/dependencies.rake +3 -3
  444. data/plugins/dependencies/example/boss/project.yml +1 -3
  445. data/plugins/dependencies/example/boss/src/boss.c +1 -1
  446. data/plugins/dependencies/example/boss/src/boss.h +1 -1
  447. data/plugins/dependencies/example/boss/src/main.c +1 -1
  448. data/plugins/dependencies/example/boss/test/test_boss.c +1 -1
  449. data/plugins/dependencies/example/supervisor/project.yml +1 -3
  450. data/plugins/dependencies/example/supervisor/src/supervisor.c +1 -1
  451. data/plugins/dependencies/example/supervisor/src/supervisor.h +1 -1
  452. data/plugins/dependencies/example/supervisor/test/test_supervisor.c +1 -1
  453. data/plugins/dependencies/lib/dependencies.rb +14 -2
  454. data/plugins/fff/Rakefile +1 -1
  455. data/plugins/fff/config/fff.yml +1 -1
  456. data/plugins/fff/examples/fff_example/project.yml +2 -2
  457. data/plugins/fff/examples/fff_example/src/bar.c +1 -1
  458. data/plugins/fff/examples/fff_example/src/bar.h +1 -1
  459. data/plugins/fff/examples/fff_example/src/custom_types.h +1 -1
  460. data/plugins/fff/examples/fff_example/src/display.c +1 -1
  461. data/plugins/fff/examples/fff_example/src/display.h +1 -1
  462. data/plugins/fff/examples/fff_example/src/event_processor.c +1 -1
  463. data/plugins/fff/examples/fff_example/src/event_processor.h +1 -1
  464. data/plugins/fff/examples/fff_example/src/foo.c +1 -1
  465. data/plugins/fff/examples/fff_example/src/foo.h +1 -1
  466. data/plugins/fff/examples/fff_example/src/subfolder/zzz.c +1 -1
  467. data/plugins/fff/examples/fff_example/src/subfolder/zzz.h +1 -1
  468. data/plugins/fff/examples/fff_example/test/test_event_processor.c +1 -1
  469. data/plugins/fff/examples/fff_example/test/test_foo.c +1 -1
  470. data/plugins/fff/lib/fff.rb +10 -5
  471. data/plugins/fff/lib/fff_mock_generator.rb +1 -1
  472. data/plugins/fff/spec/fff_mock_header_generator_spec.rb +1 -1
  473. data/plugins/fff/spec/fff_mock_source_generator_spec.rb +1 -1
  474. data/plugins/fff/spec/header_generator.rb +1 -1
  475. data/plugins/fff/spec/spec_helper.rb +1 -1
  476. data/plugins/fff/src/fff_unity_helper.h +1 -1
  477. data/plugins/gcov/config/defaults.yml +4 -1
  478. data/plugins/gcov/config/defaults_gcov.rb +40 -13
  479. data/plugins/gcov/gcov.rake +31 -1
  480. data/plugins/gcov/lib/console_reportinator.rb +180 -0
  481. data/plugins/gcov/lib/gcov.rb +189 -103
  482. data/plugins/gcov/lib/gcov_constants.rb +16 -4
  483. data/plugins/gcov/lib/gcov_reportinator.rb +63 -0
  484. data/{spec/configurator_helper_spec.rb → plugins/gcov/lib/gcov_types.rb} +2 -6
  485. data/plugins/gcov/lib/gcovr_reportinator.rb +237 -136
  486. data/plugins/gcov/lib/reportgenerator_reportinator.rb +242 -116
  487. data/plugins/module_generator/Rakefile +1 -1
  488. data/plugins/module_generator/assets/stubby1.h +1 -1
  489. data/plugins/module_generator/assets/stubby2.h +1 -1
  490. data/plugins/module_generator/config/module_generator.yml +1 -1
  491. data/plugins/module_generator/example/project.yml +1 -3
  492. data/plugins/module_generator/lib/module_generator.rb +2 -2
  493. data/plugins/module_generator/module_generator.rake +1 -1
  494. data/plugins/report_build_warnings_log/lib/report_build_warnings_log.rb +14 -20
  495. data/plugins/report_tests_gtestlike_stdout/assets/template.erb +3 -3
  496. data/plugins/report_tests_gtestlike_stdout/config/report_tests_gtestlike_stdout.yml +1 -1
  497. data/plugins/report_tests_gtestlike_stdout/lib/report_tests_gtestlike_stdout.rb +4 -61
  498. data/plugins/report_tests_ide_stdout/config/report_tests_ide_stdout.yml +1 -1
  499. data/plugins/report_tests_ide_stdout/lib/report_tests_ide_stdout.rb +7 -60
  500. data/plugins/report_tests_log_factory/config/defaults.yml +1 -1
  501. data/plugins/report_tests_log_factory/lib/cppunit_tests_reporter.rb +5 -5
  502. data/plugins/report_tests_log_factory/lib/html_tests_reporter.rb +302 -133
  503. data/plugins/report_tests_log_factory/lib/json_tests_reporter.rb +9 -7
  504. data/plugins/report_tests_log_factory/lib/junit_tests_reporter.rb +6 -5
  505. data/plugins/report_tests_log_factory/lib/report_tests_log_factory.rb +72 -36
  506. data/plugins/report_tests_log_factory/lib/tests_reporter.rb +8 -8
  507. data/plugins/report_tests_pretty_stdout/assets/template.erb +1 -2
  508. data/plugins/report_tests_pretty_stdout/config/report_tests_pretty_stdout.yml +1 -1
  509. data/plugins/report_tests_pretty_stdout/lib/report_tests_pretty_stdout.rb +4 -65
  510. data/plugins/report_tests_raw_output_log/lib/report_tests_raw_output_log.rb +4 -4
  511. data/plugins/report_tests_teamcity_stdout/config/defaults.yml +1 -1
  512. data/plugins/report_tests_teamcity_stdout/config/report_tests_teamcity_stdout.yml +1 -1
  513. data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +2 -2
  514. data/plugins/valgrind/config/defaults.yml +19 -0
  515. data/plugins/valgrind/config/defaults_valgrind.rb +20 -0
  516. data/plugins/valgrind/lib/valgrind.rb +132 -0
  517. data/plugins/valgrind/lib/valgrind_constants.rb +13 -0
  518. data/plugins/valgrind/valgrind.rake +87 -0
  519. data/site-local/404.html +4002 -0
  520. data/site-local/assets/images/ceedling-logo-circle.png +0 -0
  521. data/site-local/assets/images/ceedling.svg +90 -0
  522. data/site-local/assets/images/favicon.png +0 -0
  523. data/site-local/assets/javascripts/bundle.79ae519e.min.js +16 -0
  524. data/site-local/assets/javascripts/bundle.79ae519e.min.js.map +7 -0
  525. data/site-local/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  526. data/site-local/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  527. data/site-local/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  528. data/site-local/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  529. data/site-local/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  530. data/site-local/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  531. data/site-local/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  532. data/site-local/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  533. data/site-local/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  534. data/site-local/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  535. data/site-local/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  536. data/site-local/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  537. data/site-local/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  538. data/site-local/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  539. data/site-local/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  540. data/site-local/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  541. data/site-local/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  542. data/site-local/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  543. data/site-local/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  544. data/site-local/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  545. data/site-local/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  546. data/site-local/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  547. data/site-local/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  548. data/site-local/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  549. data/site-local/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  550. data/site-local/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  551. data/site-local/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  552. data/site-local/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  553. data/site-local/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  554. data/site-local/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  555. data/site-local/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  556. data/site-local/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  557. data/site-local/assets/javascripts/lunr/tinyseg.js +206 -0
  558. data/site-local/assets/javascripts/lunr/wordcut.js +6708 -0
  559. data/site-local/assets/javascripts/workers/search.2c215733.min.js +42 -0
  560. data/site-local/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
  561. data/site-local/assets/stylesheets/admonitions.css +152 -0
  562. data/site-local/assets/stylesheets/fixes-local.css +15 -0
  563. data/site-local/assets/stylesheets/main.484c7ddc.min.css +1 -0
  564. data/site-local/assets/stylesheets/main.484c7ddc.min.css.map +1 -0
  565. data/site-local/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
  566. data/site-local/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
  567. data/site-local/assets/stylesheets/styling.css +102 -0
  568. data/site-local/configuration/environment-vars.html +4102 -0
  569. data/site-local/configuration/global-collections.html +4248 -0
  570. data/site-local/configuration/index.html +4169 -0
  571. data/site-local/configuration/loading.html +4348 -0
  572. data/site-local/configuration/mixins.html +5060 -0
  573. data/site-local/configuration/parallel-builds.html +4347 -0
  574. data/site-local/configuration/project-file.html +4474 -0
  575. data/site-local/configuration/reference/cexception.html +4225 -0
  576. data/site-local/configuration/reference/cmock.html +4401 -0
  577. data/site-local/configuration/reference/defines.html +4734 -0
  578. data/site-local/configuration/reference/environment.html +4242 -0
  579. data/site-local/configuration/reference/extension.html +4387 -0
  580. data/site-local/configuration/reference/files.html +4541 -0
  581. data/site-local/configuration/reference/flags.html +4681 -0
  582. data/site-local/configuration/reference/index.html +4290 -0
  583. data/site-local/configuration/reference/libraries.html +4365 -0
  584. data/site-local/configuration/reference/mixins.html +4195 -0
  585. data/site-local/configuration/reference/paths.html +4714 -0
  586. data/site-local/configuration/reference/plugins.html +4262 -0
  587. data/site-local/configuration/reference/project.html +4777 -0
  588. data/site-local/configuration/reference/release-build.html +4287 -0
  589. data/site-local/configuration/reference/test-build.html +4264 -0
  590. data/site-local/configuration/reference/test-runner.html +4289 -0
  591. data/site-local/configuration/reference/tools.html +5120 -0
  592. data/site-local/configuration/reference/unity.html +4255 -0
  593. data/site-local/configuration/which-ceedling.html +4269 -0
  594. data/site-local/development/index.html +4148 -0
  595. data/site-local/development/plugins/configuration.html +4446 -0
  596. data/site-local/development/plugins/index.html +4212 -0
  597. data/site-local/development/plugins/plugin-subclass.html +5068 -0
  598. data/site-local/development/plugins/rake-tasks.html +4236 -0
  599. data/site-local/development/workflow.html +4664 -0
  600. data/site-local/getting-started/command-line.html +5498 -0
  601. data/site-local/getting-started/example-projects/cipher-quest.html +4272 -0
  602. data/site-local/getting-started/example-projects/index.html +4173 -0
  603. data/site-local/getting-started/example-projects/temp-sensor.html +4322 -0
  604. data/site-local/getting-started/example-projects/wondrous-forest.html +4290 -0
  605. data/site-local/getting-started/index.html +4116 -0
  606. data/site-local/getting-started/installation.html +4452 -0
  607. data/site-local/getting-started/quick-start.html +4262 -0
  608. data/site-local/help.html +4081 -0
  609. data/site-local/index.html +4364 -0
  610. data/site-local/overview/build-system.html +4288 -0
  611. data/site-local/overview/index.html +4103 -0
  612. data/site-local/overview/test-environments.html +4116 -0
  613. data/site-local/overview/tools-and-frameworks.html +4433 -0
  614. data/site-local/plugins/beep.html +4413 -0
  615. data/site-local/plugins/bullseye.html +4249 -0
  616. data/site-local/plugins/command-hooks.html +5023 -0
  617. data/site-local/plugins/compile-commands-json-db.html +4243 -0
  618. data/site-local/plugins/cppcheck.html +4851 -0
  619. data/site-local/plugins/dependencies.html +4828 -0
  620. data/site-local/plugins/fff.html +4661 -0
  621. data/site-local/plugins/gcov/examples.html +4293 -0
  622. data/site-local/plugins/gcov/gcovr.html +4512 -0
  623. data/site-local/plugins/gcov/index.html +4150 -0
  624. data/site-local/plugins/gcov/overview.html +4410 -0
  625. data/site-local/plugins/gcov/reportgenerator.html +4164 -0
  626. data/site-local/plugins/gcov/reporting.html +4336 -0
  627. data/site-local/plugins/gcov/setup.html +4597 -0
  628. data/site-local/plugins/gcov/tool-versions.html +4269 -0
  629. data/site-local/plugins/gcov/troubleshooting.html +4313 -0
  630. data/site-local/plugins/index.html +4348 -0
  631. data/site-local/plugins/module-generator.html +4588 -0
  632. data/site-local/plugins/report-build-warnings-log.html +4229 -0
  633. data/site-local/plugins/report-tests-gtestlike-stdout.html +4357 -0
  634. data/site-local/plugins/report-tests-ide-stdout.html +4270 -0
  635. data/site-local/plugins/report-tests-log-factory.html +4792 -0
  636. data/site-local/plugins/report-tests-pretty-stdout.html +4265 -0
  637. data/site-local/plugins/report-tests-raw-output-log.html +4292 -0
  638. data/site-local/plugins/report-tests-teamcity-stdout.html +4291 -0
  639. data/site-local/plugins/sample_html_report.png +0 -0
  640. data/site-local/plugins/valgrind.html +4605 -0
  641. data/site-local/project/release-history.html +4225 -0
  642. data/site-local/project/upgrade.html +4314 -0
  643. data/site-local/reference/build-directives.html +4210 -0
  644. data/site-local/reference/command-line.html +4989 -0
  645. data/site-local/reference/environment-vars.html +4278 -0
  646. data/site-local/reference/gcov-plugin.html +5886 -0
  647. data/site-local/reference/global-collections.html +4385 -0
  648. data/site-local/reference/index.html +4126 -0
  649. data/site-local/reference/partials-macros.html +4326 -0
  650. data/site-local/reference/project-configuration.html +4253 -0
  651. data/site-local/sitemap.xml +3 -0
  652. data/site-local/sitemap.xml.gz +0 -0
  653. data/site-local/snapshot/assets/project.yml +404 -0
  654. data/site-local/snapshot/examples/cipher_quest/index.html +4292 -0
  655. data/site-local/snapshot/examples/temp_sensor/index.html +4416 -0
  656. data/site-local/snapshot/examples/wondrous_forest/index.html +4200 -0
  657. data/site-local/snapshot/plugins/gcov/config/defaults.yml +33 -0
  658. data/site-local/snapshot/plugins/gcov/config/defaults_gcov.rb +136 -0
  659. data/site-local/testing-guide/build-directives.html +4481 -0
  660. data/site-local/testing-guide/conventions.html +5233 -0
  661. data/site-local/testing-guide/frameworks.html +4488 -0
  662. data/site-local/testing-guide/index.html +4174 -0
  663. data/site-local/testing-guide/partials/configuration.html +4347 -0
  664. data/site-local/testing-guide/partials/conventions.html +4327 -0
  665. data/site-local/testing-guide/partials/directives.html +4680 -0
  666. data/site-local/testing-guide/partials/example.html +4448 -0
  667. data/site-local/testing-guide/partials/index.html +4167 -0
  668. data/site-local/testing-guide/partials/overview.html +4322 -0
  669. data/site-local/testing-guide/partials/variables.html +4548 -0
  670. data/site-local/testing-guide/test-cases.html +4436 -0
  671. data/site-local/testing-guide/test-sample.html +4265 -0
  672. data/site-local/testing-guide/test-suite-anatomy.html +4249 -0
  673. data/spec/manual/stress_test.rb +1 -1
  674. data/spec/support/other_target.yml +1 -1
  675. data/spec/support/spec_helper.rb +20 -0
  676. data/spec/support/system/gem_dir_layout.rb +20 -0
  677. data/spec/support/system/spec_system_helper.rb +206 -0
  678. data/spec/support/system/system_context.rb +310 -0
  679. data/spec/support/system/system_test_output.rb +28 -0
  680. data/spec/support/target.yml +1 -1
  681. data/spec/system/cppcheck_deployment_spec.rb +49 -0
  682. data/spec/system/deployment_as_gem_spec.rb +86 -48
  683. data/spec/system/deployment_as_vendor_spec.rb +141 -79
  684. data/spec/system/encoding_stress_spec.rb +153 -0
  685. data/spec/system/example_cipher_quest_spec.rb +186 -0
  686. data/spec/system/example_temp_sensor_spec.rb +41 -35
  687. data/spec/system/example_wondrous_forest_spec.rb +117 -0
  688. data/spec/{gcov → system}/gcov_deployment_spec.rb +55 -26
  689. data/spec/system/mixin_ordering_spec.rb +548 -0
  690. data/spec/system/preprocessing_encoding_spec.rb +114 -0
  691. data/spec/system/preprocessing_fallback_conditionals_spec.rb +166 -0
  692. data/spec/system/preprocessing_locale_spec.rb +153 -0
  693. data/spec/system/preprocessing_parameterized_tests_spec.rb +183 -0
  694. data/spec/system/ruby_replacement_spec.rb +141 -0
  695. data/spec/{spec_system_helper.rb → system/support/common_test_cases.rb} +301 -350
  696. data/spec/system/support/cppcheck_common_test_cases.rb +98 -0
  697. data/spec/system/support/cppcheck_helpers.rb +27 -0
  698. data/spec/{gcov/gcov_test_cases_spec.rb → system/support/gcov_common_test_cases.rb} +224 -111
  699. data/spec/system/support/gcov_helpers.rb +81 -0
  700. data/spec/system/support/valgrind_common_test_cases.rb +120 -0
  701. data/spec/system/support/valgrind_helpers.rb +21 -0
  702. data/spec/system/upgrade_as_vendor_spec.rb +74 -39
  703. data/spec/system/valgrind_deployment_spec.rb +53 -0
  704. data/spec/units/bin/cli_helper_spec.rb +69 -0
  705. data/spec/units/bin/merginator_spec.rb +279 -0
  706. data/spec/units/bin/mixin_standardizer_spec.rb +231 -0
  707. data/spec/units/bin/mixinator_spec.rb +583 -0
  708. data/spec/units/bin/projectinator_mixin_spec.rb +362 -0
  709. data/spec/units/bin/recursive_merger_spec.rb +241 -0
  710. data/spec/units/c_extractor/c_extractor_code_text_spec.rb +2091 -0
  711. data/spec/units/c_extractor/c_extractor_declarations_spec.rb +746 -0
  712. data/spec/units/c_extractor/c_extractor_definitions_spec.rb +417 -0
  713. data/spec/units/c_extractor/c_extractor_functions_spec.rb +2742 -0
  714. data/spec/units/c_extractor/c_extractor_integration_spec.rb +935 -0
  715. data/spec/units/c_extractor/c_extractor_preprocessing_spec.rb +497 -0
  716. data/spec/units/c_extractor/c_extractor_spec.rb +356 -0
  717. data/spec/units/config_matchinator_spec.rb +401 -0
  718. data/spec/{config_walkinator_spec.rb → units/config_walkinator_spec.rb} +2 -2
  719. data/spec/{configurator_builder_spec.rb → units/configurator_builder_spec.rb} +1 -1
  720. data/spec/units/configurator_spec.rb +187 -0
  721. data/spec/{file_finder_helper_spec.rb → units/file_finder_helper_spec.rb} +1 -1
  722. data/spec/units/file_path_collection_utils_spec.rb +222 -0
  723. data/spec/units/file_path_utils_spec.rb +274 -0
  724. data/spec/units/generators/generator_helper_spec.rb +112 -0
  725. data/spec/units/generators/generator_partials_spec.rb +795 -0
  726. data/spec/units/generators/generator_test_results_backtrace_spec.rb +492 -0
  727. data/spec/{generator_test_results_sanity_checker_spec.rb → units/generators/generator_test_results_sanity_checker_spec.rb} +5 -4
  728. data/spec/units/generators/generator_test_results_spec.rb +412 -0
  729. data/spec/units/generators/generator_test_runner_spec.rb +120 -0
  730. data/spec/units/includes/include_spec.rb +716 -0
  731. data/spec/units/includes/includes_spec.rb +1069 -0
  732. data/spec/units/parsing_parcels_spec.rb +139 -0
  733. data/spec/units/partials/partializer_config_spec.rb +388 -0
  734. data/spec/units/partials/partializer_helper_spec.rb +992 -0
  735. data/spec/units/partials/partializer_spec.rb +1629 -0
  736. data/spec/units/partials/partializer_utils_spec.rb +587 -0
  737. data/spec/units/plugin_manager_spec.rb +48 -0
  738. data/spec/units/plugins/cppcheck_spec.rb +557 -0
  739. data/spec/units/preprocess/c_comment_scanner_spec.rb +409 -0
  740. data/spec/units/preprocess/c_preprocessor_conditionals_spec.rb +396 -0
  741. data/spec/units/preprocess/preprocessinator_code_finder_spec.rb +361 -0
  742. data/spec/units/preprocess/preprocessinator_comment_stripper_spec.rb +580 -0
  743. data/spec/units/preprocess/preprocessinator_file_assembler_spec.rb +263 -0
  744. data/spec/units/preprocess/preprocessinator_includes_handler_spec.rb +337 -0
  745. data/spec/{preprocessinator_extractor_spec.rb → units/preprocess/preprocessinator_reconstructor_spec.rb} +297 -5
  746. data/spec/units/reportinator_spec.rb +251 -0
  747. data/spec/units/ruby_expandinator_spec.rb +91 -0
  748. data/spec/{system_utils_spec.rb → units/system_utils_spec.rb} +4 -4
  749. data/spec/units/test_context_extractor_spec.rb +437 -0
  750. data/spec/{tool_executor_helper_spec.rb → units/tool_executor_helper_spec.rb} +19 -33
  751. data/spec/units/tool_executor_spec.rb +83 -0
  752. data/spec/units/tool_validator_spec.rb +60 -0
  753. data/spec/units/yaml_wrapper_spec.rb +108 -0
  754. data/vendor/cmock/Gemfile +4 -1
  755. data/vendor/cmock/LICENSE.txt +1 -1
  756. data/vendor/cmock/config/production_environment.rb +1 -1
  757. data/vendor/cmock/config/test_environment.rb +1 -1
  758. data/vendor/cmock/docs/CMockChangeLog.md +47 -0
  759. data/vendor/cmock/docs/CMockKnownIssues.md +0 -1
  760. data/vendor/cmock/docs/CMock_ArgumentValidation.md +180 -25
  761. data/vendor/cmock/docs/CMock_Summary.md +158 -16
  762. data/vendor/cmock/examples/make_example/Makefile +1 -1
  763. data/vendor/cmock/examples/make_example/src/foo.c +1 -1
  764. data/vendor/cmock/examples/make_example/src/foo.h +1 -1
  765. data/vendor/cmock/examples/make_example/src/main.c +1 -1
  766. data/vendor/cmock/examples/make_example/test/test_foo.c +1 -1
  767. data/vendor/cmock/examples/make_example/test/test_main.c +2 -2
  768. data/vendor/cmock/examples/temp_sensor/project.yml +75 -0
  769. data/vendor/cmock/examples/temp_sensor/rakefile.rb +3 -3
  770. data/vendor/cmock/examples/temp_sensor/rakefile_helper.rb +163 -119
  771. data/vendor/cmock/examples/temp_sensor/src/AT91SAM7X256.h +1 -1
  772. data/vendor/cmock/examples/temp_sensor/src/AdcConductor.c +1 -1
  773. data/vendor/cmock/examples/temp_sensor/src/AdcConductor.h +1 -1
  774. data/vendor/cmock/examples/temp_sensor/src/AdcHardware.c +1 -1
  775. data/vendor/cmock/examples/temp_sensor/src/AdcHardware.h +1 -1
  776. data/vendor/cmock/examples/temp_sensor/src/AdcHardwareConfigurator.c +1 -1
  777. data/vendor/cmock/examples/temp_sensor/src/AdcHardwareConfigurator.h +1 -1
  778. data/vendor/cmock/examples/temp_sensor/src/AdcModel.c +3 -1
  779. data/vendor/cmock/examples/temp_sensor/src/AdcModel.h +1 -1
  780. data/vendor/cmock/examples/temp_sensor/src/AdcTemperatureSensor.c +1 -1
  781. data/vendor/cmock/examples/temp_sensor/src/AdcTemperatureSensor.h +1 -1
  782. data/vendor/cmock/examples/temp_sensor/src/Executor.c +1 -1
  783. data/vendor/cmock/examples/temp_sensor/src/Executor.h +1 -1
  784. data/vendor/cmock/examples/temp_sensor/src/IntrinsicsWrapper.c +1 -1
  785. data/vendor/cmock/examples/temp_sensor/src/IntrinsicsWrapper.h +1 -1
  786. data/vendor/cmock/examples/temp_sensor/src/Main.c +1 -1
  787. data/vendor/cmock/examples/temp_sensor/src/Main.h +1 -1
  788. data/vendor/cmock/examples/temp_sensor/src/Model.c +1 -1
  789. data/vendor/cmock/examples/temp_sensor/src/Model.h +1 -1
  790. data/vendor/cmock/examples/temp_sensor/src/ModelConfig.h +1 -1
  791. data/vendor/cmock/examples/temp_sensor/src/TaskScheduler.c +1 -1
  792. data/vendor/cmock/examples/temp_sensor/src/TaskScheduler.h +1 -1
  793. data/vendor/cmock/examples/temp_sensor/src/TemperatureCalculator.c +1 -1
  794. data/vendor/cmock/examples/temp_sensor/src/TemperatureCalculator.h +1 -1
  795. data/vendor/cmock/examples/temp_sensor/src/TemperatureFilter.c +2 -2
  796. data/vendor/cmock/examples/temp_sensor/src/TemperatureFilter.h +1 -1
  797. data/vendor/cmock/examples/temp_sensor/src/TimerConductor.c +1 -1
  798. data/vendor/cmock/examples/temp_sensor/src/TimerConductor.h +1 -1
  799. data/vendor/cmock/examples/temp_sensor/src/TimerConfigurator.c +2 -2
  800. data/vendor/cmock/examples/temp_sensor/src/TimerConfigurator.h +1 -1
  801. data/vendor/cmock/examples/temp_sensor/src/TimerHardware.c +1 -1
  802. data/vendor/cmock/examples/temp_sensor/src/TimerHardware.h +1 -1
  803. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptConfigurator.c +10 -1
  804. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptConfigurator.h +1 -1
  805. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptHandler.c +1 -1
  806. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptHandler.h +1 -1
  807. data/vendor/cmock/examples/temp_sensor/src/TimerModel.c +1 -1
  808. data/vendor/cmock/examples/temp_sensor/src/TimerModel.h +1 -1
  809. data/vendor/cmock/examples/temp_sensor/src/Types.h +1 -1
  810. data/vendor/cmock/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.c +1 -1
  811. data/vendor/cmock/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.h +1 -1
  812. data/vendor/cmock/examples/temp_sensor/src/UsartConductor.c +1 -1
  813. data/vendor/cmock/examples/temp_sensor/src/UsartConductor.h +1 -1
  814. data/vendor/cmock/examples/temp_sensor/src/UsartConfigurator.c +1 -1
  815. data/vendor/cmock/examples/temp_sensor/src/UsartConfigurator.h +1 -1
  816. data/vendor/cmock/examples/temp_sensor/src/UsartHardware.c +1 -1
  817. data/vendor/cmock/examples/temp_sensor/src/UsartHardware.h +1 -1
  818. data/vendor/cmock/examples/temp_sensor/src/UsartModel.c +2 -2
  819. data/vendor/cmock/examples/temp_sensor/src/UsartModel.h +1 -1
  820. data/vendor/cmock/examples/temp_sensor/src/UsartPutChar.c +2 -2
  821. data/vendor/cmock/examples/temp_sensor/src/UsartPutChar.h +1 -1
  822. data/vendor/cmock/examples/temp_sensor/src/UsartTransmitBufferStatus.c +1 -1
  823. data/vendor/cmock/examples/temp_sensor/src/UsartTransmitBufferStatus.h +1 -1
  824. data/vendor/cmock/examples/temp_sensor/test/TestAdcConductor.c +1 -1
  825. data/vendor/cmock/examples/temp_sensor/test/TestAdcHardware.c +1 -1
  826. data/vendor/cmock/examples/temp_sensor/test/TestAdcHardwareConfigurator.c +1 -1
  827. data/vendor/cmock/examples/temp_sensor/test/TestAdcModel.c +1 -1
  828. data/vendor/cmock/examples/temp_sensor/test/TestAdcTemperatureSensor.c +1 -1
  829. data/vendor/cmock/examples/temp_sensor/test/TestExecutor.c +1 -1
  830. data/vendor/cmock/examples/temp_sensor/test/TestMain.c +1 -1
  831. data/vendor/cmock/examples/temp_sensor/test/TestModel.c +1 -1
  832. data/vendor/cmock/examples/temp_sensor/test/TestTaskScheduler.c +1 -1
  833. data/vendor/cmock/examples/temp_sensor/test/TestTemperatureCalculator.c +1 -1
  834. data/vendor/cmock/examples/temp_sensor/test/TestTemperatureFilter.c +2 -2
  835. data/vendor/cmock/examples/temp_sensor/test/TestTimerConductor.c +1 -1
  836. data/vendor/cmock/examples/temp_sensor/test/TestTimerConfigurator.c +1 -1
  837. data/vendor/cmock/examples/temp_sensor/test/TestTimerHardware.c +1 -1
  838. data/vendor/cmock/examples/temp_sensor/test/TestTimerInterruptConfigurator.c +1 -1
  839. data/vendor/cmock/examples/temp_sensor/test/TestTimerInterruptHandler.c +1 -1
  840. data/vendor/cmock/examples/temp_sensor/test/TestTimerModel.c +1 -1
  841. data/vendor/cmock/examples/temp_sensor/test/TestUsartBaudRateRegisterCalculator.c +1 -1
  842. data/vendor/cmock/examples/temp_sensor/test/TestUsartConductor.c +7 -5
  843. data/vendor/cmock/examples/temp_sensor/test/TestUsartConfigurator.c +1 -1
  844. data/vendor/cmock/examples/temp_sensor/test/TestUsartHardware.c +3 -2
  845. data/vendor/cmock/examples/temp_sensor/test/TestUsartModel.c +1 -1
  846. data/vendor/cmock/examples/temp_sensor/test/TestUsartPutChar.c +1 -1
  847. data/vendor/cmock/examples/temp_sensor/test/TestUsartTransmitBufferStatus.c +1 -1
  848. data/vendor/cmock/lib/cmock.rb +1 -1
  849. data/vendor/cmock/lib/cmock_config.rb +8 -2
  850. data/vendor/cmock/lib/cmock_file_writer.rb +38 -1
  851. data/vendor/cmock/lib/cmock_generator.rb +44 -27
  852. data/vendor/cmock/lib/cmock_generator_plugin_array.rb +68 -15
  853. data/vendor/cmock/lib/cmock_generator_plugin_callback.rb +13 -3
  854. data/vendor/cmock/lib/cmock_generator_plugin_cexception.rb +12 -3
  855. data/vendor/cmock/lib/cmock_generator_plugin_expect.rb +33 -15
  856. data/vendor/cmock/lib/cmock_generator_plugin_expect_any_args.rb +13 -8
  857. data/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +15 -10
  858. data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +4 -2
  859. data/vendor/cmock/lib/cmock_generator_plugin_ignore_stateless.rb +15 -10
  860. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +53 -3
  861. data/vendor/cmock/lib/cmock_generator_utils.rb +159 -43
  862. data/vendor/cmock/lib/cmock_header_parser.rb +217 -26
  863. data/vendor/cmock/lib/cmock_plugin_manager.rb +1 -1
  864. data/vendor/cmock/lib/cmock_unityhelper_parser.rb +7 -2
  865. data/vendor/cmock/lib/cmock_version.rb +1 -1
  866. data/vendor/cmock/scripts/create_makefile.rb +7 -5
  867. data/vendor/cmock/src/cmock.c +132 -129
  868. data/vendor/cmock/src/cmock.h +7 -13
  869. data/vendor/cmock/src/cmock_internals.h +73 -39
  870. data/vendor/cmock/test/c/TestCMockC.c +1 -7
  871. data/vendor/cmock/test/c/TestCMockC.yml +1 -1
  872. data/vendor/cmock/test/c/TestCMockCDynamic.c +1 -7
  873. data/vendor/cmock/test/c/TestCMockCDynamic.yml +1 -1
  874. data/vendor/cmock/test/c/TestCMockCDynamic_Runner.c +1 -7
  875. data/vendor/cmock/test/c/TestCMockC_Runner.c +1 -7
  876. data/vendor/cmock/{vendor/unity/test/targets/gcc_manual_math.yml → test/gcc_64_valgrind.yml} +8 -17
  877. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X-EK.h +1 -1
  878. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256_inc.h +1 -1
  879. data/vendor/cmock/test/iar/iar_v4/incIAR/ioat91sam7x256.h +1 -1
  880. data/vendor/cmock/test/iar/iar_v4/srcIAR/Cstartup_SAM7.c +1 -1
  881. data/vendor/cmock/test/iar/iar_v5/incIAR/AT91SAM7X-EK.h +1 -1
  882. data/vendor/cmock/test/iar/iar_v5/incIAR/AT91SAM7X256_inc.h +1 -1
  883. data/vendor/cmock/test/iar/iar_v5/incIAR/project.h +1 -1
  884. data/vendor/cmock/test/iar/iar_v5/srcIAR/Cstartup_SAM7.c +1 -1
  885. data/vendor/cmock/test/project.yml +32 -0
  886. data/vendor/cmock/test/rakefile +74 -58
  887. data/vendor/cmock/test/rakefile_helper.rb +359 -152
  888. data/vendor/cmock/test/system/systest_generator.rb +2 -2
  889. data/vendor/cmock/test/system/test_compilation/callingconv.h +1 -7
  890. data/vendor/cmock/test/system/test_compilation/config.yml +10 -1
  891. data/vendor/cmock/test/system/test_compilation/const.h +7 -13
  892. data/vendor/cmock/test/system/test_compilation/inline.h +1 -2
  893. data/vendor/cmock/test/system/test_compilation/osek.h +1 -7
  894. data/vendor/cmock/test/system/test_compilation/parsing.h +37 -7
  895. data/vendor/cmock/test/system/test_interactions/all_plugins_but_other_limits.yml +5 -13
  896. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +5 -5
  897. data/vendor/cmock/test/system/test_interactions/array_handling.yml +758 -0
  898. data/vendor/cmock/test/system/test_interactions/basic_expect_and_return.yml +2 -2
  899. data/vendor/cmock/test/system/test_interactions/char_string_array_plugin.yml +113 -0
  900. data/vendor/cmock/test/system/test_interactions/const_custom_type.yml +68 -0
  901. data/vendor/cmock/test/system/test_interactions/const_primitives_handling.yml +4 -3
  902. data/vendor/cmock/test/system/test_interactions/const_ptr_return_and_arg.yml +89 -0
  903. data/vendor/cmock/test/system/test_interactions/debug_output.yml +235 -0
  904. data/vendor/cmock/test/system/test_interactions/doesnt_leave_details_behind.yml +16 -16
  905. data/vendor/cmock/test/system/test_interactions/enforce_strict_ordering.yml +1 -1
  906. data/vendor/cmock/test/system/test_interactions/expect_and_return_custom_types.yml +1 -1
  907. data/vendor/cmock/test/system/test_interactions/expect_and_return_treat_as.yml +3 -3
  908. data/vendor/cmock/test/system/test_interactions/expect_and_throw.yml +1 -1
  909. data/vendor/cmock/test/system/test_interactions/expect_any_args.yml +1 -1
  910. data/vendor/cmock/test/system/test_interactions/fancy_pointer_handling.yml +3 -3
  911. data/vendor/cmock/test/system/test_interactions/function_pointer_handling.yml +1 -1
  912. data/vendor/cmock/test/system/test_interactions/ignore_and_return.yml +1 -1
  913. data/vendor/cmock/test/system/test_interactions/ignore_and_return_stateless.yml +1 -1
  914. data/vendor/cmock/test/system/test_interactions/ignore_strict_mock_calling.yml +1 -1
  915. data/vendor/cmock/test/system/test_interactions/newer_standards_stuff1.yml +1 -1
  916. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_1.yml +2 -2
  917. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_2.yml +7 -4
  918. data/vendor/cmock/test/system/test_interactions/out_of_memory.yml +65 -8
  919. data/vendor/cmock/test/system/test_interactions/parsing_challenges.yml +1 -1
  920. data/vendor/cmock/test/system/test_interactions/parsing_challenges_with_func_pointers.yml +88 -0
  921. data/vendor/cmock/test/system/test_interactions/pointer_handling.yml +465 -0
  922. data/vendor/cmock/test/system/test_interactions/{return_thru_ptr_and_expect_any_args.yml → return_thru_ptr_expect_any_args.yml} +9 -13
  923. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore.yml +142 -0
  924. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +13 -9
  925. data/vendor/cmock/test/system/test_interactions/skeleton.yml +1 -1
  926. data/vendor/cmock/test/system/test_interactions/skeleton_update.yml +1 -1
  927. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return.yml +1 -1
  928. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return_with_plugins.yml +1 -1
  929. data/vendor/cmock/test/system/test_interactions/stubs_with_callbacks.yml +14 -2
  930. data/vendor/cmock/test/system/test_interactions/teardown_mock_calls.yml +57 -0
  931. data/vendor/cmock/test/system/test_interactions/teardown_mock_expectations.yml +59 -0
  932. data/vendor/cmock/test/system/test_interactions/unity_64bit_support.yml +1 -1
  933. data/vendor/cmock/test/system/test_interactions/unity_ignores.yml +1 -1
  934. data/vendor/cmock/test/system/test_interactions/unity_void_pointer_compare.yml +9 -9
  935. data/vendor/cmock/test/system/test_interactions/void_pointer_no_array_plugin.yml +133 -0
  936. data/vendor/cmock/test/system/test_interactions/void_pointer_treat_as_void_array_plugin.yml +102 -0
  937. data/vendor/cmock/test/system/test_interactions/volatile_pointer_handling.yml +291 -0
  938. data/vendor/cmock/test/system/test_interactions/wrong_expect_and_return.yml +9 -1
  939. data/vendor/cmock/test/targets/iar_arm.yml +14 -0
  940. data/vendor/cmock/test/targets/tiny.yml +36 -0
  941. data/vendor/cmock/test/test_helper.rb +1 -2
  942. data/vendor/cmock/test/unit/cmock_config_test.rb +1 -2
  943. data/vendor/cmock/test/unit/cmock_config_test.yml +1 -1
  944. data/vendor/cmock/test/unit/cmock_file_writer_test.rb +1 -1
  945. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +6 -0
  946. data/vendor/cmock/test/unit/cmock_generator_no_error_stubs_plugin_array_test.rb +90 -0
  947. data/vendor/cmock/test/unit/cmock_generator_no_error_stubs_plugin_expect_any_args_test.rb +38 -0
  948. data/vendor/cmock/test/unit/cmock_generator_no_error_stubs_plugin_expect_test.rb +55 -0
  949. data/vendor/cmock/test/unit/cmock_generator_no_error_stubs_plugin_ignore_stateless_test.rb +42 -0
  950. data/vendor/cmock/test/unit/cmock_generator_no_error_stubs_plugin_ignore_test.rb +42 -0
  951. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +63 -2
  952. data/vendor/cmock/test/unit/cmock_generator_plugin_callback_test.rb +24 -6
  953. data/vendor/cmock/test/unit/cmock_generator_plugin_cexception_test.rb +1 -1
  954. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_a_test.rb +118 -2
  955. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_any_args_test.rb +2 -2
  956. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_b_test.rb +4 -2
  957. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +2 -1
  958. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_stateless_test.rb +2 -2
  959. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +2 -2
  960. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +135 -3
  961. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +177 -9
  962. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +705 -109
  963. data/vendor/cmock/test/unit/cmock_plugin_manager_test.rb +4 -2
  964. data/vendor/cmock/test/unit/cmock_unityhelper_parser_test.rb +1 -1
  965. data/vendor/cmock/vendor/unity/CMakeLists.txt +10 -0
  966. data/vendor/cmock/vendor/unity/LICENSE.txt +1 -1
  967. data/vendor/cmock/vendor/unity/README.md +2 -2
  968. data/vendor/cmock/vendor/unity/auto/__init__.py +1 -1
  969. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +1 -1
  970. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +7 -1
  971. data/vendor/cmock/vendor/unity/auto/extract_version.py +1 -1
  972. data/vendor/cmock/vendor/unity/auto/generate_config.yml +1 -1
  973. data/vendor/cmock/vendor/unity/auto/generate_module.rb +6 -6
  974. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +95 -14
  975. data/vendor/cmock/vendor/unity/auto/parse_output.rb +10 -7
  976. data/vendor/cmock/vendor/unity/auto/stylize_as_junit.py +4 -3
  977. data/vendor/cmock/vendor/unity/auto/stylize_as_junit.rb +4 -2
  978. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +1 -1
  979. data/vendor/cmock/vendor/unity/auto/type_sanitizer.rb +1 -1
  980. data/vendor/cmock/vendor/unity/auto/unity_test_summary.py +2 -2
  981. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +5 -2
  982. data/vendor/cmock/vendor/unity/auto/yaml_helper.rb +1 -1
  983. data/vendor/cmock/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +2 -2
  984. data/vendor/cmock/vendor/unity/docs/UnityAssertionsReference.md +66 -1
  985. data/vendor/cmock/vendor/unity/docs/UnityChangeLog.md +41 -0
  986. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +2 -2
  987. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +28 -12
  988. data/vendor/cmock/vendor/unity/examples/example_1/makefile +1 -1
  989. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.c +1 -1
  990. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.h +1 -1
  991. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.c +1 -1
  992. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.h +1 -1
  993. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode.c +1 -1
  994. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode2.c +1 -1
  995. data/vendor/cmock/vendor/unity/examples/example_2/makefile +1 -1
  996. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.c +1 -1
  997. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.h +1 -1
  998. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.c +1 -1
  999. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.h +1 -1
  1000. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode.c +1 -1
  1001. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode2.c +1 -1
  1002. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +1 -1
  1003. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +1 -1
  1004. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/all_tests.c +1 -1
  1005. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.c +1 -1
  1006. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.h +1 -1
  1007. data/vendor/cmock/vendor/unity/examples/example_3/project.yml +24 -0
  1008. data/vendor/cmock/vendor/unity/examples/example_3/rakefile.rb +2 -3
  1009. data/vendor/cmock/vendor/unity/examples/example_3/rakefile_helper.rb +107 -153
  1010. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.c +3 -3
  1011. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.h +1 -1
  1012. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.c +1 -1
  1013. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.h +1 -1
  1014. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode.c +1 -1
  1015. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode2.c +1 -1
  1016. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode.c +1 -1
  1017. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode.h +1 -1
  1018. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode2.c +1 -1
  1019. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode2.h +1 -1
  1020. data/vendor/cmock/vendor/unity/examples/example_4/test/TestProductionCode.c +1 -1
  1021. data/vendor/cmock/vendor/unity/examples/example_4/test/TestProductionCode2.c +1 -1
  1022. data/vendor/cmock/vendor/unity/examples/example_5/makefile +63 -0
  1023. data/vendor/cmock/vendor/unity/examples/example_5/readme.txt +38 -0
  1024. data/vendor/cmock/vendor/unity/examples/example_5/src/ProductionCode.c +56 -0
  1025. data/vendor/cmock/vendor/unity/examples/example_5/src/ProductionCode.h +16 -0
  1026. data/vendor/cmock/vendor/unity/examples/example_5/subprojects/unity.wrap +3 -0
  1027. data/vendor/cmock/vendor/unity/examples/example_5/test/TestProductionCode.c +45 -0
  1028. data/vendor/cmock/vendor/unity/examples/example_5/test/test_runners/TestProductionCode_Runner.c +48 -0
  1029. data/vendor/cmock/vendor/unity/examples/example_5/test/unity_detail_config.h +25 -0
  1030. data/vendor/cmock/vendor/unity/examples/unity_config.h +5 -3
  1031. data/vendor/cmock/vendor/unity/extras/bdd/src/unity_bdd.h +1 -1
  1032. data/vendor/cmock/vendor/unity/extras/bdd/test/test_bdd.c +1 -1
  1033. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +59 -15
  1034. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +1 -1
  1035. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +4 -1
  1036. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +1 -1
  1037. data/vendor/cmock/vendor/unity/extras/fixture/test/template_fixture_tests.c +1 -1
  1038. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +46 -1
  1039. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +4 -1
  1040. data/vendor/cmock/vendor/unity/extras/memory/src/unity_memory.c +1 -1
  1041. data/vendor/cmock/vendor/unity/extras/memory/src/unity_memory.h +1 -1
  1042. data/vendor/cmock/vendor/unity/extras/memory/test/unity_memory_Test.c +1 -1
  1043. data/vendor/cmock/vendor/unity/extras/memory/test/unity_memory_TestRunner.c +1 -1
  1044. data/vendor/cmock/vendor/unity/extras/memory/test/unity_output_Spy.c +1 -1
  1045. data/vendor/cmock/vendor/unity/extras/memory/test/unity_output_Spy.h +1 -1
  1046. data/vendor/cmock/vendor/unity/library.json +0 -7
  1047. data/vendor/cmock/vendor/unity/meson.build +16 -8
  1048. data/vendor/cmock/vendor/unity/meson_options.txt +5 -3
  1049. data/vendor/cmock/vendor/unity/src/unity.c +480 -141
  1050. data/vendor/cmock/vendor/unity/src/unity.h +16 -4
  1051. data/vendor/cmock/vendor/unity/src/unity_internals.h +291 -148
  1052. data/vendor/cmock/vendor/unity/test/Makefile +4 -6
  1053. data/vendor/cmock/vendor/unity/test/rakefile +42 -21
  1054. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +154 -15
  1055. data/vendor/cmock/vendor/unity/test/spec/generate_module_existing_file_spec.rb +1 -1
  1056. data/vendor/cmock/vendor/unity/test/targets/clang.yml +157 -0
  1057. data/vendor/cmock/vendor/unity/test/targets/gcc.yml +139 -0
  1058. data/vendor/cmock/vendor/unity/test/targets/hitech_picc18.yml +9 -16
  1059. data/vendor/cmock/vendor/unity/test/targets/iar_arm.yml +88 -0
  1060. data/vendor/cmock/vendor/unity/test/targets/no_stdlib.yml +23 -0
  1061. data/vendor/cmock/vendor/unity/test/testdata/CException.h +1 -1
  1062. data/vendor/cmock/vendor/unity/test/testdata/Defs.h +1 -1
  1063. data/vendor/cmock/vendor/unity/test/testdata/cmock.h +1 -1
  1064. data/vendor/cmock/vendor/unity/test/testdata/mockMock.h +1 -1
  1065. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGenerator.c +1 -1
  1066. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +1 -1
  1067. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +1 -1
  1068. data/vendor/cmock/vendor/unity/test/tests/self_assessment_utils.h +23 -7
  1069. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +1 -4
  1070. data/vendor/cmock/vendor/unity/test/tests/test_unity_arrays.c +1 -1
  1071. data/vendor/cmock/vendor/unity/test/tests/test_unity_core.c +33 -38
  1072. data/vendor/cmock/vendor/unity/test/tests/test_unity_doubles.c +4 -4
  1073. data/vendor/cmock/vendor/unity/test/tests/test_unity_floats.c +15 -6
  1074. data/vendor/cmock/vendor/unity/test/tests/test_unity_integers.c +35 -1
  1075. data/vendor/cmock/vendor/unity/test/tests/test_unity_integers_64.c +1 -1
  1076. data/vendor/cmock/vendor/unity/test/tests/test_unity_memory.c +69 -1
  1077. data/vendor/cmock/vendor/unity/test/tests/test_unity_parameterized.c +5 -5
  1078. data/vendor/cmock/vendor/unity/test/tests/test_unity_parameterizedDemo.c +1 -1
  1079. data/vendor/cmock/vendor/unity/test/tests/test_unity_strings.c +65 -1
  1080. data/vendor/cmock/vendor/unity/test/tests/types_for_test.h +1 -1
  1081. data/vendor/unity/CMakeLists.txt +10 -0
  1082. data/vendor/unity/LICENSE.txt +1 -1
  1083. data/vendor/unity/README.md +2 -2
  1084. data/vendor/unity/auto/__init__.py +1 -1
  1085. data/vendor/unity/auto/colour_prompt.rb +1 -1
  1086. data/vendor/unity/auto/colour_reporter.rb +7 -1
  1087. data/vendor/unity/auto/extract_version.py +1 -1
  1088. data/vendor/unity/auto/generate_config.yml +1 -1
  1089. data/vendor/unity/auto/generate_module.rb +6 -6
  1090. data/vendor/unity/auto/generate_test_runner.rb +95 -14
  1091. data/vendor/unity/auto/parse_output.rb +10 -7
  1092. data/vendor/unity/auto/stylize_as_junit.py +4 -3
  1093. data/vendor/unity/auto/stylize_as_junit.rb +4 -2
  1094. data/vendor/unity/auto/test_file_filter.rb +1 -1
  1095. data/vendor/unity/auto/type_sanitizer.rb +1 -1
  1096. data/vendor/unity/auto/unity_test_summary.py +2 -2
  1097. data/vendor/unity/auto/unity_test_summary.rb +5 -2
  1098. data/vendor/unity/auto/yaml_helper.rb +1 -1
  1099. data/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +2 -2
  1100. data/vendor/unity/docs/UnityAssertionsReference.md +66 -1
  1101. data/vendor/unity/docs/UnityChangeLog.md +41 -0
  1102. data/vendor/unity/docs/UnityConfigurationGuide.md +2 -2
  1103. data/vendor/unity/docs/UnityHelperScriptsGuide.md +28 -12
  1104. data/vendor/unity/examples/example_1/makefile +1 -1
  1105. data/vendor/unity/examples/example_1/src/ProductionCode.c +1 -1
  1106. data/vendor/unity/examples/example_1/src/ProductionCode.h +1 -1
  1107. data/vendor/unity/examples/example_1/src/ProductionCode2.c +1 -1
  1108. data/vendor/unity/examples/example_1/src/ProductionCode2.h +1 -1
  1109. data/vendor/unity/examples/example_1/test/TestProductionCode.c +1 -1
  1110. data/vendor/unity/examples/example_1/test/TestProductionCode2.c +1 -1
  1111. data/vendor/unity/examples/example_2/makefile +1 -1
  1112. data/vendor/unity/examples/example_2/src/ProductionCode.c +1 -1
  1113. data/vendor/unity/examples/example_2/src/ProductionCode.h +1 -1
  1114. data/vendor/unity/examples/example_2/src/ProductionCode2.c +1 -1
  1115. data/vendor/unity/examples/example_2/src/ProductionCode2.h +1 -1
  1116. data/vendor/unity/examples/example_2/test/TestProductionCode.c +1 -1
  1117. data/vendor/unity/examples/example_2/test/TestProductionCode2.c +1 -1
  1118. data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +1 -1
  1119. data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +1 -1
  1120. data/vendor/unity/examples/example_2/test/test_runners/all_tests.c +1 -1
  1121. data/vendor/unity/examples/example_3/helper/UnityHelper.c +1 -1
  1122. data/vendor/unity/examples/example_3/helper/UnityHelper.h +1 -1
  1123. data/vendor/unity/examples/example_3/project.yml +24 -0
  1124. data/vendor/unity/examples/example_3/rakefile.rb +2 -3
  1125. data/vendor/unity/examples/example_3/rakefile_helper.rb +107 -153
  1126. data/vendor/unity/examples/example_3/src/ProductionCode.c +3 -3
  1127. data/vendor/unity/examples/example_3/src/ProductionCode.h +1 -1
  1128. data/vendor/unity/examples/example_3/src/ProductionCode2.c +1 -1
  1129. data/vendor/unity/examples/example_3/src/ProductionCode2.h +1 -1
  1130. data/vendor/unity/examples/example_3/test/TestProductionCode.c +1 -1
  1131. data/vendor/unity/examples/example_3/test/TestProductionCode2.c +1 -1
  1132. data/vendor/unity/examples/example_4/src/ProductionCode.c +1 -1
  1133. data/vendor/unity/examples/example_4/src/ProductionCode.h +1 -1
  1134. data/vendor/unity/examples/example_4/src/ProductionCode2.c +1 -1
  1135. data/vendor/unity/examples/example_4/src/ProductionCode2.h +1 -1
  1136. data/vendor/unity/examples/example_4/test/TestProductionCode.c +1 -1
  1137. data/vendor/unity/examples/example_4/test/TestProductionCode2.c +1 -1
  1138. data/vendor/unity/examples/example_5/makefile +63 -0
  1139. data/vendor/unity/examples/example_5/readme.txt +38 -0
  1140. data/vendor/unity/examples/example_5/src/ProductionCode.c +56 -0
  1141. data/vendor/unity/examples/example_5/src/ProductionCode.h +16 -0
  1142. data/vendor/unity/examples/example_5/subprojects/unity.wrap +3 -0
  1143. data/vendor/unity/examples/example_5/test/TestProductionCode.c +45 -0
  1144. data/vendor/unity/examples/example_5/test/test_runners/TestProductionCode_Runner.c +48 -0
  1145. data/vendor/unity/examples/example_5/test/unity_detail_config.h +25 -0
  1146. data/vendor/unity/examples/unity_config.h +5 -3
  1147. data/vendor/unity/extras/bdd/src/unity_bdd.h +1 -1
  1148. data/vendor/unity/extras/bdd/test/test_bdd.c +1 -1
  1149. data/vendor/unity/extras/fixture/src/unity_fixture.c +59 -15
  1150. data/vendor/unity/extras/fixture/src/unity_fixture.h +1 -1
  1151. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +4 -1
  1152. data/vendor/unity/extras/fixture/test/main/AllTests.c +1 -1
  1153. data/vendor/unity/extras/fixture/test/template_fixture_tests.c +1 -1
  1154. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +46 -1
  1155. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +4 -1
  1156. data/vendor/unity/extras/memory/src/unity_memory.c +1 -1
  1157. data/vendor/unity/extras/memory/src/unity_memory.h +1 -1
  1158. data/vendor/unity/extras/memory/test/unity_memory_Test.c +1 -1
  1159. data/vendor/unity/extras/memory/test/unity_memory_TestRunner.c +1 -1
  1160. data/vendor/unity/extras/memory/test/unity_output_Spy.c +1 -1
  1161. data/vendor/unity/extras/memory/test/unity_output_Spy.h +1 -1
  1162. data/vendor/unity/library.json +0 -7
  1163. data/vendor/unity/meson.build +16 -8
  1164. data/vendor/unity/meson_options.txt +5 -3
  1165. data/vendor/unity/src/unity.c +480 -141
  1166. data/vendor/unity/src/unity.h +16 -4
  1167. data/vendor/unity/src/unity_internals.h +291 -148
  1168. data/vendor/unity/test/Makefile +4 -6
  1169. data/vendor/unity/test/rakefile +42 -21
  1170. data/vendor/unity/test/rakefile_helper.rb +154 -15
  1171. data/vendor/unity/test/spec/generate_module_existing_file_spec.rb +1 -1
  1172. data/vendor/unity/test/targets/clang.yml +157 -0
  1173. data/vendor/unity/test/targets/gcc.yml +139 -0
  1174. data/vendor/unity/test/targets/hitech_picc18.yml +9 -16
  1175. data/vendor/unity/test/targets/iar_arm.yml +88 -0
  1176. data/vendor/unity/test/targets/no_stdlib.yml +23 -0
  1177. data/vendor/unity/test/testdata/CException.h +1 -1
  1178. data/vendor/unity/test/testdata/Defs.h +1 -1
  1179. data/vendor/unity/test/testdata/cmock.h +1 -1
  1180. data/vendor/unity/test/testdata/mockMock.h +1 -1
  1181. data/vendor/unity/test/testdata/testRunnerGenerator.c +1 -1
  1182. data/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +1 -1
  1183. data/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +1 -1
  1184. data/vendor/unity/test/tests/self_assessment_utils.h +23 -7
  1185. data/vendor/unity/test/tests/test_generate_test_runner.rb +1 -4
  1186. data/vendor/unity/test/tests/test_unity_arrays.c +1 -1
  1187. data/vendor/unity/test/tests/test_unity_core.c +33 -38
  1188. data/vendor/unity/test/tests/test_unity_doubles.c +4 -4
  1189. data/vendor/unity/test/tests/test_unity_floats.c +15 -6
  1190. data/vendor/unity/test/tests/test_unity_integers.c +35 -1
  1191. data/vendor/unity/test/tests/test_unity_integers_64.c +1 -1
  1192. data/vendor/unity/test/tests/test_unity_memory.c +69 -1
  1193. data/vendor/unity/test/tests/test_unity_parameterized.c +5 -5
  1194. data/vendor/unity/test/tests/test_unity_parameterizedDemo.c +1 -1
  1195. data/vendor/unity/test/tests/test_unity_strings.c +65 -1
  1196. data/vendor/unity/test/tests/types_for_test.h +1 -1
  1197. metadata +702 -177
  1198. data/docs/CeedlingPacket.md +0 -5651
  1199. data/lib/ceedling/build_batchinator.rb +0 -113
  1200. data/lib/ceedling/generator_test_results_backtrace.rb +0 -215
  1201. data/lib/ceedling/generator_test_runner.rb +0 -84
  1202. data/lib/ceedling/preprocessinator.rb +0 -239
  1203. data/lib/ceedling/preprocessinator_extractor.rb +0 -257
  1204. data/lib/ceedling/preprocessinator_file_handler.rb +0 -229
  1205. data/lib/ceedling/preprocessinator_includes_handler.rb +0 -382
  1206. data/lib/ceedling/task_invoker.rb +0 -70
  1207. data/lib/ceedling/test_invoker.rb +0 -506
  1208. data/lib/ceedling/test_invoker_helper.rb +0 -347
  1209. data/plugins/gcov/README.md +0 -893
  1210. data/plugins/gcov/lib/reportinator_helper.rb +0 -30
  1211. data/plugins/report_tests_log_factory/sample_html_report.png +0 -0
  1212. data/spec/configurator_spec.rb +0 -18
  1213. data/spec/generator_test_results_spec.rb +0 -131
  1214. data/spec/parsing_parcels_spec.rb +0 -66
  1215. data/spec/preprocessinator_includes_handler_spec.rb +0 -289
  1216. data/spec/reportinator_spec.rb +0 -26
  1217. data/spec/spec_helper.rb +0 -31
  1218. data/spec/test_context_extractor_spec.rb +0 -328
  1219. data/spec/uncategorized_specs_spec.rb +0 -15
  1220. data/vendor/cmock/examples/temp_sensor/targets/gcc.yml +0 -97
  1221. data/vendor/cmock/examples/temp_sensor/targets/iar_v4.yml +0 -143
  1222. data/vendor/cmock/examples/temp_sensor/targets/iar_v5.yml +0 -132
  1223. data/vendor/cmock/scripts/create_mock.rb +0 -15
  1224. data/vendor/cmock/scripts/create_runner.rb +0 -25
  1225. data/vendor/cmock/scripts/test_summary.rb +0 -25
  1226. data/vendor/cmock/test/system/test_interactions/array_and_pointer_handling.yml +0 -453
  1227. data/vendor/cmock/test/targets/clang_strict.yml +0 -97
  1228. data/vendor/cmock/test/targets/gcc.yml +0 -65
  1229. data/vendor/cmock/test/targets/gcc_64.yml +0 -65
  1230. data/vendor/cmock/test/targets/gcc_tiny.yml +0 -87
  1231. data/vendor/cmock/test/targets/iar_arm_v4.yml +0 -117
  1232. data/vendor/cmock/test/targets/iar_arm_v5.yml +0 -102
  1233. data/vendor/cmock/vendor/unity/examples/example_3/target_gcc_32.yml +0 -54
  1234. data/vendor/cmock/vendor/unity/test/targets/ansi.yml +0 -51
  1235. data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +0 -79
  1236. data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +0 -79
  1237. data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +0 -52
  1238. data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +0 -53
  1239. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_limits.yml +0 -50
  1240. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_stdint.yml +0 -62
  1241. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v4.yml +0 -105
  1242. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5.yml +0 -99
  1243. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5_3.yml +0 -99
  1244. data/vendor/cmock/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +0 -97
  1245. data/vendor/cmock/vendor/unity/test/targets/iar_cortexm3_v5.yml +0 -101
  1246. data/vendor/cmock/vendor/unity/test/targets/iar_msp430.yml +0 -119
  1247. data/vendor/cmock/vendor/unity/test/targets/iar_sh2a_v6.yml +0 -106
  1248. data/vendor/unity/examples/example_3/target_gcc_32.yml +0 -54
  1249. data/vendor/unity/test/targets/ansi.yml +0 -51
  1250. data/vendor/unity/test/targets/clang_file.yml +0 -79
  1251. data/vendor/unity/test/targets/clang_strict.yml +0 -79
  1252. data/vendor/unity/test/targets/gcc_32.yml +0 -52
  1253. data/vendor/unity/test/targets/gcc_64.yml +0 -53
  1254. data/vendor/unity/test/targets/gcc_auto_limits.yml +0 -50
  1255. data/vendor/unity/test/targets/gcc_auto_stdint.yml +0 -62
  1256. data/vendor/unity/test/targets/gcc_manual_math.yml +0 -50
  1257. data/vendor/unity/test/targets/iar_arm_v4.yml +0 -105
  1258. data/vendor/unity/test/targets/iar_arm_v5.yml +0 -99
  1259. data/vendor/unity/test/targets/iar_arm_v5_3.yml +0 -99
  1260. data/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +0 -97
  1261. data/vendor/unity/test/targets/iar_cortexm3_v5.yml +0 -101
  1262. data/vendor/unity/test/targets/iar_msp430.yml +0 -119
  1263. data/vendor/unity/test/targets/iar_sh2a_v6.yml +0 -106
@@ -1,183 +1,16 @@
1
1
  # =========================================================================
2
2
  # Ceedling - Test-Centered Build System for C
3
3
  # ThrowTheSwitch.org
4
- # Copyright (c) 2010-25 Mike Karlesky, Mark VanderVoord, & Greg Williams
4
+ # Copyright (c) 2010-26 Mike Karlesky, Mark VanderVoord, & Greg Williams
5
5
  # SPDX-License-Identifier: MIT
6
6
  # =========================================================================
7
7
 
8
- require 'fileutils'
9
- require 'tmpdir'
10
- require 'ceedling/yaml_wrapper'
11
- require 'spec_helper'
12
- require 'deep_merge'
13
-
14
- def test_asset_path(asset_file_name)
15
- File.join(File.dirname(__FILE__), '..', 'assets', asset_file_name)
16
- end
17
-
18
- def convert_slashes(path)
19
- if RUBY_PLATFORM.downcase.match(/mingw|win32/)
20
- path.gsub("/","\\")
21
- else
22
- path
23
- end
24
- end
25
-
26
- class GemDirLayout
27
- attr_reader :gem_dir_base_name
28
-
29
- def initialize(install_dir)
30
- @gem_dir_base_name = "gems"
31
- @d = File.join install_dir, @gem_dir_base_name
32
- FileUtils.mkdir_p @d
33
- end
34
-
35
- def install_dir; convert_slashes(@d) end
36
- def bin; File.join(@d, 'bin') end
37
- def lib; File.join(@d, 'lib') end
38
- end
39
-
40
- class SystemContext
41
- class VerificationFailed < RuntimeError; end
42
- class InvalidBackupEnv < RuntimeError; end
43
-
44
- attr_reader :dir, :gem
45
-
46
- def initialize
47
- @dir = Dir.mktmpdir
48
- @gem = GemDirLayout.new(@dir)
49
- end
50
-
51
- def done!
52
- FileUtils.rm_rf(@dir)
53
- end
54
-
55
- def deploy_gem
56
- git_repo = File.expand_path( File.join( File.dirname( __FILE__ ), '..') )
57
- bundler_gem_file_data = [
58
- %Q{source "http://rubygems.org/"},
59
- %Q{gem "rake"},
60
- %Q{gem "constructor"},
61
- %Q{gem "diy"},
62
- %Q{gem "thor"},
63
- %Q{gem "deep_merge"},
64
- %Q{gem "unicode-display_width"},
65
- %Q{gem "ceedling", :path => '#{git_repo}'}
66
- ].join("\n")
67
-
68
- File.open(File.join(@dir, "Gemfile"), "w+") do |f|
69
- f.write(bundler_gem_file_data)
70
- end
71
-
72
- Dir.chdir @dir do
73
- with_constrained_env do
74
- `bundle config set --local path '#{@gem.install_dir}'`
75
- `bundle install`
76
- checks = ["bundle exec ruby -S ceedling 2>&1"]
77
- checks.each do |c|
78
- `#{c}`
79
- #raise VerificationFailed.new(c) unless $?.success?
80
- end
81
- end
82
- end
83
-
84
- end
85
-
86
- # Does a few things:
87
- # - Configures the environment.
88
- # - Runs the command from the temporary context directory.
89
- # - Restores everything to where it was when finished.
90
- def context_exec(cmd, *args)
91
- with_context do
92
- `#{args.unshift(cmd).join(" ")}`
93
- end
94
- end
95
-
96
- def with_context
97
- Dir.chdir @dir do |current_dir|
98
- with_constrained_env do
99
- ENV['RUBYLIB'] = @gem.lib
100
- ENV['RUBYPATH'] = @gem.bin
101
-
102
- ENV['LANG'] = 'en_US.UTF-8'
103
- ENV['LANGUAGE'] = 'en_US.UTF-8'
104
- ENV['LC_ALL'] = 'en_US.UTF-8'
105
-
106
- yield
107
- end
108
- end
109
- end
110
-
111
- ############################################################
112
- # Functions for manipulating environment settings during tests:
113
- def backup_env
114
- @_env = ENV.to_hash
115
- end
116
-
117
- def reduce_env(destroy_keys=[])
118
- ENV.keys.each {|k| ENV.delete(k) if destroy_keys.include?(k) }
119
- end
120
-
121
- def constrain_env
122
- destroy_keys = %w{BUNDLE_GEMFILE BUNDLE_BIN_PATH RUBYOPT}
123
- reduce_env(destroy_keys)
124
- end
125
-
126
- def restore_env
127
- if @_env
128
- # delete environment variables we've added since we started
129
- ENV.to_hash.each_pair {|k,v| ENV.delete(k) unless @_env.include?(k) }
130
-
131
- # restore environment variables we've modified since we started
132
- @_env.each_pair {|k,v| ENV[k] = v}
133
- else
134
- raise InvalidBackupEnv.new
135
- end
136
- end
137
-
138
- def with_constrained_env
139
- begin
140
- backup_env
141
- constrain_env
142
- yield
143
- ensure
144
- restore_env
145
- end
146
- end
147
-
148
- ############################################################
149
- # Functions for manipulating project.yml files during tests:
150
- def merge_project_yml_for_test(settings, show_final=false)
151
- yaml_wrapper = YamlWrapper.new
152
- project_hash = yaml_wrapper.load('project.yml')
153
- project_hash.deep_merge!(settings)
154
- puts "\n\n#{project_hash.to_yaml}\n\n" if show_final
155
- yaml_wrapper.dump('project.yml', project_hash)
156
- end
157
-
158
- def append_project_yml_for_test(new_args)
159
- fake_prj_yml= "#{File.read('project.yml')}\n#{new_args}"
160
- File.write('project.yml', fake_prj_yml, mode: 'w')
161
- end
162
-
163
- def uncomment_project_yml_option_for_test(option)
164
- fake_prj_yml= File.read('project.yml').gsub(/\##{option}/,option)
165
- File.write('project.yml', fake_prj_yml, mode: 'w')
166
- end
167
-
168
- def comment_project_yml_option_for_test(option)
169
- fake_prj_yml= File.read('project.yml').gsub(/#{option}/,"##{option}")
170
- File.write('project.yml', fake_prj_yml, mode: 'w')
171
- end
172
- ############################################################
173
- end
174
-
175
- module CeedlingTestCases
8
+ module CommonSystemTestCases
176
9
  def can_report_version_no_git_commit_sha
177
10
  @c.with_context do
178
11
  # Version without Git commit short SHA file in project
179
- output = `bundle exec ruby -S ceedling version 2>&1`
180
- expect($?.exitstatus).to match(0)
12
+ output = @c.ceedling_appcmd_exec("version")
13
+ expect(@c.last_exit_status).to eq(0)
181
14
  expect(output).to match(/Ceedling => \d\.\d\.\d\n/)
182
15
  end
183
16
  end
@@ -190,8 +23,8 @@ module CeedlingTestCases
190
23
  end
191
24
 
192
25
  @c.with_context do
193
- output = `bundle exec ruby -S ceedling version 2>&1`
194
- expect($?.exitstatus).to match(0)
26
+ output = @c.ceedling_appcmd_exec("version")
27
+ expect(@c.last_exit_status).to eq(0)
195
28
  expect(output).to match(/Ceedling => \d\.\d\.\d----{-@\n/)
196
29
  end
197
30
  end
@@ -218,8 +51,8 @@ module CeedlingTestCases
218
51
 
219
52
  def can_upgrade_projects
220
53
  @c.with_context do
221
- output = `bundle exec ruby -S ceedling upgrade #{@proj_name} 2>&1`
222
- expect($?.exitstatus).to match(0)
54
+ output = @c.ceedling_appcmd_exec("upgrade #{@proj_name}")
55
+ expect(@c.last_exit_status).to eq(0)
223
56
  expect(output).to match(/Upgraded/i)
224
57
  Dir.chdir @proj_name do
225
58
  expect(File.exist?("project.yml")).to eq true
@@ -230,9 +63,9 @@ module CeedlingTestCases
230
63
  end
231
64
  end
232
65
 
233
- def can_upgrade_projects_even_if_test_support_folder_does_not_exist
66
+ def can_upgrade_projects_with_no_test_support_folder
234
67
  @c.with_context do
235
- output = `bundle exec ruby -S ceedling upgrade #{@proj_name} 2>&1`
68
+ output = @c.ceedling_appcmd_exec("upgrade #{@proj_name}")
236
69
  FileUtils.rm_rf("#{@proj_name}/test/support")
237
70
 
238
71
  updated_prj_yml = []
@@ -241,21 +74,20 @@ module CeedlingTestCases
241
74
  end
242
75
  File.write("#{@proj_name}/project.yml", updated_prj_yml.join("\n"), mode: 'w')
243
76
 
244
- expect($?.exitstatus).to match(0)
77
+ expect(@c.last_exit_status).to eq(0)
245
78
  expect(output).to match(/Upgraded/i)
246
79
  Dir.chdir @proj_name do
247
80
  expect(File.exist?("project.yml")).to eq true
248
81
  expect(File.exist?("src")).to eq true
249
82
  expect(File.exist?("test")).to eq true
250
- all_docs = Dir["vendor/ceedling/docs/*.pdf"].length + Dir["vendor/ceedling/docs/*.md"].length
251
83
  end
252
84
  end
253
85
  end
254
86
 
255
87
  def cannot_upgrade_non_existing_project
256
88
  @c.with_context do
257
- output = `bundle exec ruby -S ceedling upgrade #{@proj_name} 2>&1`
258
- expect($?.exitstatus).to match(1)
89
+ output = @c.ceedling_appcmd_exec("upgrade #{@proj_name}")
90
+ expect(@c.last_exit_status).to eq(1)
259
91
  expect(output).to match(/Could not find an existing project/i)
260
92
  end
261
93
  end
@@ -279,8 +111,8 @@ module CeedlingTestCases
279
111
  def contains_documentation
280
112
  @c.with_context do
281
113
  Dir.chdir @proj_name do
282
- all_docs = Dir["docs/*.md"].length + Dir["vendor/ceedling/docs/*.md"].length
283
- expect(all_docs).to be >= 4
114
+ all_docs = Dir["docs/*"]
115
+ expect(all_docs).to contain_exactly('docs/ceedling', 'docs/unity', 'docs/cmock', 'docs/c_exception', 'docs/license.txt')
284
116
  end
285
117
  end
286
118
  end
@@ -288,21 +120,20 @@ module CeedlingTestCases
288
120
  def does_not_contain_documentation
289
121
  @c.with_context do
290
122
  Dir.chdir @proj_name do
291
- expect(File.exist?("vendor/ceedling/docs")).to eq false
292
- expect(Dir["vendor/ceedling/**/*.pdf"].length).to eq 0
123
+ expect(Dir.exist?("docs/")).to eq false
293
124
  end
294
125
  end
295
126
  end
296
127
 
297
- def can_test_projects_with_success
128
+ def test_project_success
298
129
  @c.with_context do
299
130
  Dir.chdir @proj_name do
300
131
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
301
132
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
302
133
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
303
134
 
304
- output = `bundle exec ruby -S ceedling test:all 2>&1`
305
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
135
+ output = @c.ceedling_build_exec("test:all")
136
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
306
137
  expect(output).to match(/TESTED:\s+\d/)
307
138
  expect(output).to match(/PASSED:\s+\d/)
308
139
  expect(output).to match(/FAILED:\s+\d/)
@@ -311,15 +142,15 @@ module CeedlingTestCases
311
142
  end
312
143
  end
313
144
 
314
- def can_test_projects_with_success_test_alias
145
+ def test_project_with_test_all_alias
315
146
  @c.with_context do
316
147
  Dir.chdir @proj_name do
317
148
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
318
149
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
319
150
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
320
151
 
321
- output = `bundle exec ruby -S ceedling test 2>&1`
322
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
152
+ output = @c.ceedling_build_exec("test")
153
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
323
154
  expect(output).to match(/TESTED:\s+\d/)
324
155
  expect(output).to match(/PASSED:\s+\d/)
325
156
  expect(output).to match(/FAILED:\s+\d/)
@@ -328,15 +159,15 @@ module CeedlingTestCases
328
159
  end
329
160
  end
330
161
 
331
- def can_test_projects_with_success_default
162
+ def test_project_success_default_task
332
163
  @c.with_context do
333
164
  Dir.chdir @proj_name do
334
165
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
335
166
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
336
167
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
337
168
 
338
- output = `bundle exec ruby -S ceedling 2>&1`
339
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
169
+ output = @c.ceedling_build_exec
170
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
340
171
  expect(output).to match(/TESTED:\s+\d/)
341
172
  expect(output).to match(/PASSED:\s+\d/)
342
173
  expect(output).to match(/FAILED:\s+\d/)
@@ -345,45 +176,45 @@ module CeedlingTestCases
345
176
  end
346
177
  end
347
178
 
348
- def can_test_projects_with_named_verbosity
179
+ def test_project_with_named_verbosity
349
180
  @c.with_context do
350
181
  Dir.chdir @proj_name do
351
182
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
352
183
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
353
184
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
354
185
 
355
- output = `bundle exec ruby -S ceedling --verbosity=obnoxious 2>&1`
356
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
186
+ output = @c.ceedling_build_exec("--verbosity=obnoxious")
187
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
357
188
  expect(output).to match(/TESTED:\s+\d/)
358
189
  expect(output).to match(/PASSED:\s+\d/)
359
190
  expect(output).to match(/FAILED:\s+\d/)
360
191
  expect(output).to match(/IGNORED:\s+\d/)
361
192
 
362
- expect(output).to match (/:post_test_fixture_execute/)
193
+ expect(output).to match(/:post_test_fixture_execute/)
363
194
  end
364
195
  end
365
196
  end
366
197
 
367
- def can_test_projects_with_numerical_verbosity
198
+ def test_project_with_numerical_verbosity
368
199
  @c.with_context do
369
200
  Dir.chdir @proj_name do
370
201
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
371
202
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
372
203
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
373
204
 
374
- output = `bundle exec ruby -S ceedling -v=4 2>&1`
375
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
205
+ output = @c.ceedling_build_exec("-v=4")
206
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
376
207
  expect(output).to match(/TESTED:\s+\d/)
377
208
  expect(output).to match(/PASSED:\s+\d/)
378
209
  expect(output).to match(/FAILED:\s+\d/)
379
210
  expect(output).to match(/IGNORED:\s+\d/)
380
211
 
381
- expect(output).to match (/:post_test_fixture_execute/)
212
+ expect(output).to match(/:post_test_fixture_execute/)
382
213
  end
383
214
  end
384
215
  end
385
216
 
386
- def can_test_projects_with_unity_exec_time
217
+ def test_project_with_unity_exec_time
387
218
  @c.with_context do
388
219
  Dir.chdir @proj_name do
389
220
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
@@ -392,8 +223,8 @@ module CeedlingTestCases
392
223
  settings = { :unity => { :defines => [ "UNITY_INCLUDE_EXEC_TIME" ] } }
393
224
  @c.merge_project_yml_for_test(settings)
394
225
 
395
- output = `bundle exec ruby -S ceedling 2>&1`
396
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
226
+ output = @c.ceedling_build_exec
227
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
397
228
  expect(output).to match(/TESTED:\s+\d/)
398
229
  expect(output).to match(/PASSED:\s+\d/)
399
230
  expect(output).to match(/FAILED:\s+\d/)
@@ -402,7 +233,7 @@ module CeedlingTestCases
402
233
  end
403
234
  end
404
235
 
405
- def can_test_projects_with_test_and_vendor_defines_with_success
236
+ def test_project_with_test_and_vendor_defines
406
237
  @c.with_context do
407
238
  Dir.chdir @proj_name do
408
239
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
@@ -413,8 +244,8 @@ module CeedlingTestCases
413
244
  }
414
245
  @c.merge_project_yml_for_test(settings)
415
246
 
416
- output = `bundle exec ruby -S ceedling 2>&1`
417
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
247
+ output = @c.ceedling_build_exec
248
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
418
249
  expect(output).to match(/TESTED:\s+\d/)
419
250
  expect(output).to match(/PASSED:\s+\d/)
420
251
  expect(output).to match(/FAILED:\s+\d/)
@@ -423,19 +254,23 @@ module CeedlingTestCases
423
254
  end
424
255
  end
425
256
 
426
- def can_test_projects_with_test_name_replaced_defines_with_success
257
+ def test_project_with_per_file_defines
427
258
  @c.with_context do
428
259
  Dir.chdir @proj_name do
429
260
  FileUtils.copy_entry test_asset_path("tests_with_defines/src/"), 'src/'
430
261
  FileUtils.cp_r test_asset_path("tests_with_defines/test/."), 'test/'
431
- settings = { :defines => { :test => { '*' => [ "TEST", "STANDARD_CONFIG" ],
432
- 'test_adc_hardware_special.c' => [ "TEST", "SPECIFIC_CONFIG" ],
433
- } }
434
- }
262
+ settings = {
263
+ :defines => {
264
+ :test => {
265
+ '*' => [ "TEST", "STANDARD_CONFIG" ],
266
+ 'test_adc_hardware_special.c' => [ "TEST", "SPECIFIC_CONFIG" ],
267
+ }
268
+ }
269
+ }
435
270
  @c.merge_project_yml_for_test(settings)
436
271
 
437
- output = `bundle exec ruby -S ceedling 2>&1`
438
- expect($?.exitstatus).to match(0) # Since a test either passes or is ignored, we return success here
272
+ output = @c.ceedling_build_exec
273
+ expect(@c.last_exit_status).to eq(0) # Since a test either passes or is ignored, we return success here
439
274
  expect(output).to match(/TESTED:\s+\d/)
440
275
  expect(output).to match(/PASSED:\s+\d/)
441
276
  expect(output).to match(/FAILED:\s+\d/)
@@ -445,7 +280,7 @@ module CeedlingTestCases
445
280
  end
446
281
 
447
282
  # Ceedling :use_test_preprocessor is disabled
448
- def can_test_projects_unity_parameterized_test_cases_with_success
283
+ def test_project_unity_parameterized_test_cases
449
284
  @c.with_context do
450
285
  Dir.chdir @proj_name do
451
286
  FileUtils.cp test_asset_path("test_example_with_parameterized_tests.c"), 'test/'
@@ -454,8 +289,8 @@ module CeedlingTestCases
454
289
  }
455
290
  @c.merge_project_yml_for_test(settings)
456
291
 
457
- output = `bundle exec ruby -S ceedling 2>&1`
458
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
292
+ output = @c.ceedling_build_exec
293
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
459
294
  expect(output).to match(/TESTED:\s+\d/)
460
295
  expect(output).to match(/PASSED:\s+\d/)
461
296
  expect(output).to match(/FAILED:\s+\d/)
@@ -464,27 +299,38 @@ module CeedlingTestCases
464
299
  end
465
300
  end
466
301
 
467
- # NOTE: This is not supported in this release, therefore is not getting called.
468
- def can_test_projects_unity_parameterized_test_cases_with_preprocessor_with_success
302
+ # assets/test_example_with_parameterized_tests.c declares 3 TEST_CASE values,
303
+ # TEST_RANGE([5,100,5]) (20 values), and TEST_RANGE([10,100,10],[5,10,5]) (10*2=20 values)
304
+ # for a total of 43 expanded test invocations. Asserting the exact counts (rather than
305
+ # the file's usual loose `\d` match) matters here specifically. A broken positional
306
+ # association would silently degrade to 3 un-parameterized tests (one per declared
307
+ # function) and a loose digit match would still pass.
308
+ def test_project_preprocessed_unity_parameterized_test_cases
469
309
  @c.with_context do
470
310
  Dir.chdir @proj_name do
471
- FileUtils.cp test_asset_path("test_example_with_parameterized_tests.c"), 'test/'
472
- settings = { :project => { :use_test_preprocessor => :all, :use_deep_preprocessor => :mocks },
311
+ # Short destination filename: Ceedling's directives-only preprocessing path
312
+ # repeats the test module name twice (.../preprocess/files/<name>/directives_only/raw/<name>.c).
313
+ # Combined with an already-deep Windows CI temp project path, the asset's original
314
+ # long filename pushed the full absolute path past Windows' 260-char MAX_PATH limit,
315
+ # causing gcc.exe to fail opening its own output file with a spurious
316
+ # "No such file or directory". Keeping the copied filename short avoids that.
317
+ FileUtils.cp test_asset_path("test_example_with_parameterized_tests.c"), 'test/test_ptc.c'
318
+ settings = { :project => { :use_test_preprocessor => :all },
473
319
  :unity => { :use_param_tests => true }
474
320
  }
475
321
  @c.merge_project_yml_for_test(settings)
476
322
 
477
- output = `bundle exec ruby -S ceedling 2>&1`
478
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
479
- expect(output).to match(/TESTED:\s+\d/)
480
- expect(output).to match(/PASSED:\s+\d/)
481
- expect(output).to match(/FAILED:\s+\d/)
482
- expect(output).to match(/IGNORED:\s+\d/)
323
+ output = @c.ceedling_build_exec
324
+ expect(@c.last_exit_status).to eq(0)
325
+ expect(output).to match(/TESTED:\s+43/)
326
+ expect(output).to match(/PASSED:\s+43/)
327
+ expect(output).to match(/FAILED:\s+0/)
328
+ expect(output).to match(/IGNORED:\s+0/)
483
329
  end
484
330
  end
485
331
  end
486
332
 
487
- def can_test_projects_with_preprocessing_for_test_files_symbols_undefined
333
+ def test_project_preprocessing_undefined_symbols
488
334
  @c.with_context do
489
335
  Dir.chdir @proj_name do
490
336
  FileUtils.cp test_asset_path("tests_with_preprocessing/test/test_adc_hardwareA.c"), 'test/'
@@ -497,8 +343,8 @@ module CeedlingTestCases
497
343
  }
498
344
  @c.merge_project_yml_for_test(settings)
499
345
 
500
- output = `bundle exec ruby -S ceedling test:adc_hardwareA 2>&1`
501
- expect($?.exitstatus).to match(1) # Intentional test failure in successful build
346
+ output = @c.ceedling_build_exec("test:adc_hardwareA")
347
+ expect(@c.last_exit_status).to eq(1) # Intentional test failure in successful build
502
348
  expect(output).to match(/TESTED:\s+2/)
503
349
  expect(output).to match(/PASSED:\s+0/)
504
350
  expect(output).to match(/FAILED:\s+2/)
@@ -506,7 +352,7 @@ module CeedlingTestCases
506
352
  end
507
353
  end
508
354
 
509
- def can_test_projects_with_preprocessing_for_test_files_symbols_defined
355
+ def test_project_preprocessing_defined_symbols
510
356
  @c.with_context do
511
357
  Dir.chdir @proj_name do
512
358
  FileUtils.cp test_asset_path("tests_with_preprocessing/test/test_adc_hardwareA.c"), 'test/'
@@ -519,8 +365,8 @@ module CeedlingTestCases
519
365
  }
520
366
  @c.merge_project_yml_for_test(settings)
521
367
 
522
- output = `bundle exec ruby -S ceedling test:adc_hardwareA 2>&1`
523
- expect($?.exitstatus).to match(0) # Successful build and tests
368
+ output = @c.ceedling_build_exec("test:adc_hardwareA")
369
+ expect(@c.last_exit_status).to eq(0) # Successful build and tests
524
370
  expect(output).to match(/TESTED:\s+1/)
525
371
  expect(output).to match(/PASSED:\s+1/)
526
372
  expect(output).to match(/FAILED:\s+0/)
@@ -528,7 +374,7 @@ module CeedlingTestCases
528
374
  end
529
375
  end
530
376
 
531
- def can_test_projects_with_preprocessing_for_mocks_success
377
+ def test_project_with_preprocessing_for_mocks
532
378
  @c.with_context do
533
379
  Dir.chdir @proj_name do
534
380
  FileUtils.cp test_asset_path("tests_with_preprocessing/test/test_adc_hardwareB.c"), 'test/'
@@ -541,8 +387,8 @@ module CeedlingTestCases
541
387
  }
542
388
  @c.merge_project_yml_for_test(settings)
543
389
 
544
- output = `bundle exec ruby -S ceedling test:adc_hardwareB 2>&1`
545
- expect($?.exitstatus).to match(0) # Successful build and tests
390
+ output = @c.ceedling_build_exec("test:adc_hardwareB")
391
+ expect(@c.last_exit_status).to eq(0) # Successful build and tests
546
392
  expect(output).to match(/TESTED:\s+1/)
547
393
  expect(output).to match(/PASSED:\s+1/)
548
394
  expect(output).to match(/FAILED:\s+0/)
@@ -550,7 +396,7 @@ module CeedlingTestCases
550
396
  end
551
397
  end
552
398
 
553
- def can_test_projects_with_preprocessing_for_mocks_intentional_build_failure
399
+ def test_project_with_preprocessing_for_missing_mock
554
400
  @c.with_context do
555
401
  Dir.chdir @proj_name do
556
402
  FileUtils.cp test_asset_path("tests_with_preprocessing/test/test_adc_hardwareB.c"), 'test/'
@@ -562,14 +408,14 @@ module CeedlingTestCases
562
408
  }
563
409
  @c.merge_project_yml_for_test(settings)
564
410
 
565
- output = `bundle exec ruby -S ceedling test:adc_hardwareB 2>&1`
566
- expect($?.exitstatus).to match(1) # Failing build because of missing mock
411
+ output = @c.ceedling_build_exec("test:adc_hardwareB")
412
+ expect(@c.last_exit_status).to eq(1) # Failing build because of missing mock
567
413
  expect(output).to match(/(undeclared|undefined|implicit).+Adc_Reset/)
568
414
  end
569
415
  end
570
416
  end
571
417
 
572
- def can_test_projects_with_preprocessing_all
418
+ def test_project_with_preprocessing_all
573
419
  @c.with_context do
574
420
  Dir.chdir @proj_name do
575
421
  FileUtils.cp test_asset_path("tests_with_preprocessing/test/test_adc_hardwareC.c"), 'test/'
@@ -582,8 +428,8 @@ module CeedlingTestCases
582
428
  }
583
429
  @c.merge_project_yml_for_test(settings)
584
430
 
585
- output = `bundle exec ruby -S ceedling test:adc_hardwareC 2>&1`
586
- expect($?.exitstatus).to match(0) # Successful build and tests
431
+ output = @c.ceedling_build_exec("test:adc_hardwareC")
432
+ expect(@c.last_exit_status).to eq(0) # Successful build and tests
587
433
  expect(output).to match(/TESTED:\s+1/)
588
434
  expect(output).to match(/PASSED:\s+1/)
589
435
  expect(output).to match(/FAILED:\s+0/)
@@ -591,15 +437,15 @@ module CeedlingTestCases
591
437
  end
592
438
  end
593
439
 
594
- def can_test_projects_with_fail
440
+ def test_project_fail
595
441
  @c.with_context do
596
442
  Dir.chdir @proj_name do
597
443
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
598
444
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
599
445
  FileUtils.cp test_asset_path("test_example_file.c"), 'test/'
600
446
 
601
- output = `bundle exec ruby -S ceedling test:all 2>&1`
602
- expect($?.exitstatus).to match(1) # Since a test fails, we return error here
447
+ output = @c.ceedling_build_exec("test:all")
448
+ expect(@c.last_exit_status).to eq(1) # Since a test fails, we return error here
603
449
  expect(output).to match(/TESTED:\s+\d/)
604
450
  expect(output).to match(/PASSED:\s+\d/)
605
451
  expect(output).to match(/FAILED:\s+\d/)
@@ -608,15 +454,15 @@ module CeedlingTestCases
608
454
  end
609
455
  end
610
456
 
611
- def can_test_projects_with_fail_alias
457
+ def test_project_fail_alias
612
458
  @c.with_context do
613
459
  Dir.chdir @proj_name do
614
460
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
615
461
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
616
462
  FileUtils.cp test_asset_path("test_example_file.c"), 'test/'
617
463
 
618
- output = `bundle exec ruby -S ceedling test 2>&1`
619
- expect($?.exitstatus).to match(1) # Since a test fails, we return error here
464
+ output = @c.ceedling_build_exec("test")
465
+ expect(@c.last_exit_status).to eq(1) # Since a test fails, we return error here
620
466
  expect(output).to match(/TESTED:\s+\d/)
621
467
  expect(output).to match(/PASSED:\s+\d/)
622
468
  expect(output).to match(/FAILED:\s+\d/)
@@ -625,15 +471,15 @@ module CeedlingTestCases
625
471
  end
626
472
  end
627
473
 
628
- def can_test_projects_with_fail_default
474
+ def test_project_fail_default
629
475
  @c.with_context do
630
476
  Dir.chdir @proj_name do
631
477
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
632
478
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
633
479
  FileUtils.cp test_asset_path("test_example_file.c"), 'test/'
634
480
 
635
- output = `bundle exec ruby -S ceedling 2>&1`
636
- expect($?.exitstatus).to match(1) # Since a test fails, we return error here
481
+ output = @c.ceedling_build_exec
482
+ expect(@c.last_exit_status).to eq(1) # Since a test fails, we return error here
637
483
  expect(output).to match(/TESTED:\s+\d/)
638
484
  expect(output).to match(/PASSED:\s+\d/)
639
485
  expect(output).to match(/FAILED:\s+\d/)
@@ -642,21 +488,21 @@ module CeedlingTestCases
642
488
  end
643
489
  end
644
490
 
645
- def can_test_projects_with_compile_error
491
+ def test_project_with_compile_error
646
492
  @c.with_context do
647
493
  Dir.chdir @proj_name do
648
494
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
649
495
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
650
496
  FileUtils.cp test_asset_path("test_example_file_boom.c"), 'test/'
651
497
 
652
- output = `bundle exec ruby -S ceedling test:all 2>&1`
653
- expect($?.exitstatus).to match(1) # Since a test explodes, we return error here
498
+ output = @c.ceedling_build_exec("test:all")
499
+ expect(@c.last_exit_status).to eq(1) # Since a test explodes, we return error here
654
500
  expect(output).to match(/(?:ERROR: Ceedling Failed)|(?:Ceedling could not complete operations because of errors)/)
655
501
  end
656
502
  end
657
503
  end
658
504
 
659
- def can_test_projects_with_both_mock_and_real_header
505
+ def test_project_with_both_mock_and_real_header
660
506
  @c.with_context do
661
507
  Dir.chdir @proj_name do
662
508
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
@@ -665,8 +511,8 @@ module CeedlingTestCases
665
511
  FileUtils.cp test_asset_path("example_file_call.c"), 'src/'
666
512
  FileUtils.cp test_asset_path("test_example_file_with_mock.c"), 'test/'
667
513
 
668
- output = `bundle exec ruby -S ceedling 2>&1`
669
- expect($?.exitstatus).to match(0) # Since a test either passed or was ignored, we return success here
514
+ output = @c.ceedling_build_exec
515
+ expect(@c.last_exit_status).to eq(0) # Since a test either passed or was ignored, we return success here
670
516
  expect(output).to match(/TESTED:\s+\d/)
671
517
  expect(output).to match(/PASSED:\s+\d/)
672
518
  expect(output).to match(/FAILED:\s+\d/)
@@ -675,7 +521,7 @@ module CeedlingTestCases
675
521
  end
676
522
  end
677
523
 
678
- def uses_report_tests_raw_output_log_plugin
524
+ def report_tests_raw_output_log_plugin
679
525
  @c.with_context do
680
526
  Dir.chdir @proj_name do
681
527
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
@@ -684,8 +530,8 @@ module CeedlingTestCases
684
530
 
685
531
  @c.uncomment_project_yml_option_for_test('- report_tests_raw_output_log')
686
532
 
687
- output = `bundle exec ruby -S ceedling test:all 2>&1`
688
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
533
+ output = @c.ceedling_build_exec("test:all")
534
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
689
535
  expect(output).to match(/TESTED:\s+\d/)
690
536
  expect(output).to match(/PASSED:\s+\d/)
691
537
  expect(output).to match(/FAILED:\s+\d/)
@@ -695,24 +541,23 @@ module CeedlingTestCases
695
541
  end
696
542
  end
697
543
 
698
-
699
- def can_fetch_non_project_help
544
+ def application_commands_help
700
545
  @c.with_context do
701
- #notice we don't change directory into the project
702
- output = `bundle exec ruby -S ceedling help`
703
- expect($?.exitstatus).to match(0)
704
- expect(output).to match(/ceedling example/i)
705
- expect(output).to match(/ceedling new/i)
706
- expect(output).to match(/ceedling upgrade/i)
707
- expect(output).to match(/ceedling version/i)
546
+ # notice we don't change directory into the project
547
+ output = @c.ceedling_appcmd_exec("help")
548
+ expect(@c.last_exit_status).to eq(0)
549
+ expect(output).to match(/ceedling example/i)
550
+ expect(output).to match(/ceedling new/i)
551
+ expect(output).to match(/ceedling upgrade/i)
552
+ expect(output).to match(/ceedling version/i)
708
553
  end
709
554
  end
710
555
 
711
- def can_fetch_project_help
556
+ def project_build_tasks_plugins_help
712
557
  @c.with_context do
713
558
  Dir.chdir @proj_name do
714
- output = `bundle exec ruby -S ceedling help`
715
- expect($?.exitstatus).to match(0)
559
+ output = @c.ceedling_appcmd_exec("help")
560
+ expect(@c.last_exit_status).to eq(0)
716
561
  expect(output).to match(/ceedling clean/i)
717
562
  expect(output).to match(/ceedling clobber/i)
718
563
  expect(output).to match(/ceedling module:create/i)
@@ -725,16 +570,16 @@ module CeedlingTestCases
725
570
  end
726
571
  end
727
572
 
728
- def can_run_single_test_with_full_test_case_name_from_test_file_with_success
573
+ def run_single_test_with_full_name_filter
729
574
  @c.with_context do
730
575
  Dir.chdir @proj_name do
731
576
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
732
577
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
733
578
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
734
579
 
735
- output = `bundle exec ruby -S ceedling test:test_example_file_success --test_case=test_add_numbers_adds_numbers 2>&1`
580
+ output = @c.ceedling_build_exec("test:test_example_file_success --test_case=test_add_numbers_adds_numbers")
736
581
 
737
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
582
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
738
583
  expect(output).to match(/TESTED:\s+1/)
739
584
  expect(output).to match(/PASSED:\s+1/)
740
585
  expect(output).to match(/FAILED:\s+0/)
@@ -743,16 +588,16 @@ module CeedlingTestCases
743
588
  end
744
589
  end
745
590
 
746
- def can_run_single_test_with_partial_test_case_name_from_test_file_with_success
591
+ def run_single_test_with_partial_name_filter
747
592
  @c.with_context do
748
593
  Dir.chdir @proj_name do
749
594
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
750
595
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
751
596
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
752
597
 
753
- output = `bundle exec ruby -S ceedling test:test_example_file_success --test_case=_adds_numbers 2>&1`
598
+ output = @c.ceedling_build_exec("test:test_example_file_success --test_case=_adds_numbers")
754
599
 
755
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
600
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
756
601
  expect(output).to match(/TESTED:\s+1/)
757
602
  expect(output).to match(/PASSED:\s+1/)
758
603
  expect(output).to match(/FAILED:\s+0/)
@@ -761,65 +606,46 @@ module CeedlingTestCases
761
606
  end
762
607
  end
763
608
 
764
- def none_of_test_is_executed_if_test_case_name_passed_does_not_fit_defined_in_test_file
609
+ def no_tests_run_when_filter_matches_nothing
765
610
  @c.with_context do
766
611
  Dir.chdir @proj_name do
767
612
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
768
613
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
769
614
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
770
615
 
771
- output = `bundle exec ruby -S ceedling test:test_example_file_success --test_case=zumzum 2>&1`
616
+ output = @c.ceedling_build_exec("test:test_example_file_success --test_case=zumzum")
772
617
 
773
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
618
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
774
619
  expect(output).to match(/No tests executed./)
775
620
  end
776
621
  end
777
622
  end
778
623
 
779
- def none_of_test_is_executed_if_test_case_name_and_exclude_test_case_name_is_the_same
624
+ def no_tests_run_when_filter_and_exclusion_cancel
780
625
  @c.with_context do
781
626
  Dir.chdir @proj_name do
782
627
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
783
628
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
784
629
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
785
630
 
786
- output = `bundle exec ruby -S ceedling test:test_example_file_success --test_case=_adds_numbers --exclude_test_case=_adds_numbers 2>&1`
631
+ output = @c.ceedling_build_exec("test:test_example_file_success --test_case=_adds_numbers --exclude_test_case=_adds_numbers")
787
632
 
788
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
633
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
789
634
  expect(output).to match(/No tests executed./)
790
635
  end
791
636
  end
792
637
  end
793
638
 
794
- def confirm_if_notification_for_cmdline_args_not_enabled_is_disabled
639
+ def exclusion_filter_leaves_one_test_case
795
640
  @c.with_context do
796
641
  Dir.chdir @proj_name do
797
642
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
798
643
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
799
644
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
800
645
 
801
- output = `bundle exec ruby -S ceedling test:test_example_file_success 2>&1`
646
+ output = @c.ceedling_build_exec("test:all --exclude_test_case=test_add_numbers_adds_numbers")
802
647
 
803
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
804
- expect(output).to match(/TESTED:\s+2/)
805
- expect(output).to match(/PASSED:\s+1/)
806
- expect(output).to match(/FAILED:\s+0/)
807
- expect(output).to match(/IGNORED:\s+1/)
808
- expect(output).not_to match(/:cmdline_args/)
809
- end
810
- end
811
- end
812
-
813
- def exclude_test_case_name_filter_works_and_only_one_test_case_is_executed
814
- @c.with_context do
815
- Dir.chdir @proj_name do
816
- FileUtils.cp test_asset_path("example_file.h"), 'src/'
817
- FileUtils.cp test_asset_path("example_file.c"), 'src/'
818
- FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
819
-
820
- output = `bundle exec ruby -S ceedling test:all --exclude_test_case=test_add_numbers_adds_numbers 2>&1`
821
-
822
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
648
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
823
649
  expect(output).to match(/TESTED:\s+1/)
824
650
  expect(output).to match(/PASSED:\s+0/)
825
651
  expect(output).to match(/FAILED:\s+0/)
@@ -828,16 +654,16 @@ module CeedlingTestCases
828
654
  end
829
655
  end
830
656
 
831
- def run_one_testcase_from_one_test_file_when_test_case_name_is_passed
657
+ def run_one_test_case_with_name_filter
832
658
  @c.with_context do
833
659
  Dir.chdir @proj_name do
834
660
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
835
661
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
836
662
  FileUtils.cp test_asset_path("test_example_file_success.c"), 'test/'
837
663
 
838
- output = `bundle exec ruby -S ceedling test:test_example_file_success --test_case=_adds_numbers 2>&1`
664
+ output = @c.ceedling_build_exec("test:test_example_file_success --test_case=_adds_numbers")
839
665
 
840
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
666
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
841
667
  expect(output).to match(/TESTED:\s+1/)
842
668
  expect(output).to match(/PASSED:\s+1/)
843
669
  expect(output).to match(/FAILED:\s+0/)
@@ -847,117 +673,242 @@ module CeedlingTestCases
847
673
  end
848
674
 
849
675
 
850
- def test_run_of_projects_fail_because_of_crash_without_report
676
+ # Validates that a crash with :use_backtrace => :none reports "Test Executable Crashed"
677
+ # in Ceedling output and returns a failing exit code.
678
+ # Uses a SIGSEGV (null-pointer dereference) crash.
679
+ def crash_none_reports_executable_crashed
851
680
  @c.with_context do
852
681
  Dir.chdir @proj_name do
853
682
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
854
683
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
855
- FileUtils.cp test_asset_path("test_example_file_crash.c"), 'test/'
684
+ FileUtils.cp test_asset_path("test_example_file_crash_sigsegv.c"), 'test/'
856
685
 
857
686
  @c.merge_project_yml_for_test({:project => { :use_backtrace => :none }})
858
687
 
859
- output = `bundle exec ruby -S ceedling test:all 2>&1`
860
- expect($?.exitstatus).to match(1) # Test should fail because of crash
688
+ output = @c.ceedling_build_exec("test:all")
689
+ expect(@c.last_exit_status).to eq(1) # Test should fail because of crash
861
690
  expect(output).to match(/Test Executable Crashed/i)
862
- expect(output).to match(/Unit test failures./)
691
+ expect(output).to match(/Unit test failures/)
863
692
  expect(!File.exist?('./build/test/results/test_add.fail'))
864
693
  end
865
694
  end
866
695
  end
867
696
 
868
- def test_run_of_projects_fail_because_of_crash_with_report
697
+ # Validates that a crash with :use_backtrace => :none writes a .fail results file
698
+ # containing the crashed test case name and crash location.
699
+ # Uses a SIGSEGV (null-pointer dereference) crash.
700
+ def crash_none_writes_fail_results_file
869
701
  @c.with_context do
870
702
  Dir.chdir @proj_name do
871
703
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
872
704
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
873
- FileUtils.cp test_asset_path("test_example_file_crash.c"), 'test/'
705
+ FileUtils.cp test_asset_path("test_example_file_crash_sigsegv.c"), 'test/'
874
706
 
875
707
  @c.merge_project_yml_for_test({:project => { :use_backtrace => :none }})
876
708
 
877
- output = `bundle exec ruby -S ceedling test:all 2>&1`
878
- expect($?.exitstatus).to match(1) # Test should fail because of crash
709
+ output = @c.ceedling_build_exec("test:all")
710
+ expect(@c.last_exit_status).to eq(1) # Test should fail because of crash
879
711
  expect(output).to match(/Test Executable Crashed/i)
880
- expect(output).to match(/Unit test failures./)
881
- expect(File.exist?('./build/test/results/test_example_file_crash.fail'))
882
- output_rd = File.read('./build/test/results/test_example_file_crash.fail')
883
- expect(output_rd =~ /test_add_numbers_will_fail \(\) at test\/test_example_file_crash.c\:14/ )
712
+ expect(output).to match(/Unit test failures/)
713
+ expect(File.exist?('./build/test/results/test_example_file_crash_sigsegv.fail'))
714
+ output_rd = File.read('./build/test/results/test_example_file_crash_sigsegv.fail')
715
+ expect(output_rd =~ /test_add_numbers_will_fail \(\) at test\/test_example_file_crash_sigsegv.c\:\d+/ )
884
716
  end
885
717
  end
886
718
  end
887
719
 
888
- def execute_all_test_cases_from_crashing_test_runner_and_return_test_report_with_failue
720
+ # Validates that :use_backtrace => :gdb runs all test cases, identifies the crashing
721
+ # one (SIGSEGV from null-pointer dereference), writes a gdb log file, and includes
722
+ # a log path reference in Ceedling output.
723
+ def crash_gdb_sigsegv_all_test_cases
889
724
  @c.with_context do
890
725
  Dir.chdir @proj_name do
891
726
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
892
727
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
893
- FileUtils.cp test_asset_path("test_example_file_crash.c"), 'test/'
728
+ FileUtils.cp test_asset_path("test_example_file_crash_sigsegv.c"), 'test/'
894
729
 
895
730
  @c.merge_project_yml_for_test({:project => { :use_backtrace => :gdb }})
896
731
 
897
- output = `bundle exec ruby -S ceedling test:all 2>&1`
898
- expect($?.exitstatus).to match(1) # Test should fail because of crash
732
+ output = @c.ceedling_build_exec("test:all")
733
+ expect(@c.last_exit_status).to eq(1) # Test should fail because of crash
899
734
  expect(output).to match(/Test Case Crashed/i)
900
- expect(output).to match(/Unit test failures./)
901
- expect(File.exist?('./build/test/results/test_example_file_crash.fail'))
902
- output_rd = File.read('./build/test/results/test_example_file_crash.fail')
903
- expect(output_rd =~ /test_add_numbers_will_fail \(\) at test\/test_example_file_crash.c\:14/ )
735
+ expect(output).to match(/Unit test failures/)
736
+ expect(File.exist?('./build/test/results/test_example_file_crash_sigsegv.fail'))
737
+ output_rd = File.read('./build/test/results/test_example_file_crash_sigsegv.fail')
738
+ expect(output_rd).to match(/Test case crashed/)
739
+ expect(output_rd).to match(/SIGSEGV/i)
904
740
  expect(output).to match(/TESTED:\s+2/)
905
741
  expect(output).to match(/PASSED:\s+(?:0|1)/)
906
742
  expect(output).to match(/FAILED:\s+(?:1|2)/)
907
743
  expect(output).to match(/IGNORED:\s+0/)
744
+ log_path = './build/logs/test/test_example_file_crash_sigsegv/test_add_numbers_will_fail.gdb.log'
745
+ expect(File.exist?(log_path)).to be(true)
746
+ expect(File.read(log_path)).to match(/SIGSEGV|Segmentation fault/i)
747
+ expect(output).to match(/test_add_numbers_will_fail\.gdb\.log/)
908
748
  end
909
749
  end
910
750
  end
911
751
 
912
- def execute_and_collect_debug_logs_from_crashing_test_case_defined_by_test_case_argument_with_enabled_debug
752
+ # Validates that :use_backtrace => :gdb respects --test_case filter, running only
753
+ # the named crashing test case (SIGSEGV) and writing a gdb log for it.
754
+ def crash_gdb_sigsegv_targets_test_case_filter
913
755
  @c.with_context do
914
756
  Dir.chdir @proj_name do
915
757
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
916
758
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
917
- FileUtils.cp test_asset_path("test_example_file_crash.c"), 'test/'
759
+ FileUtils.cp test_asset_path("test_example_file_crash_sigsegv.c"), 'test/'
918
760
 
919
761
  @c.merge_project_yml_for_test({:project => { :use_backtrace => :gdb }})
920
762
 
921
- output = `bundle exec ruby -S ceedling test:all --test_case=test_add_numbers_will_fail 2>&1`
922
- expect($?.exitstatus).to match(1) # Test should fail because of crash
763
+ output = @c.ceedling_build_exec("test:all --test_case=test_add_numbers_will_fail")
764
+ expect(@c.last_exit_status).to eq(1) # Test should fail because of crash
923
765
  expect(output).to match(/Test Case Crashed/i)
924
- expect(output).to match(/Unit test failures./)
925
- expect(File.exist?('./build/test/results/test_example_file_crash.fail'))
926
- output_rd = File.read('./build/test/results/test_example_file_crash.fail')
927
- expect(output_rd =~ /test_add_numbers_will_fail \(\) at test\/test_example_file_crash.c\:14/ )
766
+ expect(output).to match(/Unit test failures/)
767
+ expect(File.exist?('./build/test/results/test_example_file_crash_sigsegv.fail'))
768
+ output_rd = File.read('./build/test/results/test_example_file_crash_sigsegv.fail')
769
+ expect(output_rd).to match(/Test case crashed/)
770
+ expect(output_rd).to match(/SIGSEGV/i)
928
771
  expect(output).to match(/TESTED:\s+1/)
929
772
  expect(output).to match(/PASSED:\s+(?:0|1)/)
930
773
  expect(output).to match(/FAILED:\s+(?:1|2)/)
931
774
  expect(output).to match(/IGNORED:\s+0/)
775
+ log_path = './build/logs/test/test_example_file_crash_sigsegv/test_add_numbers_will_fail.gdb.log'
776
+ expect(File.exist?(log_path)).to be(true)
777
+ expect(File.read(log_path)).to match(/SIGSEGV|Segmentation fault/i)
778
+ expect(output).to match(/test_add_numbers_will_fail\.gdb\.log/)
932
779
  end
933
780
  end
934
781
  end
935
782
 
936
- def execute_and_collect_debug_logs_from_crashing_test_case_defined_by_exclude_test_case_argument_with_enabled_debug
783
+ # Validates that :use_backtrace => :gdb respects --exclude_test_case filter, running
784
+ # only the crashing test case (SIGSEGV) after the passing one is excluded, and writing a gdb log.
785
+ def crash_gdb_sigsegv_excludes_test_case_filter
937
786
  @c.with_context do
938
787
  Dir.chdir @proj_name do
939
788
  FileUtils.cp test_asset_path("example_file.h"), 'src/'
940
789
  FileUtils.cp test_asset_path("example_file.c"), 'src/'
941
- FileUtils.cp test_asset_path("test_example_file_crash.c"), 'test/'
790
+ FileUtils.cp test_asset_path("test_example_file_crash_sigsegv.c"), 'test/'
942
791
 
943
792
  @c.merge_project_yml_for_test({:project => { :use_backtrace => :gdb }})
944
793
 
945
- output = `bundle exec ruby -S ceedling test:all --exclude_test_case=add_numbers_adds_numbers 2>&1`
946
- expect($?.exitstatus).to match(1) # Test should fail because of crash
794
+ output = @c.ceedling_build_exec("test:all --exclude_test_case=add_numbers_adds_numbers")
795
+ expect(@c.last_exit_status).to eq(1) # Test should fail because of crash
947
796
  expect(output).to match(/Test Case Crashed/i)
948
- expect(output).to match(/Unit test failures./)
949
- expect(File.exist?('./build/test/results/test_example_file_crash.fail'))
950
- output_rd = File.read('./build/test/results/test_example_file_crash.fail')
951
- expect(output_rd =~ /test_add_numbers_will_fail \(\) at test\/test_example_file_crash.c\:14/ )
797
+ expect(output).to match(/Unit test failures/)
798
+ expect(File.exist?('./build/test/results/test_example_file_crash_sigsegv.fail'))
799
+ output_rd = File.read('./build/test/results/test_example_file_crash_sigsegv.fail')
800
+ expect(output_rd).to match(/Test case crashed/)
801
+ expect(output_rd).to match(/SIGSEGV/i)
952
802
  expect(output).to match(/TESTED:\s+1/)
953
803
  expect(output).to match(/PASSED:\s+(?:0|1)/)
954
804
  expect(output).to match(/FAILED:\s+(?:1|2)/)
955
805
  expect(output).to match(/IGNORED:\s+0/)
806
+ log_path = './build/logs/test/test_example_file_crash_sigsegv/test_add_numbers_will_fail.gdb.log'
807
+ expect(File.exist?(log_path)).to be(true)
808
+ expect(File.read(log_path)).to match(/SIGSEGV|Segmentation fault/i)
809
+ expect(output).to match(/test_add_numbers_will_fail\.gdb\.log/)
810
+ end
811
+ end
812
+ end
813
+
814
+ # Validates that :use_backtrace => :gdb handles a SIGABRT crash from assert(0),
815
+ # surfacing the assertion expression (not bare "Aborted") in the crash summary,
816
+ # writing a gdb log containing the raw gdb output, and including a log path reference
817
+ # in Ceedling output. This is the core gdb-mode regression test for issue #1038.
818
+ def crash_gdb_sigabrt_assert_failure
819
+ @c.with_context do
820
+ Dir.chdir @proj_name do
821
+ FileUtils.cp test_asset_path("example_file.h"), 'src/'
822
+ FileUtils.cp test_asset_path("example_file.c"), 'src/'
823
+ FileUtils.cp test_asset_path("test_example_file_crash_assert.c"), 'test/'
824
+
825
+ @c.merge_project_yml_for_test({:project => { :use_backtrace => :gdb }})
826
+
827
+ output = @c.ceedling_build_exec("test:all")
828
+ expect(@c.last_exit_status).to eq(1)
829
+ expect(output).to match(/Test Case Crashed/i)
830
+ expect(output).to match(/Unit test failures/)
831
+ expect(output).to match(/SIGABRT/i)
832
+ expect(output).to match(/Assertion/i)
833
+ log_path = './build/logs/test/test_example_file_crash_assert/test_add_numbers_triggers_assert.gdb.log'
834
+ expect(File.exist?(log_path)).to be(true)
835
+ # Windwos gdb output for an assertion failure can be quite different from Linux.
836
+ # Windows gdb reports do not seem to cite the signal "SIGABRT" and may be quite brief,
837
+ # only citing an assertion failure.
838
+ expect(File.read(log_path)).to match(/SIGABRT|abort|assert/i)
839
+ expect(output).to match(/test_add_numbers_triggers_assert\.gdb\.log/)
840
+ expect(output).to match(/TESTED:\s+2/)
841
+ expect(output).to match(/FAILED:\s+(?:1|2)/)
842
+ expect(output).to match(/IGNORED:\s+0/)
843
+ end
844
+ end
845
+ end
846
+
847
+ # Validates that :use_backtrace => :simple runs each test case individually,
848
+ # identifies the crashing one (SIGSEGV from null-pointer dereference), and reports
849
+ # it as a per-test-case failure rather than a whole-executable crash.
850
+ def crash_simple_sigsegv_all_test_cases
851
+ @c.with_context do
852
+ Dir.chdir @proj_name do
853
+ FileUtils.cp test_asset_path("example_file.h"), 'src/'
854
+ FileUtils.cp test_asset_path("example_file.c"), 'src/'
855
+ FileUtils.cp test_asset_path("test_example_file_crash_sigsegv.c"), 'test/'
856
+
857
+ @c.merge_project_yml_for_test({:project => { :use_backtrace => :simple }})
858
+
859
+ output = @c.ceedling_build_exec("test:all")
860
+ expect(@c.last_exit_status).to eq(1)
861
+ expect(output).to match(/Test Case Crashed/i)
862
+ expect(output).to match(/Unit test failures/)
863
+ expect(output).to match(/TESTED:\s+2/)
864
+ expect(output).to match(/FAILED:\s+(?:1|2)/)
865
+ expect(output).to match(/IGNORED:\s+0/)
866
+ end
867
+ end
868
+ end
869
+
870
+ # Validates that :use_backtrace => :simple captures the glibc assertion message written
871
+ # to stderr before SIGABRT and includes it in the Ceedling crash report output.
872
+ # This is the core simple-mode regression test for issue #1038.
873
+ def crash_simple_sigabrt_assert_failure
874
+ @c.with_context do
875
+ Dir.chdir @proj_name do
876
+ FileUtils.cp test_asset_path("example_file.h"), 'src/'
877
+ FileUtils.cp test_asset_path("example_file.c"), 'src/'
878
+ FileUtils.cp test_asset_path("test_example_file_crash_assert.c"), 'test/'
879
+
880
+ @c.merge_project_yml_for_test({:project => { :use_backtrace => :simple }})
881
+
882
+ output = @c.ceedling_build_exec("test:all")
883
+ expect(@c.last_exit_status).to eq(1)
884
+ expect(output).to match(/Test Case Crashed/i)
885
+ expect(output).to match(/Unit test failures/)
886
+ # glibc assertion diagnostic written to stderr must appear in Ceedling output
887
+ expect(output).to match(/Assertion.*failed/i)
888
+ expect(output).to match(/TESTED:\s+2/)
889
+ expect(output).to match(/FAILED:\s+(?:1|2)/)
890
+ expect(output).to match(/IGNORED:\s+0/)
891
+ end
892
+ end
893
+ end
894
+
895
+ def project_with_test_file_directly_including_source_file
896
+ @c.with_context do
897
+ Dir.chdir @proj_name do
898
+ FileUtils.cp test_asset_path("example_file_with_statics.c"), 'src/'
899
+ FileUtils.cp test_asset_path("test_example_file_source_include.c"), 'test/'
900
+
901
+ output = @c.ceedling_build_exec
902
+ expect(@c.last_exit_status).to eq(0)
903
+ expect(output).to match(/TESTED:\s+\d/)
904
+ expect(output).to match(/PASSED:\s+\d/)
905
+ expect(output).to match(/FAILED:\s+\d/)
906
+ expect(output).to match(/IGNORED:\s+\d/)
956
907
  end
957
908
  end
958
909
  end
959
910
 
960
- def can_test_projects_with_success_when_space_appears_between_hash_and_include
911
+ def space_between_hash_and_include_is_valid
961
912
  # test case cover issue described in https://github.com/ThrowTheSwitch/Ceedling/issues/588
962
913
  @c.with_context do
963
914
  Dir.chdir @proj_name do
@@ -982,8 +933,8 @@ module CeedlingTestCases
982
933
 
983
934
  File.write(File.join('test','test_example_file_success.c'), updated_test_file.join("\n"), mode: 'w')
984
935
 
985
- output = `bundle exec ruby -S ceedling 2>&1`
986
- expect($?.exitstatus).to match(0) # Since a test either pass or are ignored, we return success here
936
+ output = @c.ceedling_build_exec
937
+ expect(@c.last_exit_status).to eq(0) # Since a test either pass or are ignored, we return success here
987
938
  expect(output).to match(/TESTED:\s+\d/)
988
939
  expect(output).to match(/PASSED:\s+\d/)
989
940
  expect(output).to match(/FAILED:\s+\d/)