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
@@ -0,0 +1,5060 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+ <meta name="description" content="Test-Centered Build System for C">
10
+
11
+
12
+
13
+
14
+ <link rel="prev" href="loading.html">
15
+
16
+
17
+ <link rel="next" href="project-file.html">
18
+
19
+
20
+
21
+
22
+
23
+ <link rel="icon" href="../assets/images/favicon.png">
24
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
25
+
26
+
27
+
28
+ <title>Mixins - Ceedling</title>
29
+
30
+
31
+
32
+ <link rel="stylesheet" href="../assets/stylesheets/main.484c7ddc.min.css">
33
+
34
+
35
+ <link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
49
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
50
+ <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
51
+
52
+
53
+
54
+ <link rel="stylesheet" href="../assets/stylesheets/styling.css">
55
+
56
+ <link rel="stylesheet" href="../assets/stylesheets/admonitions.css">
57
+
58
+ <link rel="stylesheet" href="../assets/stylesheets/fixes-local.css">
59
+
60
+ <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
61
+
62
+
63
+
64
+
65
+
66
+ </head>
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="green" data-md-color-accent="deep_purple">
77
+
78
+
79
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
80
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
81
+ <label class="md-overlay" for="__drawer"></label>
82
+ <div data-md-component="skip">
83
+
84
+
85
+ <a href="#mixins" class="md-skip">
86
+ Skip to content
87
+ </a>
88
+
89
+ </div>
90
+ <div data-md-component="announce">
91
+
92
+ </div>
93
+
94
+ <div data-md-color-scheme="default" data-md-component="outdated" hidden>
95
+
96
+ </div>
97
+
98
+
99
+
100
+
101
+ <header class="md-header" data-md-component="header">
102
+ <nav class="md-header__inner md-grid" aria-label="Header">
103
+ <a href="../index.html" title="Ceedling" class="md-header__button md-logo" aria-label="Ceedling" data-md-component="logo">
104
+
105
+
106
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
107
+
108
+ </a>
109
+ <label class="md-header__button md-icon" for="__drawer">
110
+
111
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
112
+ </label>
113
+ <div class="md-header__title" data-md-component="header-title">
114
+ <div class="md-header__ellipsis">
115
+ <div class="md-header__topic">
116
+ <span class="md-ellipsis">
117
+ Ceedling
118
+ </span>
119
+ </div>
120
+ <div class="md-header__topic" data-md-component="header-topic">
121
+ <span class="md-ellipsis">
122
+
123
+ Mixins
124
+
125
+ </span>
126
+ </div>
127
+ </div>
128
+ </div>
129
+
130
+
131
+ <form class="md-header__option" data-md-component="palette">
132
+
133
+
134
+
135
+
136
+ <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="green" data-md-color-accent="deep_purple" aria-hidden="true" type="radio" name="__palette" id="__palette_0">
137
+
138
+
139
+ </form>
140
+
141
+
142
+
143
+ <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
144
+
145
+
146
+
147
+
148
+ <div class="md-header__source">
149
+ <a href="https://github.com/ThrowTheSwitch/Ceedling" title="Go to repository" class="md-source" data-md-component="source">
150
+ <div class="md-source__icon md-icon">
151
+
152
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
153
+ </div>
154
+ <div class="md-source__repository">
155
+ ThrowTheSwitch/Ceedling
156
+ </div>
157
+ </a>
158
+ </div>
159
+
160
+ </nav>
161
+
162
+ </header>
163
+
164
+ <div class="md-container" data-md-component="container">
165
+
166
+
167
+
168
+
169
+
170
+ <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
171
+ <div class="md-grid">
172
+ <ul class="md-tabs__list">
173
+
174
+
175
+
176
+
177
+
178
+
179
+ <li class="md-tabs__item">
180
+ <a href="../index.html" class="md-tabs__link">
181
+
182
+
183
+
184
+
185
+
186
+ Home
187
+
188
+ </a>
189
+ </li>
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+ <li class="md-tabs__item">
201
+ <a href="../overview/index.html" class="md-tabs__link">
202
+
203
+
204
+
205
+
206
+
207
+ Overview
208
+
209
+ </a>
210
+ </li>
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+ <li class="md-tabs__item">
223
+ <a href="../getting-started/index.html" class="md-tabs__link">
224
+
225
+
226
+
227
+
228
+
229
+ Getting Started
230
+
231
+ </a>
232
+ </li>
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+ <li class="md-tabs__item">
245
+ <a href="../testing-guide/index.html" class="md-tabs__link">
246
+
247
+
248
+
249
+
250
+
251
+ Testing Guide
252
+
253
+ </a>
254
+ </li>
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+ <li class="md-tabs__item md-tabs__item--active">
269
+ <a href="index.html" class="md-tabs__link">
270
+
271
+
272
+
273
+
274
+
275
+ Configuration
276
+
277
+ </a>
278
+ </li>
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+ <li class="md-tabs__item">
291
+ <a href="../plugins/index.html" class="md-tabs__link">
292
+
293
+
294
+
295
+
296
+
297
+ Plugins
298
+
299
+ </a>
300
+ </li>
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+ <li class="md-tabs__item">
313
+ <a href="../reference/index.html" class="md-tabs__link">
314
+
315
+
316
+
317
+
318
+
319
+ Reference
320
+
321
+ </a>
322
+ </li>
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+ <li class="md-tabs__item">
335
+ <a href="../project/release-history.html" class="md-tabs__link">
336
+
337
+
338
+
339
+
340
+
341
+ Releases
342
+
343
+ </a>
344
+ </li>
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+ <li class="md-tabs__item">
355
+ <a href="../help.html" class="md-tabs__link">
356
+
357
+
358
+
359
+
360
+
361
+ Help
362
+
363
+ </a>
364
+ </li>
365
+
366
+
367
+
368
+
369
+
370
+
371
+
372
+
373
+
374
+
375
+ <li class="md-tabs__item">
376
+ <a href="../development/index.html" class="md-tabs__link">
377
+
378
+
379
+
380
+
381
+
382
+ Development
383
+
384
+ </a>
385
+ </li>
386
+
387
+
388
+
389
+
390
+ </ul>
391
+ </div>
392
+ </nav>
393
+
394
+
395
+
396
+ <main class="md-main" data-md-component="main">
397
+ <div class="md-main__inner md-grid">
398
+
399
+
400
+
401
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
402
+ <div class="md-sidebar__scrollwrap">
403
+ <div class="md-sidebar__inner">
404
+
405
+
406
+
407
+
408
+
409
+
410
+ <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
411
+ <label class="md-nav__title" for="__drawer">
412
+ <a href="../index.html" title="Ceedling" class="md-nav__button md-logo" aria-label="Ceedling" data-md-component="logo">
413
+
414
+
415
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
416
+
417
+ </a>
418
+ Ceedling
419
+ </label>
420
+
421
+ <div class="md-nav__source">
422
+ <a href="https://github.com/ThrowTheSwitch/Ceedling" title="Go to repository" class="md-source" data-md-component="source">
423
+ <div class="md-source__icon md-icon">
424
+
425
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
426
+ </div>
427
+ <div class="md-source__repository">
428
+ ThrowTheSwitch/Ceedling
429
+ </div>
430
+ </a>
431
+ </div>
432
+
433
+ <ul class="md-nav__list" data-md-scrollfix>
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+ <li class="md-nav__item">
442
+ <a href="../index.html" class="md-nav__link">
443
+
444
+
445
+
446
+ <span class="md-ellipsis">
447
+
448
+
449
+ Home
450
+
451
+
452
+
453
+ </span>
454
+
455
+
456
+
457
+ </a>
458
+ </li>
459
+
460
+
461
+
462
+
463
+
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+ <li class="md-nav__item md-nav__item--nested">
491
+
492
+
493
+
494
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
495
+
496
+
497
+ <div class="md-nav__link md-nav__container">
498
+ <a href="../overview/index.html" class="md-nav__link ">
499
+
500
+
501
+
502
+ <span class="md-ellipsis">
503
+
504
+
505
+ Overview
506
+
507
+
508
+
509
+ </span>
510
+
511
+
512
+
513
+ </a>
514
+
515
+
516
+ <label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="0">
517
+ <span class="md-nav__icon md-icon"></span>
518
+ </label>
519
+
520
+ </div>
521
+
522
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
523
+ <label class="md-nav__title" for="__nav_2">
524
+ <span class="md-nav__icon md-icon"></span>
525
+
526
+
527
+ Overview
528
+
529
+
530
+ </label>
531
+ <ul class="md-nav__list" data-md-scrollfix>
532
+
533
+
534
+
535
+
536
+
537
+
538
+
539
+
540
+
541
+ <li class="md-nav__item">
542
+ <a href="../overview/build-system.html" class="md-nav__link">
543
+
544
+
545
+
546
+ <span class="md-ellipsis">
547
+
548
+
549
+ Build System
550
+
551
+
552
+
553
+ </span>
554
+
555
+
556
+
557
+ </a>
558
+ </li>
559
+
560
+
561
+
562
+
563
+
564
+
565
+
566
+
567
+
568
+
569
+ <li class="md-nav__item">
570
+ <a href="../overview/tools-and-frameworks.html" class="md-nav__link">
571
+
572
+
573
+
574
+ <span class="md-ellipsis">
575
+
576
+
577
+ Tools & Frameworks
578
+
579
+
580
+
581
+ </span>
582
+
583
+
584
+
585
+ </a>
586
+ </li>
587
+
588
+
589
+
590
+
591
+
592
+
593
+
594
+
595
+
596
+
597
+ <li class="md-nav__item">
598
+ <a href="../overview/test-environments.html" class="md-nav__link">
599
+
600
+
601
+
602
+ <span class="md-ellipsis">
603
+
604
+
605
+ Test Environments
606
+
607
+
608
+
609
+ </span>
610
+
611
+
612
+
613
+ </a>
614
+ </li>
615
+
616
+
617
+
618
+
619
+ </ul>
620
+ </nav>
621
+
622
+ </li>
623
+
624
+
625
+
626
+
627
+
628
+
629
+
630
+
631
+
632
+
633
+
634
+
635
+
636
+
637
+
638
+
639
+
640
+
641
+
642
+
643
+
644
+
645
+
646
+
647
+
648
+
649
+
650
+
651
+
652
+
653
+
654
+
655
+
656
+ <li class="md-nav__item md-nav__item--nested">
657
+
658
+
659
+
660
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
661
+
662
+
663
+ <div class="md-nav__link md-nav__container">
664
+ <a href="../getting-started/index.html" class="md-nav__link ">
665
+
666
+
667
+
668
+ <span class="md-ellipsis">
669
+
670
+
671
+ Getting Started
672
+
673
+
674
+
675
+ </span>
676
+
677
+
678
+
679
+ </a>
680
+
681
+
682
+ <label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0">
683
+ <span class="md-nav__icon md-icon"></span>
684
+ </label>
685
+
686
+ </div>
687
+
688
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
689
+ <label class="md-nav__title" for="__nav_3">
690
+ <span class="md-nav__icon md-icon"></span>
691
+
692
+
693
+ Getting Started
694
+
695
+
696
+ </label>
697
+ <ul class="md-nav__list" data-md-scrollfix>
698
+
699
+
700
+
701
+
702
+
703
+
704
+
705
+
706
+
707
+ <li class="md-nav__item">
708
+ <a href="../getting-started/quick-start.html" class="md-nav__link">
709
+
710
+
711
+
712
+ <span class="md-ellipsis">
713
+
714
+
715
+ Quick Start
716
+
717
+
718
+
719
+ </span>
720
+
721
+
722
+
723
+ </a>
724
+ </li>
725
+
726
+
727
+
728
+
729
+
730
+
731
+
732
+
733
+
734
+
735
+ <li class="md-nav__item">
736
+ <a href="../getting-started/installation.html" class="md-nav__link">
737
+
738
+
739
+
740
+ <span class="md-ellipsis">
741
+
742
+
743
+ Installation
744
+
745
+
746
+
747
+ </span>
748
+
749
+
750
+
751
+ </a>
752
+ </li>
753
+
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+ <li class="md-nav__item">
764
+ <a href="../getting-started/command-line.html" class="md-nav__link">
765
+
766
+
767
+
768
+ <span class="md-ellipsis">
769
+
770
+
771
+ Command Line
772
+
773
+
774
+
775
+ </span>
776
+
777
+
778
+
779
+ </a>
780
+ </li>
781
+
782
+
783
+
784
+
785
+
786
+
787
+
788
+
789
+
790
+
791
+
792
+
793
+
794
+
795
+
796
+
797
+
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+
812
+
813
+ <li class="md-nav__item md-nav__item--nested">
814
+
815
+
816
+
817
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
818
+
819
+
820
+ <div class="md-nav__link md-nav__container">
821
+ <a href="../getting-started/example-projects/index.html" class="md-nav__link ">
822
+
823
+
824
+
825
+ <span class="md-ellipsis">
826
+
827
+
828
+ Example Projects
829
+
830
+
831
+
832
+ </span>
833
+
834
+
835
+
836
+ </a>
837
+
838
+
839
+ <label class="md-nav__link " for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
840
+ <span class="md-nav__icon md-icon"></span>
841
+ </label>
842
+
843
+ </div>
844
+
845
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_5_label" aria-expanded="false">
846
+ <label class="md-nav__title" for="__nav_3_5">
847
+ <span class="md-nav__icon md-icon"></span>
848
+
849
+
850
+ Example Projects
851
+
852
+
853
+ </label>
854
+ <ul class="md-nav__list" data-md-scrollfix>
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+ <li class="md-nav__item">
865
+ <a href="../getting-started/example-projects/temp-sensor.html" class="md-nav__link">
866
+
867
+
868
+
869
+ <span class="md-ellipsis">
870
+
871
+
872
+ Temp Sensor
873
+
874
+
875
+
876
+ </span>
877
+
878
+
879
+
880
+ </a>
881
+ </li>
882
+
883
+
884
+
885
+
886
+
887
+
888
+
889
+
890
+
891
+
892
+ <li class="md-nav__item">
893
+ <a href="../getting-started/example-projects/wondrous-forest.html" class="md-nav__link">
894
+
895
+
896
+
897
+ <span class="md-ellipsis">
898
+
899
+
900
+ Wondrous Forest
901
+
902
+
903
+
904
+ </span>
905
+
906
+
907
+
908
+ </a>
909
+ </li>
910
+
911
+
912
+
913
+
914
+
915
+
916
+
917
+
918
+
919
+
920
+ <li class="md-nav__item">
921
+ <a href="../getting-started/example-projects/cipher-quest.html" class="md-nav__link">
922
+
923
+
924
+
925
+ <span class="md-ellipsis">
926
+
927
+
928
+ Cipher Quest
929
+
930
+
931
+
932
+ </span>
933
+
934
+
935
+
936
+ </a>
937
+ </li>
938
+
939
+
940
+
941
+
942
+ </ul>
943
+ </nav>
944
+
945
+ </li>
946
+
947
+
948
+
949
+
950
+ </ul>
951
+ </nav>
952
+
953
+ </li>
954
+
955
+
956
+
957
+
958
+
959
+
960
+
961
+
962
+
963
+
964
+
965
+
966
+
967
+
968
+
969
+
970
+
971
+
972
+
973
+
974
+
975
+
976
+
977
+
978
+
979
+
980
+
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+
989
+
990
+
991
+
992
+
993
+ <li class="md-nav__item md-nav__item--nested">
994
+
995
+
996
+
997
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
998
+
999
+
1000
+ <div class="md-nav__link md-nav__container">
1001
+ <a href="../testing-guide/index.html" class="md-nav__link ">
1002
+
1003
+
1004
+
1005
+ <span class="md-ellipsis">
1006
+
1007
+
1008
+ Testing Guide
1009
+
1010
+
1011
+
1012
+ </span>
1013
+
1014
+
1015
+
1016
+ </a>
1017
+
1018
+
1019
+ <label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="0">
1020
+ <span class="md-nav__icon md-icon"></span>
1021
+ </label>
1022
+
1023
+ </div>
1024
+
1025
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
1026
+ <label class="md-nav__title" for="__nav_4">
1027
+ <span class="md-nav__icon md-icon"></span>
1028
+
1029
+
1030
+ Testing Guide
1031
+
1032
+
1033
+ </label>
1034
+ <ul class="md-nav__list" data-md-scrollfix>
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+ <li class="md-nav__item">
1045
+ <a href="../testing-guide/test-cases.html" class="md-nav__link">
1046
+
1047
+
1048
+
1049
+ <span class="md-ellipsis">
1050
+
1051
+
1052
+ How Does a Test Case Work?
1053
+
1054
+
1055
+
1056
+ </span>
1057
+
1058
+
1059
+
1060
+ </a>
1061
+ </li>
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+
1071
+
1072
+ <li class="md-nav__item">
1073
+ <a href="../testing-guide/test-sample.html" class="md-nav__link">
1074
+
1075
+
1076
+
1077
+ <span class="md-ellipsis">
1078
+
1079
+
1080
+ Commented Sample Test File
1081
+
1082
+
1083
+
1084
+ </span>
1085
+
1086
+
1087
+
1088
+ </a>
1089
+ </li>
1090
+
1091
+
1092
+
1093
+
1094
+
1095
+
1096
+
1097
+
1098
+
1099
+
1100
+ <li class="md-nav__item">
1101
+ <a href="../testing-guide/test-suite-anatomy.html" class="md-nav__link">
1102
+
1103
+
1104
+
1105
+ <span class="md-ellipsis">
1106
+
1107
+
1108
+ Anatomy of a Test Suite
1109
+
1110
+
1111
+
1112
+ </span>
1113
+
1114
+
1115
+
1116
+ </a>
1117
+ </li>
1118
+
1119
+
1120
+
1121
+
1122
+
1123
+
1124
+
1125
+
1126
+
1127
+
1128
+ <li class="md-nav__item">
1129
+ <a href="../testing-guide/conventions.html" class="md-nav__link">
1130
+
1131
+
1132
+
1133
+ <span class="md-ellipsis">
1134
+
1135
+
1136
+ Conventions & Behaviors
1137
+
1138
+
1139
+
1140
+ </span>
1141
+
1142
+
1143
+
1144
+ </a>
1145
+ </li>
1146
+
1147
+
1148
+
1149
+
1150
+
1151
+
1152
+
1153
+
1154
+
1155
+
1156
+ <li class="md-nav__item">
1157
+ <a href="../testing-guide/frameworks.html" class="md-nav__link">
1158
+
1159
+
1160
+
1161
+ <span class="md-ellipsis">
1162
+
1163
+
1164
+ Unity, CMock & CException
1165
+
1166
+
1167
+
1168
+ </span>
1169
+
1170
+
1171
+
1172
+ </a>
1173
+ </li>
1174
+
1175
+
1176
+
1177
+
1178
+
1179
+
1180
+
1181
+
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+
1209
+
1210
+
1211
+
1212
+ <li class="md-nav__item md-nav__item--nested">
1213
+
1214
+
1215
+
1216
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_7" >
1217
+
1218
+
1219
+ <div class="md-nav__link md-nav__container">
1220
+ <a href="../testing-guide/partials/index.html" class="md-nav__link ">
1221
+
1222
+
1223
+
1224
+ <span class="md-ellipsis">
1225
+
1226
+
1227
+ Partials
1228
+
1229
+
1230
+
1231
+ </span>
1232
+
1233
+
1234
+
1235
+ </a>
1236
+
1237
+
1238
+ <label class="md-nav__link " for="__nav_4_7" id="__nav_4_7_label" tabindex="0">
1239
+ <span class="md-nav__icon md-icon"></span>
1240
+ </label>
1241
+
1242
+ </div>
1243
+
1244
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_7_label" aria-expanded="false">
1245
+ <label class="md-nav__title" for="__nav_4_7">
1246
+ <span class="md-nav__icon md-icon"></span>
1247
+
1248
+
1249
+ Partials
1250
+
1251
+
1252
+ </label>
1253
+ <ul class="md-nav__list" data-md-scrollfix>
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+
1260
+
1261
+
1262
+
1263
+ <li class="md-nav__item">
1264
+ <a href="../testing-guide/partials/overview.html" class="md-nav__link">
1265
+
1266
+
1267
+
1268
+ <span class="md-ellipsis">
1269
+
1270
+
1271
+ What Is a Partial?
1272
+
1273
+
1274
+
1275
+ </span>
1276
+
1277
+
1278
+
1279
+ </a>
1280
+ </li>
1281
+
1282
+
1283
+
1284
+
1285
+
1286
+
1287
+
1288
+
1289
+
1290
+
1291
+ <li class="md-nav__item">
1292
+ <a href="../testing-guide/partials/configuration.html" class="md-nav__link">
1293
+
1294
+
1295
+
1296
+ <span class="md-ellipsis">
1297
+
1298
+
1299
+ Configuration
1300
+
1301
+
1302
+
1303
+ </span>
1304
+
1305
+
1306
+
1307
+ </a>
1308
+ </li>
1309
+
1310
+
1311
+
1312
+
1313
+
1314
+
1315
+
1316
+
1317
+
1318
+
1319
+ <li class="md-nav__item">
1320
+ <a href="../testing-guide/partials/example.html" class="md-nav__link">
1321
+
1322
+
1323
+
1324
+ <span class="md-ellipsis">
1325
+
1326
+
1327
+ Walk-Through Example
1328
+
1329
+
1330
+
1331
+ </span>
1332
+
1333
+
1334
+
1335
+ </a>
1336
+ </li>
1337
+
1338
+
1339
+
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+ <li class="md-nav__item">
1348
+ <a href="../testing-guide/partials/conventions.html" class="md-nav__link">
1349
+
1350
+
1351
+
1352
+ <span class="md-ellipsis">
1353
+
1354
+
1355
+ Conventions & Terminology
1356
+
1357
+
1358
+
1359
+ </span>
1360
+
1361
+
1362
+
1363
+ </a>
1364
+ </li>
1365
+
1366
+
1367
+
1368
+
1369
+
1370
+
1371
+
1372
+
1373
+
1374
+
1375
+ <li class="md-nav__item">
1376
+ <a href="../testing-guide/partials/directives.html" class="md-nav__link">
1377
+
1378
+
1379
+
1380
+ <span class="md-ellipsis">
1381
+
1382
+
1383
+ Partial Directive Macros
1384
+
1385
+
1386
+
1387
+ </span>
1388
+
1389
+
1390
+
1391
+ </a>
1392
+ </li>
1393
+
1394
+
1395
+
1396
+
1397
+
1398
+
1399
+
1400
+
1401
+
1402
+
1403
+ <li class="md-nav__item">
1404
+ <a href="../testing-guide/partials/variables.html" class="md-nav__link">
1405
+
1406
+
1407
+
1408
+ <span class="md-ellipsis">
1409
+
1410
+
1411
+ Accessing Static Variables
1412
+
1413
+
1414
+
1415
+ </span>
1416
+
1417
+
1418
+
1419
+ </a>
1420
+ </li>
1421
+
1422
+
1423
+
1424
+
1425
+ </ul>
1426
+ </nav>
1427
+
1428
+ </li>
1429
+
1430
+
1431
+
1432
+
1433
+
1434
+
1435
+
1436
+
1437
+
1438
+
1439
+ <li class="md-nav__item">
1440
+ <a href="../testing-guide/build-directives.html" class="md-nav__link">
1441
+
1442
+
1443
+
1444
+ <span class="md-ellipsis">
1445
+
1446
+
1447
+ Build Directive Macros
1448
+
1449
+
1450
+
1451
+ </span>
1452
+
1453
+
1454
+
1455
+ </a>
1456
+ </li>
1457
+
1458
+
1459
+
1460
+
1461
+ </ul>
1462
+ </nav>
1463
+
1464
+ </li>
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1471
+
1472
+
1473
+
1474
+
1475
+
1476
+
1477
+
1478
+
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+
1496
+
1497
+
1498
+
1499
+
1500
+
1501
+
1502
+
1503
+
1504
+
1505
+
1506
+
1507
+
1508
+
1509
+
1510
+
1511
+ <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
1512
+
1513
+
1514
+
1515
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
1516
+
1517
+
1518
+ <div class="md-nav__link md-nav__container">
1519
+ <a href="index.html" class="md-nav__link ">
1520
+
1521
+
1522
+
1523
+ <span class="md-ellipsis">
1524
+
1525
+
1526
+ Configuration
1527
+
1528
+
1529
+
1530
+ </span>
1531
+
1532
+
1533
+
1534
+ </a>
1535
+
1536
+
1537
+ <label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="">
1538
+ <span class="md-nav__icon md-icon"></span>
1539
+ </label>
1540
+
1541
+ </div>
1542
+
1543
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
1544
+ <label class="md-nav__title" for="__nav_5">
1545
+ <span class="md-nav__icon md-icon"></span>
1546
+
1547
+
1548
+ Configuration
1549
+
1550
+
1551
+ </label>
1552
+ <ul class="md-nav__list" data-md-scrollfix>
1553
+
1554
+
1555
+
1556
+
1557
+
1558
+
1559
+
1560
+
1561
+
1562
+ <li class="md-nav__item">
1563
+ <a href="loading.html" class="md-nav__link">
1564
+
1565
+
1566
+
1567
+ <span class="md-ellipsis">
1568
+
1569
+
1570
+ Loading Configuration
1571
+
1572
+
1573
+
1574
+ </span>
1575
+
1576
+
1577
+
1578
+ </a>
1579
+ </li>
1580
+
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+ <li class="md-nav__item md-nav__item--active">
1593
+
1594
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+ <label class="md-nav__link md-nav__link--active" for="__toc">
1601
+
1602
+
1603
+
1604
+ <span class="md-ellipsis">
1605
+
1606
+
1607
+ Mixins
1608
+
1609
+
1610
+
1611
+ </span>
1612
+
1613
+
1614
+
1615
+ <span class="md-nav__icon md-icon"></span>
1616
+ </label>
1617
+
1618
+ <a href="mixins.html" class="md-nav__link md-nav__link--active">
1619
+
1620
+
1621
+
1622
+ <span class="md-ellipsis">
1623
+
1624
+
1625
+ Mixins
1626
+
1627
+
1628
+
1629
+ </span>
1630
+
1631
+
1632
+
1633
+ </a>
1634
+
1635
+
1636
+
1637
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+ <label class="md-nav__title" for="__toc">
1645
+ <span class="md-nav__icon md-icon"></span>
1646
+ Table of contents
1647
+ </label>
1648
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1649
+
1650
+ <li class="md-nav__item">
1651
+ <a href="#designing-for-mixins-merge-rules" class="md-nav__link">
1652
+ <span class="md-ellipsis">
1653
+
1654
+ Designing for Mixins merge rules
1655
+
1656
+ </span>
1657
+ </a>
1658
+
1659
+ <nav class="md-nav" aria-label="Designing for Mixins merge rules">
1660
+ <ul class="md-nav__list">
1661
+
1662
+ <li class="md-nav__item">
1663
+ <a href="#additive-mixin-merges" class="md-nav__link">
1664
+ <span class="md-ellipsis">
1665
+
1666
+ Additive Mixin merges
1667
+
1668
+ </span>
1669
+ </a>
1670
+
1671
+ </li>
1672
+
1673
+ <li class="md-nav__item">
1674
+ <a href="#mixins-deep-merge-rules" class="md-nav__link">
1675
+ <span class="md-ellipsis">
1676
+
1677
+ Mixins deep merge rules
1678
+
1679
+ </span>
1680
+ </a>
1681
+
1682
+ </li>
1683
+
1684
+ </ul>
1685
+ </nav>
1686
+
1687
+ </li>
1688
+
1689
+ <li class="md-nav__item">
1690
+ <a href="#mixins-example" class="md-nav__link">
1691
+ <span class="md-ellipsis">
1692
+
1693
+ Mixins Example
1694
+
1695
+ </span>
1696
+ </a>
1697
+
1698
+ <nav class="md-nav" aria-label="Mixins Example">
1699
+ <ul class="md-nav__list">
1700
+
1701
+ <li class="md-nav__item">
1702
+ <a href="#our-example-scenario" class="md-nav__link">
1703
+ <span class="md-ellipsis">
1704
+
1705
+ Our Example Scenario
1706
+
1707
+ </span>
1708
+ </a>
1709
+
1710
+ </li>
1711
+
1712
+ <li class="md-nav__item">
1713
+ <a href="#example-environment-variable" class="md-nav__link">
1714
+ <span class="md-ellipsis">
1715
+
1716
+ Example environment variable
1717
+
1718
+ </span>
1719
+ </a>
1720
+
1721
+ </li>
1722
+
1723
+ <li class="md-nav__item">
1724
+ <a href="#example-command-line" class="md-nav__link">
1725
+ <span class="md-ellipsis">
1726
+
1727
+ Example command line
1728
+
1729
+ </span>
1730
+ </a>
1731
+
1732
+ </li>
1733
+
1734
+ <li class="md-nav__item">
1735
+ <a href="#example-configuration-files" class="md-nav__link">
1736
+ <span class="md-ellipsis">
1737
+
1738
+ Example Configuration files
1739
+
1740
+ </span>
1741
+ </a>
1742
+
1743
+ </li>
1744
+
1745
+ <li class="md-nav__item">
1746
+ <a href="#example-resulting-configuration" class="md-nav__link">
1747
+ <span class="md-ellipsis">
1748
+
1749
+ Example resulting configuration
1750
+
1751
+ </span>
1752
+ </a>
1753
+
1754
+ </li>
1755
+
1756
+ </ul>
1757
+ </nav>
1758
+
1759
+ </li>
1760
+
1761
+ <li class="md-nav__item">
1762
+ <a href="#options-for-loading-mixins" class="md-nav__link">
1763
+ <span class="md-ellipsis">
1764
+
1765
+ Options for loading Mixins
1766
+
1767
+ </span>
1768
+ </a>
1769
+
1770
+ <nav class="md-nav" aria-label="Options for loading Mixins">
1771
+ <ul class="md-nav__list">
1772
+
1773
+ <li class="md-nav__item">
1774
+ <a href="#-mixin-command-line-flags" class="md-nav__link">
1775
+ <span class="md-ellipsis">
1776
+
1777
+ --mixin command line flags
1778
+
1779
+ </span>
1780
+ </a>
1781
+
1782
+ </li>
1783
+
1784
+ <li class="md-nav__item">
1785
+ <a href="#environment-variables" class="md-nav__link">
1786
+ <span class="md-ellipsis">
1787
+
1788
+ Environment variables
1789
+
1790
+ </span>
1791
+ </a>
1792
+
1793
+ </li>
1794
+
1795
+ <li class="md-nav__item">
1796
+ <a href="#base-configuration-mixins-entries" class="md-nav__link">
1797
+ <span class="md-ellipsis">
1798
+
1799
+ Base configuration :mixins entries
1800
+
1801
+ </span>
1802
+ </a>
1803
+
1804
+ </li>
1805
+
1806
+ </ul>
1807
+ </nav>
1808
+
1809
+ </li>
1810
+
1811
+ <li class="md-nav__item">
1812
+ <a href="#built-in-toolchain-targets" class="md-nav__link">
1813
+ <span class="md-ellipsis">
1814
+
1815
+ Built-in toolchain targets
1816
+
1817
+ </span>
1818
+ </a>
1819
+
1820
+ <nav class="md-nav" aria-label="Built-in toolchain targets">
1821
+ <ul class="md-nav__list">
1822
+
1823
+ <li class="md-nav__item">
1824
+ <a href="#available-built-in-targets" class="md-nav__link">
1825
+ <span class="md-ellipsis">
1826
+
1827
+ Available built-in targets
1828
+
1829
+ </span>
1830
+ </a>
1831
+
1832
+ </li>
1833
+
1834
+ <li class="md-nav__item">
1835
+ <a href="#using-a-built-in-target-as-a-starting-point" class="md-nav__link">
1836
+ <span class="md-ellipsis">
1837
+
1838
+ Using a built-in target as a starting point
1839
+
1840
+ </span>
1841
+ </a>
1842
+
1843
+ </li>
1844
+
1845
+ </ul>
1846
+ </nav>
1847
+
1848
+ </li>
1849
+
1850
+ </ul>
1851
+
1852
+ </nav>
1853
+
1854
+ </li>
1855
+
1856
+
1857
+
1858
+
1859
+
1860
+
1861
+
1862
+
1863
+
1864
+
1865
+ <li class="md-nav__item">
1866
+ <a href="project-file.html" class="md-nav__link">
1867
+
1868
+
1869
+
1870
+ <span class="md-ellipsis">
1871
+
1872
+
1873
+ Project File Basics
1874
+
1875
+
1876
+
1877
+ </span>
1878
+
1879
+
1880
+
1881
+ </a>
1882
+ </li>
1883
+
1884
+
1885
+
1886
+
1887
+
1888
+
1889
+
1890
+
1891
+
1892
+
1893
+ <li class="md-nav__item">
1894
+ <a href="parallel-builds.html" class="md-nav__link">
1895
+
1896
+
1897
+
1898
+ <span class="md-ellipsis">
1899
+
1900
+
1901
+ Parallel Builds
1902
+
1903
+
1904
+
1905
+ </span>
1906
+
1907
+
1908
+
1909
+ </a>
1910
+ </li>
1911
+
1912
+
1913
+
1914
+
1915
+
1916
+
1917
+
1918
+
1919
+
1920
+
1921
+ <li class="md-nav__item">
1922
+ <a href="environment-vars.html" class="md-nav__link">
1923
+
1924
+
1925
+
1926
+ <span class="md-ellipsis">
1927
+
1928
+
1929
+ Environment Variables
1930
+
1931
+
1932
+
1933
+ </span>
1934
+
1935
+
1936
+
1937
+ </a>
1938
+ </li>
1939
+
1940
+
1941
+
1942
+
1943
+
1944
+
1945
+
1946
+
1947
+
1948
+
1949
+ <li class="md-nav__item">
1950
+ <a href="which-ceedling.html" class="md-nav__link">
1951
+
1952
+
1953
+
1954
+ <span class="md-ellipsis">
1955
+
1956
+
1957
+ Which Ceedling
1958
+
1959
+
1960
+
1961
+ </span>
1962
+
1963
+
1964
+
1965
+ </a>
1966
+ </li>
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+
1973
+
1974
+
1975
+
1976
+
1977
+ <li class="md-nav__item">
1978
+ <a href="global-collections.html" class="md-nav__link">
1979
+
1980
+
1981
+
1982
+ <span class="md-ellipsis">
1983
+
1984
+
1985
+ Global Collections
1986
+
1987
+
1988
+
1989
+ </span>
1990
+
1991
+
1992
+
1993
+ </a>
1994
+ </li>
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+
2001
+
2002
+
2003
+
2004
+
2005
+
2006
+
2007
+
2008
+
2009
+
2010
+
2011
+
2012
+
2013
+
2014
+
2015
+
2016
+
2017
+
2018
+
2019
+
2020
+
2021
+
2022
+
2023
+
2024
+
2025
+
2026
+
2027
+
2028
+
2029
+
2030
+
2031
+
2032
+
2033
+
2034
+
2035
+
2036
+
2037
+
2038
+
2039
+
2040
+
2041
+
2042
+
2043
+
2044
+
2045
+
2046
+
2047
+
2048
+
2049
+
2050
+
2051
+
2052
+
2053
+
2054
+
2055
+
2056
+
2057
+
2058
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
2059
+
2060
+
2061
+
2062
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_9" >
2063
+
2064
+
2065
+ <div class="md-nav__link md-nav__container">
2066
+ <a href="reference/index.html" class="md-nav__link ">
2067
+
2068
+
2069
+
2070
+ <span class="md-ellipsis">
2071
+
2072
+
2073
+ Configuration Reference
2074
+
2075
+
2076
+
2077
+ </span>
2078
+
2079
+
2080
+
2081
+ </a>
2082
+
2083
+
2084
+ <label class="md-nav__link " for="__nav_5_9" id="__nav_5_9_label" tabindex="">
2085
+ <span class="md-nav__icon md-icon"></span>
2086
+ </label>
2087
+
2088
+ </div>
2089
+
2090
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_9_label" aria-expanded="false">
2091
+ <label class="md-nav__title" for="__nav_5_9">
2092
+ <span class="md-nav__icon md-icon"></span>
2093
+
2094
+
2095
+ Configuration Reference
2096
+
2097
+
2098
+ </label>
2099
+ <ul class="md-nav__list" data-md-scrollfix>
2100
+
2101
+
2102
+
2103
+
2104
+
2105
+
2106
+
2107
+
2108
+
2109
+ <li class="md-nav__item">
2110
+ <a href="reference/project.html" class="md-nav__link">
2111
+
2112
+
2113
+
2114
+ <span class="md-ellipsis">
2115
+
2116
+
2117
+ Global Project Settings
2118
+
2119
+
2120
+
2121
+ </span>
2122
+
2123
+
2124
+
2125
+ </a>
2126
+ </li>
2127
+
2128
+
2129
+
2130
+
2131
+
2132
+
2133
+
2134
+
2135
+
2136
+
2137
+ <li class="md-nav__item">
2138
+ <a href="reference/mixins.html" class="md-nav__link">
2139
+
2140
+
2141
+
2142
+ <span class="md-ellipsis">
2143
+
2144
+
2145
+ Mixins
2146
+
2147
+
2148
+
2149
+ </span>
2150
+
2151
+
2152
+
2153
+ </a>
2154
+ </li>
2155
+
2156
+
2157
+
2158
+
2159
+
2160
+
2161
+
2162
+
2163
+
2164
+
2165
+ <li class="md-nav__item">
2166
+ <a href="reference/test-build.html" class="md-nav__link">
2167
+
2168
+
2169
+
2170
+ <span class="md-ellipsis">
2171
+
2172
+
2173
+ Test Build Settings
2174
+
2175
+
2176
+
2177
+ </span>
2178
+
2179
+
2180
+
2181
+ </a>
2182
+ </li>
2183
+
2184
+
2185
+
2186
+
2187
+
2188
+
2189
+
2190
+
2191
+
2192
+
2193
+ <li class="md-nav__item">
2194
+ <a href="reference/release-build.html" class="md-nav__link">
2195
+
2196
+
2197
+
2198
+ <span class="md-ellipsis">
2199
+
2200
+
2201
+ Release Build Settings
2202
+
2203
+
2204
+
2205
+ </span>
2206
+
2207
+
2208
+
2209
+ </a>
2210
+ </li>
2211
+
2212
+
2213
+
2214
+
2215
+
2216
+
2217
+
2218
+
2219
+
2220
+
2221
+ <li class="md-nav__item">
2222
+ <a href="reference/paths.html" class="md-nav__link">
2223
+
2224
+
2225
+
2226
+ <span class="md-ellipsis">
2227
+
2228
+
2229
+ Search Paths
2230
+
2231
+
2232
+
2233
+ </span>
2234
+
2235
+
2236
+
2237
+ </a>
2238
+ </li>
2239
+
2240
+
2241
+
2242
+
2243
+
2244
+
2245
+
2246
+
2247
+
2248
+
2249
+ <li class="md-nav__item">
2250
+ <a href="reference/files.html" class="md-nav__link">
2251
+
2252
+
2253
+
2254
+ <span class="md-ellipsis">
2255
+
2256
+
2257
+ File Collections
2258
+
2259
+
2260
+
2261
+ </span>
2262
+
2263
+
2264
+
2265
+ </a>
2266
+ </li>
2267
+
2268
+
2269
+
2270
+
2271
+
2272
+
2273
+
2274
+
2275
+
2276
+
2277
+ <li class="md-nav__item">
2278
+ <a href="reference/environment.html" class="md-nav__link">
2279
+
2280
+
2281
+
2282
+ <span class="md-ellipsis">
2283
+
2284
+
2285
+ Environment Variables
2286
+
2287
+
2288
+
2289
+ </span>
2290
+
2291
+
2292
+
2293
+ </a>
2294
+ </li>
2295
+
2296
+
2297
+
2298
+
2299
+
2300
+
2301
+
2302
+
2303
+
2304
+
2305
+ <li class="md-nav__item">
2306
+ <a href="reference/extension.html" class="md-nav__link">
2307
+
2308
+
2309
+
2310
+ <span class="md-ellipsis">
2311
+
2312
+
2313
+ File Extensions
2314
+
2315
+
2316
+
2317
+ </span>
2318
+
2319
+
2320
+
2321
+ </a>
2322
+ </li>
2323
+
2324
+
2325
+
2326
+
2327
+
2328
+
2329
+
2330
+
2331
+
2332
+
2333
+ <li class="md-nav__item">
2334
+ <a href="reference/defines.html" class="md-nav__link">
2335
+
2336
+
2337
+
2338
+ <span class="md-ellipsis">
2339
+
2340
+
2341
+ Defines
2342
+
2343
+
2344
+
2345
+ </span>
2346
+
2347
+
2348
+
2349
+ </a>
2350
+ </li>
2351
+
2352
+
2353
+
2354
+
2355
+
2356
+
2357
+
2358
+
2359
+
2360
+
2361
+ <li class="md-nav__item">
2362
+ <a href="reference/flags.html" class="md-nav__link">
2363
+
2364
+
2365
+
2366
+ <span class="md-ellipsis">
2367
+
2368
+
2369
+ Compilation & Link Flags
2370
+
2371
+
2372
+
2373
+ </span>
2374
+
2375
+
2376
+
2377
+ </a>
2378
+ </li>
2379
+
2380
+
2381
+
2382
+
2383
+
2384
+
2385
+
2386
+
2387
+
2388
+
2389
+ <li class="md-nav__item">
2390
+ <a href="reference/libraries.html" class="md-nav__link">
2391
+
2392
+
2393
+
2394
+ <span class="md-ellipsis">
2395
+
2396
+
2397
+ Libraries
2398
+
2399
+
2400
+
2401
+ </span>
2402
+
2403
+
2404
+
2405
+ </a>
2406
+ </li>
2407
+
2408
+
2409
+
2410
+
2411
+
2412
+
2413
+
2414
+
2415
+
2416
+
2417
+ <li class="md-nav__item">
2418
+ <a href="reference/unity.html" class="md-nav__link">
2419
+
2420
+
2421
+
2422
+ <span class="md-ellipsis">
2423
+
2424
+
2425
+ Unity
2426
+
2427
+
2428
+
2429
+ </span>
2430
+
2431
+
2432
+
2433
+ </a>
2434
+ </li>
2435
+
2436
+
2437
+
2438
+
2439
+
2440
+
2441
+
2442
+
2443
+
2444
+
2445
+ <li class="md-nav__item">
2446
+ <a href="reference/cmock.html" class="md-nav__link">
2447
+
2448
+
2449
+
2450
+ <span class="md-ellipsis">
2451
+
2452
+
2453
+ CMock
2454
+
2455
+
2456
+
2457
+ </span>
2458
+
2459
+
2460
+
2461
+ </a>
2462
+ </li>
2463
+
2464
+
2465
+
2466
+
2467
+
2468
+
2469
+
2470
+
2471
+
2472
+
2473
+ <li class="md-nav__item">
2474
+ <a href="reference/test-runner.html" class="md-nav__link">
2475
+
2476
+
2477
+
2478
+ <span class="md-ellipsis">
2479
+
2480
+
2481
+ Test Runner
2482
+
2483
+
2484
+
2485
+ </span>
2486
+
2487
+
2488
+
2489
+ </a>
2490
+ </li>
2491
+
2492
+
2493
+
2494
+
2495
+
2496
+
2497
+
2498
+
2499
+
2500
+
2501
+ <li class="md-nav__item">
2502
+ <a href="reference/cexception.html" class="md-nav__link">
2503
+
2504
+
2505
+
2506
+ <span class="md-ellipsis">
2507
+
2508
+
2509
+ CException
2510
+
2511
+
2512
+
2513
+ </span>
2514
+
2515
+
2516
+
2517
+ </a>
2518
+ </li>
2519
+
2520
+
2521
+
2522
+
2523
+
2524
+
2525
+
2526
+
2527
+
2528
+
2529
+ <li class="md-nav__item">
2530
+ <a href="reference/plugins.html" class="md-nav__link">
2531
+
2532
+
2533
+
2534
+ <span class="md-ellipsis">
2535
+
2536
+
2537
+ Plugins
2538
+
2539
+
2540
+
2541
+ </span>
2542
+
2543
+
2544
+
2545
+ </a>
2546
+ </li>
2547
+
2548
+
2549
+
2550
+
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+ <li class="md-nav__item">
2558
+ <a href="reference/tools.html" class="md-nav__link">
2559
+
2560
+
2561
+
2562
+ <span class="md-ellipsis">
2563
+
2564
+
2565
+ Tools
2566
+
2567
+
2568
+
2569
+ </span>
2570
+
2571
+
2572
+
2573
+ </a>
2574
+ </li>
2575
+
2576
+
2577
+
2578
+
2579
+ </ul>
2580
+ </nav>
2581
+
2582
+ </li>
2583
+
2584
+
2585
+
2586
+
2587
+ </ul>
2588
+ </nav>
2589
+
2590
+ </li>
2591
+
2592
+
2593
+
2594
+
2595
+
2596
+
2597
+
2598
+
2599
+
2600
+
2601
+
2602
+
2603
+
2604
+
2605
+
2606
+
2607
+
2608
+
2609
+
2610
+
2611
+
2612
+
2613
+
2614
+
2615
+
2616
+
2617
+
2618
+
2619
+
2620
+
2621
+
2622
+
2623
+
2624
+
2625
+
2626
+
2627
+
2628
+
2629
+
2630
+
2631
+
2632
+
2633
+
2634
+
2635
+
2636
+
2637
+
2638
+
2639
+
2640
+
2641
+
2642
+
2643
+
2644
+
2645
+
2646
+
2647
+
2648
+
2649
+
2650
+ <li class="md-nav__item md-nav__item--nested">
2651
+
2652
+
2653
+
2654
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
2655
+
2656
+
2657
+ <div class="md-nav__link md-nav__container">
2658
+ <a href="../plugins/index.html" class="md-nav__link ">
2659
+
2660
+
2661
+
2662
+ <span class="md-ellipsis">
2663
+
2664
+
2665
+ Plugins
2666
+
2667
+
2668
+
2669
+ </span>
2670
+
2671
+
2672
+
2673
+ </a>
2674
+
2675
+
2676
+ <label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="0">
2677
+ <span class="md-nav__icon md-icon"></span>
2678
+ </label>
2679
+
2680
+ </div>
2681
+
2682
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
2683
+ <label class="md-nav__title" for="__nav_6">
2684
+ <span class="md-nav__icon md-icon"></span>
2685
+
2686
+
2687
+ Plugins
2688
+
2689
+
2690
+ </label>
2691
+ <ul class="md-nav__list" data-md-scrollfix>
2692
+
2693
+
2694
+
2695
+
2696
+
2697
+
2698
+
2699
+
2700
+
2701
+ <li class="md-nav__item">
2702
+ <a href="../plugins/report-tests-pretty-stdout.html" class="md-nav__link">
2703
+
2704
+
2705
+
2706
+ <span class="md-ellipsis">
2707
+
2708
+
2709
+ Test Report — Pretty
2710
+
2711
+
2712
+
2713
+ </span>
2714
+
2715
+
2716
+
2717
+ </a>
2718
+ </li>
2719
+
2720
+
2721
+
2722
+
2723
+
2724
+
2725
+
2726
+
2727
+
2728
+
2729
+ <li class="md-nav__item">
2730
+ <a href="../plugins/report-tests-ide-stdout.html" class="md-nav__link">
2731
+
2732
+
2733
+
2734
+ <span class="md-ellipsis">
2735
+
2736
+
2737
+ Test Report — IDE
2738
+
2739
+
2740
+
2741
+ </span>
2742
+
2743
+
2744
+
2745
+ </a>
2746
+ </li>
2747
+
2748
+
2749
+
2750
+
2751
+
2752
+
2753
+
2754
+
2755
+
2756
+
2757
+ <li class="md-nav__item">
2758
+ <a href="../plugins/report-tests-gtestlike-stdout.html" class="md-nav__link">
2759
+
2760
+
2761
+
2762
+ <span class="md-ellipsis">
2763
+
2764
+
2765
+ Test Report — GTest-like
2766
+
2767
+
2768
+
2769
+ </span>
2770
+
2771
+
2772
+
2773
+ </a>
2774
+ </li>
2775
+
2776
+
2777
+
2778
+
2779
+
2780
+
2781
+
2782
+
2783
+
2784
+
2785
+ <li class="md-nav__item">
2786
+ <a href="../plugins/report-tests-teamcity-stdout.html" class="md-nav__link">
2787
+
2788
+
2789
+
2790
+ <span class="md-ellipsis">
2791
+
2792
+
2793
+ Test Report — TeamCity
2794
+
2795
+
2796
+
2797
+ </span>
2798
+
2799
+
2800
+
2801
+ </a>
2802
+ </li>
2803
+
2804
+
2805
+
2806
+
2807
+
2808
+
2809
+
2810
+
2811
+
2812
+
2813
+ <li class="md-nav__item">
2814
+ <a href="../plugins/report-tests-log-factory.html" class="md-nav__link">
2815
+
2816
+
2817
+
2818
+ <span class="md-ellipsis">
2819
+
2820
+
2821
+ Test Report Log Factory
2822
+
2823
+
2824
+
2825
+ </span>
2826
+
2827
+
2828
+
2829
+ </a>
2830
+ </li>
2831
+
2832
+
2833
+
2834
+
2835
+
2836
+
2837
+
2838
+
2839
+
2840
+
2841
+ <li class="md-nav__item">
2842
+ <a href="../plugins/report-tests-raw-output-log.html" class="md-nav__link">
2843
+
2844
+
2845
+
2846
+ <span class="md-ellipsis">
2847
+
2848
+
2849
+ Test Report — Raw Output
2850
+
2851
+
2852
+
2853
+ </span>
2854
+
2855
+
2856
+
2857
+ </a>
2858
+ </li>
2859
+
2860
+
2861
+
2862
+
2863
+
2864
+
2865
+
2866
+
2867
+
2868
+
2869
+ <li class="md-nav__item">
2870
+ <a href="../plugins/report-build-warnings-log.html" class="md-nav__link">
2871
+
2872
+
2873
+
2874
+ <span class="md-ellipsis">
2875
+
2876
+
2877
+ Build Warnings Log
2878
+
2879
+
2880
+
2881
+ </span>
2882
+
2883
+
2884
+
2885
+ </a>
2886
+ </li>
2887
+
2888
+
2889
+
2890
+
2891
+
2892
+
2893
+
2894
+
2895
+
2896
+
2897
+
2898
+
2899
+
2900
+
2901
+
2902
+
2903
+
2904
+
2905
+
2906
+
2907
+
2908
+
2909
+
2910
+
2911
+
2912
+
2913
+
2914
+
2915
+
2916
+
2917
+
2918
+
2919
+
2920
+
2921
+
2922
+
2923
+
2924
+
2925
+
2926
+
2927
+
2928
+
2929
+ <li class="md-nav__item md-nav__item--nested">
2930
+
2931
+
2932
+
2933
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_9" >
2934
+
2935
+
2936
+ <div class="md-nav__link md-nav__container">
2937
+ <a href="../plugins/gcov/index.html" class="md-nav__link ">
2938
+
2939
+
2940
+
2941
+ <span class="md-ellipsis">
2942
+
2943
+
2944
+ GCov (Coverage)
2945
+
2946
+
2947
+
2948
+ </span>
2949
+
2950
+
2951
+
2952
+ </a>
2953
+
2954
+
2955
+ <label class="md-nav__link " for="__nav_6_9" id="__nav_6_9_label" tabindex="0">
2956
+ <span class="md-nav__icon md-icon"></span>
2957
+ </label>
2958
+
2959
+ </div>
2960
+
2961
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_9_label" aria-expanded="false">
2962
+ <label class="md-nav__title" for="__nav_6_9">
2963
+ <span class="md-nav__icon md-icon"></span>
2964
+
2965
+
2966
+ GCov (Coverage)
2967
+
2968
+
2969
+ </label>
2970
+ <ul class="md-nav__list" data-md-scrollfix>
2971
+
2972
+
2973
+
2974
+
2975
+
2976
+
2977
+
2978
+
2979
+
2980
+ <li class="md-nav__item">
2981
+ <a href="../plugins/gcov/overview.html" class="md-nav__link">
2982
+
2983
+
2984
+
2985
+ <span class="md-ellipsis">
2986
+
2987
+
2988
+ Overview
2989
+
2990
+
2991
+
2992
+ </span>
2993
+
2994
+
2995
+
2996
+ </a>
2997
+ </li>
2998
+
2999
+
3000
+
3001
+
3002
+
3003
+
3004
+
3005
+
3006
+
3007
+
3008
+ <li class="md-nav__item">
3009
+ <a href="../plugins/gcov/tool-versions.html" class="md-nav__link">
3010
+
3011
+
3012
+
3013
+ <span class="md-ellipsis">
3014
+
3015
+
3016
+ Tool Versions
3017
+
3018
+
3019
+
3020
+ </span>
3021
+
3022
+
3023
+
3024
+ </a>
3025
+ </li>
3026
+
3027
+
3028
+
3029
+
3030
+
3031
+
3032
+
3033
+
3034
+
3035
+
3036
+ <li class="md-nav__item">
3037
+ <a href="../plugins/gcov/setup.html" class="md-nav__link">
3038
+
3039
+
3040
+
3041
+ <span class="md-ellipsis">
3042
+
3043
+
3044
+ Set Up & Configuration
3045
+
3046
+
3047
+
3048
+ </span>
3049
+
3050
+
3051
+
3052
+ </a>
3053
+ </li>
3054
+
3055
+
3056
+
3057
+
3058
+
3059
+
3060
+
3061
+
3062
+
3063
+
3064
+ <li class="md-nav__item">
3065
+ <a href="../plugins/gcov/examples.html" class="md-nav__link">
3066
+
3067
+
3068
+
3069
+ <span class="md-ellipsis">
3070
+
3071
+
3072
+ Example Usage
3073
+
3074
+
3075
+
3076
+ </span>
3077
+
3078
+
3079
+
3080
+ </a>
3081
+ </li>
3082
+
3083
+
3084
+
3085
+
3086
+
3087
+
3088
+
3089
+
3090
+
3091
+
3092
+ <li class="md-nav__item">
3093
+ <a href="../plugins/gcov/reporting.html" class="md-nav__link">
3094
+
3095
+
3096
+
3097
+ <span class="md-ellipsis">
3098
+
3099
+
3100
+ Reporting Configuration
3101
+
3102
+
3103
+
3104
+ </span>
3105
+
3106
+
3107
+
3108
+ </a>
3109
+ </li>
3110
+
3111
+
3112
+
3113
+
3114
+
3115
+
3116
+
3117
+
3118
+
3119
+
3120
+ <li class="md-nav__item">
3121
+ <a href="../plugins/gcov/gcovr.html" class="md-nav__link">
3122
+
3123
+
3124
+
3125
+ <span class="md-ellipsis">
3126
+
3127
+
3128
+ GCovr Configuration
3129
+
3130
+
3131
+
3132
+ </span>
3133
+
3134
+
3135
+
3136
+ </a>
3137
+ </li>
3138
+
3139
+
3140
+
3141
+
3142
+
3143
+
3144
+
3145
+
3146
+
3147
+
3148
+ <li class="md-nav__item">
3149
+ <a href="../plugins/gcov/reportgenerator.html" class="md-nav__link">
3150
+
3151
+
3152
+
3153
+ <span class="md-ellipsis">
3154
+
3155
+
3156
+ ReportGenerator Configuration
3157
+
3158
+
3159
+
3160
+ </span>
3161
+
3162
+
3163
+
3164
+ </a>
3165
+ </li>
3166
+
3167
+
3168
+
3169
+
3170
+
3171
+
3172
+
3173
+
3174
+
3175
+
3176
+ <li class="md-nav__item">
3177
+ <a href="../plugins/gcov/troubleshooting.html" class="md-nav__link">
3178
+
3179
+
3180
+
3181
+ <span class="md-ellipsis">
3182
+
3183
+
3184
+ Advanced & Troubleshooting
3185
+
3186
+
3187
+
3188
+ </span>
3189
+
3190
+
3191
+
3192
+ </a>
3193
+ </li>
3194
+
3195
+
3196
+
3197
+
3198
+ </ul>
3199
+ </nav>
3200
+
3201
+ </li>
3202
+
3203
+
3204
+
3205
+
3206
+
3207
+
3208
+
3209
+
3210
+
3211
+
3212
+ <li class="md-nav__item">
3213
+ <a href="../plugins/cppcheck.html" class="md-nav__link">
3214
+
3215
+
3216
+
3217
+ <span class="md-ellipsis">
3218
+
3219
+
3220
+ Cppcheck (Static Analysis)
3221
+
3222
+
3223
+
3224
+ </span>
3225
+
3226
+
3227
+
3228
+ </a>
3229
+ </li>
3230
+
3231
+
3232
+
3233
+
3234
+
3235
+
3236
+
3237
+
3238
+
3239
+
3240
+ <li class="md-nav__item">
3241
+ <a href="../plugins/valgrind.html" class="md-nav__link">
3242
+
3243
+
3244
+
3245
+ <span class="md-ellipsis">
3246
+
3247
+
3248
+ Valgrind (Memory Analysis)
3249
+
3250
+
3251
+
3252
+ </span>
3253
+
3254
+
3255
+
3256
+ </a>
3257
+ </li>
3258
+
3259
+
3260
+
3261
+
3262
+
3263
+
3264
+
3265
+
3266
+
3267
+
3268
+ <li class="md-nav__item">
3269
+ <a href="../plugins/bullseye.html" class="md-nav__link">
3270
+
3271
+
3272
+
3273
+ <span class="md-ellipsis">
3274
+
3275
+
3276
+ Bullseye (Coverage)
3277
+
3278
+
3279
+
3280
+ </span>
3281
+
3282
+
3283
+
3284
+ </a>
3285
+ </li>
3286
+
3287
+
3288
+
3289
+
3290
+
3291
+
3292
+
3293
+
3294
+
3295
+
3296
+ <li class="md-nav__item">
3297
+ <a href="../plugins/fff.html" class="md-nav__link">
3298
+
3299
+
3300
+
3301
+ <span class="md-ellipsis">
3302
+
3303
+
3304
+ FFF (Fake Functions)
3305
+
3306
+
3307
+
3308
+ </span>
3309
+
3310
+
3311
+
3312
+ </a>
3313
+ </li>
3314
+
3315
+
3316
+
3317
+
3318
+
3319
+
3320
+
3321
+
3322
+
3323
+
3324
+ <li class="md-nav__item">
3325
+ <a href="../plugins/command-hooks.html" class="md-nav__link">
3326
+
3327
+
3328
+
3329
+ <span class="md-ellipsis">
3330
+
3331
+
3332
+ Command Hooks
3333
+
3334
+
3335
+
3336
+ </span>
3337
+
3338
+
3339
+
3340
+ </a>
3341
+ </li>
3342
+
3343
+
3344
+
3345
+
3346
+
3347
+
3348
+
3349
+
3350
+
3351
+
3352
+ <li class="md-nav__item">
3353
+ <a href="../plugins/compile-commands-json-db.html" class="md-nav__link">
3354
+
3355
+
3356
+
3357
+ <span class="md-ellipsis">
3358
+
3359
+
3360
+ Compile Commands JSON DB
3361
+
3362
+
3363
+
3364
+ </span>
3365
+
3366
+
3367
+
3368
+ </a>
3369
+ </li>
3370
+
3371
+
3372
+
3373
+
3374
+
3375
+
3376
+
3377
+
3378
+
3379
+
3380
+ <li class="md-nav__item">
3381
+ <a href="../plugins/beep.html" class="md-nav__link">
3382
+
3383
+
3384
+
3385
+ <span class="md-ellipsis">
3386
+
3387
+
3388
+ Beep
3389
+
3390
+
3391
+
3392
+ </span>
3393
+
3394
+
3395
+
3396
+ </a>
3397
+ </li>
3398
+
3399
+
3400
+
3401
+
3402
+
3403
+
3404
+
3405
+
3406
+
3407
+
3408
+ <li class="md-nav__item">
3409
+ <a href="../plugins/module-generator.html" class="md-nav__link">
3410
+
3411
+
3412
+
3413
+ <span class="md-ellipsis">
3414
+
3415
+
3416
+ Module Generator
3417
+
3418
+
3419
+
3420
+ </span>
3421
+
3422
+
3423
+
3424
+ </a>
3425
+ </li>
3426
+
3427
+
3428
+
3429
+
3430
+
3431
+
3432
+
3433
+
3434
+
3435
+
3436
+ <li class="md-nav__item">
3437
+ <a href="../plugins/dependencies.html" class="md-nav__link">
3438
+
3439
+
3440
+
3441
+ <span class="md-ellipsis">
3442
+
3443
+
3444
+ Dependencies
3445
+
3446
+
3447
+
3448
+ </span>
3449
+
3450
+
3451
+
3452
+ </a>
3453
+ </li>
3454
+
3455
+
3456
+
3457
+
3458
+ </ul>
3459
+ </nav>
3460
+
3461
+ </li>
3462
+
3463
+
3464
+
3465
+
3466
+
3467
+
3468
+
3469
+
3470
+
3471
+
3472
+
3473
+
3474
+
3475
+
3476
+
3477
+
3478
+
3479
+
3480
+
3481
+
3482
+
3483
+
3484
+
3485
+
3486
+
3487
+
3488
+
3489
+
3490
+
3491
+
3492
+
3493
+
3494
+
3495
+
3496
+
3497
+
3498
+
3499
+
3500
+
3501
+ <li class="md-nav__item md-nav__item--nested">
3502
+
3503
+
3504
+
3505
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
3506
+
3507
+
3508
+ <div class="md-nav__link md-nav__container">
3509
+ <a href="../reference/index.html" class="md-nav__link ">
3510
+
3511
+
3512
+
3513
+ <span class="md-ellipsis">
3514
+
3515
+
3516
+ Reference
3517
+
3518
+
3519
+
3520
+ </span>
3521
+
3522
+
3523
+
3524
+ </a>
3525
+
3526
+
3527
+ <label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="0">
3528
+ <span class="md-nav__icon md-icon"></span>
3529
+ </label>
3530
+
3531
+ </div>
3532
+
3533
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
3534
+ <label class="md-nav__title" for="__nav_7">
3535
+ <span class="md-nav__icon md-icon"></span>
3536
+
3537
+
3538
+ Reference
3539
+
3540
+
3541
+ </label>
3542
+ <ul class="md-nav__list" data-md-scrollfix>
3543
+
3544
+
3545
+
3546
+
3547
+
3548
+
3549
+
3550
+
3551
+
3552
+ <li class="md-nav__item">
3553
+ <a href="../reference/command-line.html" class="md-nav__link">
3554
+
3555
+
3556
+
3557
+ <span class="md-ellipsis">
3558
+
3559
+
3560
+ Command Line
3561
+
3562
+
3563
+
3564
+ </span>
3565
+
3566
+
3567
+
3568
+ </a>
3569
+ </li>
3570
+
3571
+
3572
+
3573
+
3574
+
3575
+
3576
+
3577
+
3578
+
3579
+
3580
+ <li class="md-nav__item">
3581
+ <a href="../reference/project-configuration.html" class="md-nav__link">
3582
+
3583
+
3584
+
3585
+ <span class="md-ellipsis">
3586
+
3587
+
3588
+ Project Configuration
3589
+
3590
+
3591
+
3592
+ </span>
3593
+
3594
+
3595
+
3596
+ </a>
3597
+ </li>
3598
+
3599
+
3600
+
3601
+
3602
+
3603
+
3604
+
3605
+
3606
+
3607
+
3608
+ <li class="md-nav__item">
3609
+ <a href="../reference/build-directives.html" class="md-nav__link">
3610
+
3611
+
3612
+
3613
+ <span class="md-ellipsis">
3614
+
3615
+
3616
+ Test Build Directives
3617
+
3618
+
3619
+
3620
+ </span>
3621
+
3622
+
3623
+
3624
+ </a>
3625
+ </li>
3626
+
3627
+
3628
+
3629
+
3630
+
3631
+
3632
+
3633
+
3634
+
3635
+
3636
+ <li class="md-nav__item">
3637
+ <a href="../reference/partials-macros.html" class="md-nav__link">
3638
+
3639
+
3640
+
3641
+ <span class="md-ellipsis">
3642
+
3643
+
3644
+ Partials Macros
3645
+
3646
+
3647
+
3648
+ </span>
3649
+
3650
+
3651
+
3652
+ </a>
3653
+ </li>
3654
+
3655
+
3656
+
3657
+
3658
+
3659
+
3660
+
3661
+
3662
+
3663
+
3664
+ <li class="md-nav__item">
3665
+ <a href="../reference/environment-vars.html" class="md-nav__link">
3666
+
3667
+
3668
+
3669
+ <span class="md-ellipsis">
3670
+
3671
+
3672
+ Environment Variables
3673
+
3674
+
3675
+
3676
+ </span>
3677
+
3678
+
3679
+
3680
+ </a>
3681
+ </li>
3682
+
3683
+
3684
+
3685
+
3686
+
3687
+
3688
+
3689
+
3690
+
3691
+
3692
+ <li class="md-nav__item">
3693
+ <a href="../reference/gcov-plugin.html" class="md-nav__link">
3694
+
3695
+
3696
+
3697
+ <span class="md-ellipsis">
3698
+
3699
+
3700
+ Coverage Reporting
3701
+
3702
+
3703
+
3704
+ </span>
3705
+
3706
+
3707
+
3708
+ </a>
3709
+ </li>
3710
+
3711
+
3712
+
3713
+
3714
+
3715
+
3716
+
3717
+
3718
+
3719
+
3720
+ <li class="md-nav__item">
3721
+ <a href="../reference/global-collections.html" class="md-nav__link">
3722
+
3723
+
3724
+
3725
+ <span class="md-ellipsis">
3726
+
3727
+
3728
+ Global Collections
3729
+
3730
+
3731
+
3732
+ </span>
3733
+
3734
+
3735
+
3736
+ </a>
3737
+ </li>
3738
+
3739
+
3740
+
3741
+
3742
+ </ul>
3743
+ </nav>
3744
+
3745
+ </li>
3746
+
3747
+
3748
+
3749
+
3750
+
3751
+
3752
+
3753
+
3754
+
3755
+
3756
+
3757
+
3758
+
3759
+
3760
+
3761
+
3762
+
3763
+
3764
+
3765
+
3766
+
3767
+
3768
+
3769
+
3770
+
3771
+ <li class="md-nav__item md-nav__item--nested">
3772
+
3773
+
3774
+
3775
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
3776
+
3777
+
3778
+ <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
3779
+
3780
+
3781
+
3782
+ <span class="md-ellipsis">
3783
+
3784
+
3785
+ Releases
3786
+
3787
+
3788
+
3789
+ </span>
3790
+
3791
+
3792
+
3793
+ <span class="md-nav__icon md-icon"></span>
3794
+ </label>
3795
+
3796
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
3797
+ <label class="md-nav__title" for="__nav_8">
3798
+ <span class="md-nav__icon md-icon"></span>
3799
+
3800
+
3801
+ Releases
3802
+
3803
+
3804
+ </label>
3805
+ <ul class="md-nav__list" data-md-scrollfix>
3806
+
3807
+
3808
+
3809
+
3810
+
3811
+
3812
+
3813
+ <li class="md-nav__item">
3814
+ <a href="../project/release-history.html" class="md-nav__link">
3815
+
3816
+
3817
+
3818
+ <span class="md-ellipsis">
3819
+
3820
+
3821
+ History Documents
3822
+
3823
+
3824
+
3825
+ </span>
3826
+
3827
+
3828
+
3829
+ </a>
3830
+ </li>
3831
+
3832
+
3833
+
3834
+
3835
+
3836
+
3837
+
3838
+
3839
+
3840
+
3841
+ <li class="md-nav__item">
3842
+ <a href="../project/upgrade.html" class="md-nav__link">
3843
+
3844
+
3845
+
3846
+ <span class="md-ellipsis">
3847
+
3848
+
3849
+ Upgrading
3850
+
3851
+
3852
+
3853
+ </span>
3854
+
3855
+
3856
+
3857
+ </a>
3858
+ </li>
3859
+
3860
+
3861
+
3862
+
3863
+ </ul>
3864
+ </nav>
3865
+
3866
+ </li>
3867
+
3868
+
3869
+
3870
+
3871
+
3872
+
3873
+
3874
+
3875
+
3876
+ <li class="md-nav__item">
3877
+ <a href="../help.html" class="md-nav__link">
3878
+
3879
+
3880
+
3881
+ <span class="md-ellipsis">
3882
+
3883
+
3884
+ Help
3885
+
3886
+
3887
+
3888
+ </span>
3889
+
3890
+
3891
+
3892
+ </a>
3893
+ </li>
3894
+
3895
+
3896
+
3897
+
3898
+
3899
+
3900
+
3901
+
3902
+
3903
+
3904
+
3905
+
3906
+
3907
+
3908
+
3909
+
3910
+
3911
+
3912
+
3913
+
3914
+
3915
+
3916
+
3917
+
3918
+
3919
+
3920
+
3921
+
3922
+
3923
+ <li class="md-nav__item md-nav__item--nested">
3924
+
3925
+
3926
+
3927
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
3928
+
3929
+
3930
+ <div class="md-nav__link md-nav__container">
3931
+ <a href="../development/index.html" class="md-nav__link ">
3932
+
3933
+
3934
+
3935
+ <span class="md-ellipsis">
3936
+
3937
+
3938
+ Development
3939
+
3940
+
3941
+
3942
+ </span>
3943
+
3944
+
3945
+
3946
+ </a>
3947
+
3948
+
3949
+ <label class="md-nav__link " for="__nav_10" id="__nav_10_label" tabindex="0">
3950
+ <span class="md-nav__icon md-icon"></span>
3951
+ </label>
3952
+
3953
+ </div>
3954
+
3955
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
3956
+ <label class="md-nav__title" for="__nav_10">
3957
+ <span class="md-nav__icon md-icon"></span>
3958
+
3959
+
3960
+ Development
3961
+
3962
+
3963
+ </label>
3964
+ <ul class="md-nav__list" data-md-scrollfix>
3965
+
3966
+
3967
+
3968
+
3969
+
3970
+
3971
+
3972
+
3973
+
3974
+ <li class="md-nav__item">
3975
+ <a href="../development/workflow.html" class="md-nav__link">
3976
+
3977
+
3978
+
3979
+ <span class="md-ellipsis">
3980
+
3981
+
3982
+ Development Workflow
3983
+
3984
+
3985
+
3986
+ </span>
3987
+
3988
+
3989
+
3990
+ </a>
3991
+ </li>
3992
+
3993
+
3994
+
3995
+
3996
+
3997
+
3998
+
3999
+
4000
+
4001
+
4002
+
4003
+
4004
+
4005
+
4006
+
4007
+
4008
+
4009
+
4010
+
4011
+
4012
+
4013
+
4014
+
4015
+
4016
+
4017
+
4018
+
4019
+
4020
+
4021
+
4022
+
4023
+
4024
+ <li class="md-nav__item md-nav__item--nested">
4025
+
4026
+
4027
+
4028
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_3" >
4029
+
4030
+
4031
+ <div class="md-nav__link md-nav__container">
4032
+ <a href="../development/plugins/index.html" class="md-nav__link ">
4033
+
4034
+
4035
+
4036
+ <span class="md-ellipsis">
4037
+
4038
+
4039
+ Plugin Development
4040
+
4041
+
4042
+
4043
+ </span>
4044
+
4045
+
4046
+
4047
+ </a>
4048
+
4049
+
4050
+ <label class="md-nav__link " for="__nav_10_3" id="__nav_10_3_label" tabindex="0">
4051
+ <span class="md-nav__icon md-icon"></span>
4052
+ </label>
4053
+
4054
+ </div>
4055
+
4056
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_3_label" aria-expanded="false">
4057
+ <label class="md-nav__title" for="__nav_10_3">
4058
+ <span class="md-nav__icon md-icon"></span>
4059
+
4060
+
4061
+ Plugin Development
4062
+
4063
+
4064
+ </label>
4065
+ <ul class="md-nav__list" data-md-scrollfix>
4066
+
4067
+
4068
+
4069
+
4070
+
4071
+
4072
+
4073
+
4074
+
4075
+ <li class="md-nav__item">
4076
+ <a href="../development/plugins/configuration.html" class="md-nav__link">
4077
+
4078
+
4079
+
4080
+ <span class="md-ellipsis">
4081
+
4082
+
4083
+ Configuration Plugin
4084
+
4085
+
4086
+
4087
+ </span>
4088
+
4089
+
4090
+
4091
+ </a>
4092
+ </li>
4093
+
4094
+
4095
+
4096
+
4097
+
4098
+
4099
+
4100
+
4101
+
4102
+
4103
+ <li class="md-nav__item">
4104
+ <a href="../development/plugins/plugin-subclass.html" class="md-nav__link">
4105
+
4106
+
4107
+
4108
+ <span class="md-ellipsis">
4109
+
4110
+
4111
+ Plugin Subclass
4112
+
4113
+
4114
+
4115
+ </span>
4116
+
4117
+
4118
+
4119
+ </a>
4120
+ </li>
4121
+
4122
+
4123
+
4124
+
4125
+
4126
+
4127
+
4128
+
4129
+
4130
+
4131
+ <li class="md-nav__item">
4132
+ <a href="../development/plugins/rake-tasks.html" class="md-nav__link">
4133
+
4134
+
4135
+
4136
+ <span class="md-ellipsis">
4137
+
4138
+
4139
+ Rake Task Plugin
4140
+
4141
+
4142
+
4143
+ </span>
4144
+
4145
+
4146
+
4147
+ </a>
4148
+ </li>
4149
+
4150
+
4151
+
4152
+
4153
+ </ul>
4154
+ </nav>
4155
+
4156
+ </li>
4157
+
4158
+
4159
+
4160
+
4161
+ </ul>
4162
+ </nav>
4163
+
4164
+ </li>
4165
+
4166
+
4167
+
4168
+ </ul>
4169
+ </nav>
4170
+ </div>
4171
+ </div>
4172
+ </div>
4173
+
4174
+
4175
+
4176
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
4177
+ <div class="md-sidebar__scrollwrap">
4178
+ <div class="md-sidebar__inner">
4179
+
4180
+
4181
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
4182
+
4183
+
4184
+
4185
+
4186
+
4187
+
4188
+ <label class="md-nav__title" for="__toc">
4189
+ <span class="md-nav__icon md-icon"></span>
4190
+ Table of contents
4191
+ </label>
4192
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
4193
+
4194
+ <li class="md-nav__item">
4195
+ <a href="#designing-for-mixins-merge-rules" class="md-nav__link">
4196
+ <span class="md-ellipsis">
4197
+
4198
+ Designing for Mixins merge rules
4199
+
4200
+ </span>
4201
+ </a>
4202
+
4203
+ <nav class="md-nav" aria-label="Designing for Mixins merge rules">
4204
+ <ul class="md-nav__list">
4205
+
4206
+ <li class="md-nav__item">
4207
+ <a href="#additive-mixin-merges" class="md-nav__link">
4208
+ <span class="md-ellipsis">
4209
+
4210
+ Additive Mixin merges
4211
+
4212
+ </span>
4213
+ </a>
4214
+
4215
+ </li>
4216
+
4217
+ <li class="md-nav__item">
4218
+ <a href="#mixins-deep-merge-rules" class="md-nav__link">
4219
+ <span class="md-ellipsis">
4220
+
4221
+ Mixins deep merge rules
4222
+
4223
+ </span>
4224
+ </a>
4225
+
4226
+ </li>
4227
+
4228
+ </ul>
4229
+ </nav>
4230
+
4231
+ </li>
4232
+
4233
+ <li class="md-nav__item">
4234
+ <a href="#mixins-example" class="md-nav__link">
4235
+ <span class="md-ellipsis">
4236
+
4237
+ Mixins Example
4238
+
4239
+ </span>
4240
+ </a>
4241
+
4242
+ <nav class="md-nav" aria-label="Mixins Example">
4243
+ <ul class="md-nav__list">
4244
+
4245
+ <li class="md-nav__item">
4246
+ <a href="#our-example-scenario" class="md-nav__link">
4247
+ <span class="md-ellipsis">
4248
+
4249
+ Our Example Scenario
4250
+
4251
+ </span>
4252
+ </a>
4253
+
4254
+ </li>
4255
+
4256
+ <li class="md-nav__item">
4257
+ <a href="#example-environment-variable" class="md-nav__link">
4258
+ <span class="md-ellipsis">
4259
+
4260
+ Example environment variable
4261
+
4262
+ </span>
4263
+ </a>
4264
+
4265
+ </li>
4266
+
4267
+ <li class="md-nav__item">
4268
+ <a href="#example-command-line" class="md-nav__link">
4269
+ <span class="md-ellipsis">
4270
+
4271
+ Example command line
4272
+
4273
+ </span>
4274
+ </a>
4275
+
4276
+ </li>
4277
+
4278
+ <li class="md-nav__item">
4279
+ <a href="#example-configuration-files" class="md-nav__link">
4280
+ <span class="md-ellipsis">
4281
+
4282
+ Example Configuration files
4283
+
4284
+ </span>
4285
+ </a>
4286
+
4287
+ </li>
4288
+
4289
+ <li class="md-nav__item">
4290
+ <a href="#example-resulting-configuration" class="md-nav__link">
4291
+ <span class="md-ellipsis">
4292
+
4293
+ Example resulting configuration
4294
+
4295
+ </span>
4296
+ </a>
4297
+
4298
+ </li>
4299
+
4300
+ </ul>
4301
+ </nav>
4302
+
4303
+ </li>
4304
+
4305
+ <li class="md-nav__item">
4306
+ <a href="#options-for-loading-mixins" class="md-nav__link">
4307
+ <span class="md-ellipsis">
4308
+
4309
+ Options for loading Mixins
4310
+
4311
+ </span>
4312
+ </a>
4313
+
4314
+ <nav class="md-nav" aria-label="Options for loading Mixins">
4315
+ <ul class="md-nav__list">
4316
+
4317
+ <li class="md-nav__item">
4318
+ <a href="#-mixin-command-line-flags" class="md-nav__link">
4319
+ <span class="md-ellipsis">
4320
+
4321
+ --mixin command line flags
4322
+
4323
+ </span>
4324
+ </a>
4325
+
4326
+ </li>
4327
+
4328
+ <li class="md-nav__item">
4329
+ <a href="#environment-variables" class="md-nav__link">
4330
+ <span class="md-ellipsis">
4331
+
4332
+ Environment variables
4333
+
4334
+ </span>
4335
+ </a>
4336
+
4337
+ </li>
4338
+
4339
+ <li class="md-nav__item">
4340
+ <a href="#base-configuration-mixins-entries" class="md-nav__link">
4341
+ <span class="md-ellipsis">
4342
+
4343
+ Base configuration :mixins entries
4344
+
4345
+ </span>
4346
+ </a>
4347
+
4348
+ </li>
4349
+
4350
+ </ul>
4351
+ </nav>
4352
+
4353
+ </li>
4354
+
4355
+ <li class="md-nav__item">
4356
+ <a href="#built-in-toolchain-targets" class="md-nav__link">
4357
+ <span class="md-ellipsis">
4358
+
4359
+ Built-in toolchain targets
4360
+
4361
+ </span>
4362
+ </a>
4363
+
4364
+ <nav class="md-nav" aria-label="Built-in toolchain targets">
4365
+ <ul class="md-nav__list">
4366
+
4367
+ <li class="md-nav__item">
4368
+ <a href="#available-built-in-targets" class="md-nav__link">
4369
+ <span class="md-ellipsis">
4370
+
4371
+ Available built-in targets
4372
+
4373
+ </span>
4374
+ </a>
4375
+
4376
+ </li>
4377
+
4378
+ <li class="md-nav__item">
4379
+ <a href="#using-a-built-in-target-as-a-starting-point" class="md-nav__link">
4380
+ <span class="md-ellipsis">
4381
+
4382
+ Using a built-in target as a starting point
4383
+
4384
+ </span>
4385
+ </a>
4386
+
4387
+ </li>
4388
+
4389
+ </ul>
4390
+ </nav>
4391
+
4392
+ </li>
4393
+
4394
+ </ul>
4395
+
4396
+ </nav>
4397
+ </div>
4398
+ </div>
4399
+ </div>
4400
+
4401
+
4402
+
4403
+ <div class="md-content" data-md-component="content">
4404
+
4405
+
4406
+
4407
+
4408
+
4409
+
4410
+
4411
+
4412
+ <nav class="md-path" aria-label="Navigation" >
4413
+ <ol class="md-path__list">
4414
+
4415
+
4416
+
4417
+
4418
+ <li class="md-path__item">
4419
+ <a href="../index.html" class="md-path__link">
4420
+
4421
+ <span class="md-ellipsis">
4422
+ Home
4423
+ </span>
4424
+
4425
+ </a>
4426
+ </li>
4427
+
4428
+
4429
+
4430
+
4431
+
4432
+
4433
+
4434
+
4435
+
4436
+ <li class="md-path__item">
4437
+ <a href="index.html" class="md-path__link">
4438
+
4439
+ <span class="md-ellipsis">
4440
+ Configuration
4441
+ </span>
4442
+
4443
+ </a>
4444
+ </li>
4445
+
4446
+
4447
+
4448
+
4449
+ </ol>
4450
+ </nav>
4451
+
4452
+
4453
+ <article class="md-content__inner md-typeset">
4454
+
4455
+
4456
+
4457
+
4458
+
4459
+
4460
+
4461
+
4462
+ <h1 id="mixins">Mixins</h1>
4463
+ <p>Once you have a <a href="loading.html">base configuration loaded</a>, you may want to
4464
+ modify it for any number of reasons. Some example scenarios:</p>
4465
+ <ul>
4466
+ <li>A single project actually contains mutiple build variations. You would
4467
+ like to maintain a common configuration that is shared among build
4468
+ variations with each build variation’s differences maintained separately.</li>
4469
+ <li>Your repository contains the configuration needed by your Continuous
4470
+ Integration server setup, but this is not fun to run locally. You would
4471
+ like to modify the configuration locally with configuration details
4472
+ maintained by you external to your locally cloned repository.</li>
4473
+ <li>Ceedling’s default <code>gcc</code> tools do not work for your project needs. You
4474
+ would like the complex tooling configurations you most often need to
4475
+ be maintained separately and shared among projects. Ceedling includes
4476
+ a collection of ready-made toolchain target mixins (e.g. <code>clang</code>,
4477
+ <code>iar_arm</code>) that can be selected by name without any extra
4478
+ configuration — see <a href="#built-in-toolchain-targets">Built-in toolchain targets</a>.</li>
4479
+ </ul>
4480
+ <p>Mixins allow you to merge configuration with your project configuration
4481
+ just after the base project file is loaded. The merge is so low-level
4482
+ and generic that you can, in fact, load an empty base configuration
4483
+ and merge in entire project configurations through mixins.</p>
4484
+ <p>Mixins may be merged per a priority scheme:</p>
4485
+ <ol>
4486
+ <li><code>mixins:</code> section in your base configuration file that loads mixin
4487
+ YAML files.</li>
4488
+ <li>Environment variables that point to mixin files.</li>
4489
+ <li>Command line <code>--mixin</code> flags that point to mixin files or provide
4490
+ inline YAML.</li>
4491
+ </ol>
4492
+ <div class="admonition tip">
4493
+ <p class="admonition-title">Tip</p>
4494
+ <p>The <a href="../getting-started/example-projects/cipher-quest.html"><code>cipher_quest</code> example project</a>
4495
+ illustrates the use of Mixins for build variants.</p>
4496
+ </div>
4497
+ <h2 id="designing-for-mixins-merge-rules">Designing for Mixins merge rules</h2>
4498
+ <p>Merging of any sort tends to be hard to do well. It’s tricky at a
4499
+ code-level, yes, but, just as importantly, merging can be hard to grasp in
4500
+ your head.</p>
4501
+ <p>The brief sections that follow provide an overview of our recommended
4502
+ design approach and the merge rules at play.</p>
4503
+ <div class="admonition tip">
4504
+ <p class="admonition-title">Use <code>dumpconfig</code> to debug mixins</p>
4505
+ <p><code>ceedling dumpconfig</code> can be invaluable in developing and troubleshooting
4506
+ your mixins. The <code>dumpconfig</code> application command will load your mixins
4507
+ just as a build would but produce the resulting merged configuration for
4508
+ inspection in a YAML file you specify.</p>
4509
+ </div>
4510
+ <h3 id="additive-mixin-merges">Additive Mixin merges</h3>
4511
+ <p>Generally speaking, the simplest way to conceive of managing your project
4512
+ configuration with mixins is to design for an additive merge. This means
4513
+ each mixin is successively adding something to your base configuration.
4514
+ In certain scenarios it is possible to overwrite configuration values with
4515
+ mixin values (see the rules that follow), but an additive merge is
4516
+ probably easier to understand and create.</p>
4517
+ <p>At a high level, additive merges can be constructed like this:</p>
4518
+ <ol>
4519
+ <li>Plan to add to lists with mixins. Path collections, plugins, and
4520
+ tool flags &amp; compilation symbols are all examples of lists that
4521
+ can be added to. Other lists exist in a project configuration too —
4522
+ many within containing configuration entries. Add paths, plugins, and
4523
+ flags &amp; symbols to your base configuration that are in common to all
4524
+ your buid variations and then customize the lists by adding to them
4525
+ with mixins.</li>
4526
+ <li>Leave entire sections in your base configuration blank and fill them
4527
+ out by merging mixins. With this strategy, you might configure all
4528
+ the basics in a base project configuration but merge into it the
4529
+ path collections, tool configurations, and compilation symbols you need
4530
+ for a specific project.</li>
4531
+ </ol>
4532
+ <h3 id="mixins-deep-merge-rules">Mixins deep merge rules</h3>
4533
+ <p>Mixins are merged in a specific order. See the documentation sections
4534
+ following the examples for details.</p>
4535
+ <p>Smooshing of mixin configurations into the base project configuration
4536
+ follows a few basic rules.</p>
4537
+ <h4 id="new-keyvalue-pair">New key/value pair</h4>
4538
+ <p>If a configuration key/value pair does not already exist at the time
4539
+ of merging, the mixin key/value pair is added to the configuration.</p>
4540
+ <h4 id="existing-container-list-or-hash">Existing container (list or hash)</h4>
4541
+ <p>If a container — e.g. list or hash — already exists at the time of a
4542
+ merge, the contents are <em>combined</em>.</p>
4543
+ <h5 id="hash-merge">Hash merge</h5>
4544
+ <p>A hash (key/value pairs) merge is straightforward. The key/value pairs
4545
+ are intermingled at the same level.</p>
4546
+ <h5 id="list-merge">List merge</h5>
4547
+ <p>A list merge is a bit more complex:</p>
4548
+ <ul>
4549
+ <li>When two lists are merged, the mixin’s entries are placed <em>before</em> the
4550
+ existing list entries. This means higher-priority mixin content appears
4551
+ first in the combined list. For example, if a command line mixin and
4552
+ the base project configuration both add header search paths, the
4553
+ command line mixin paths come first in the resulting merged list. As
4554
+ such, ultimately, the mixin’s paths are searched first.</li>
4555
+ <li>If the existing configuration contains a list but the mixin value is a
4556
+ different type, the mixin is treated as a one-element list and placed
4557
+ before the existing list. The typical case is a list of strings growing
4558
+ with an additional single string.</li>
4559
+ </ul>
4560
+ <div class="admonition note">
4561
+ <p class="admonition-title">An exception to the preceding — tool argument lists</p>
4562
+ <p>In the case of tool argument lists (<code>:tools</code> ↳ <code>&lt;tool name&gt;</code> ↳ <code>:arguments</code>),
4563
+ mixin entries are placed <em>after</em> the existing argument list entries
4564
+ rather than before. Command line tools tend to process arguments
4565
+ left-to-right such that a later occurrence of a flag takes precedence
4566
+ (e.g. <code>-O0</code> after <code>-O2</code> overrides <code>-02</code>). Appending ensures that a
4567
+ higher-priority mixin’s tool arguments override lower-priority
4568
+ arguments by conforming to the typical CLI convention.</p>
4569
+ </div>
4570
+ <h4 id="existing-simple-value-boolean-string-numeric">Existing simple value (boolean, string, numeric)</h4>
4571
+ <p>If a simple value already exists in the configuration at the time of
4572
+ merging, that value is replaced by the mixin value being merged. Because
4573
+ higher-priority mixins are merged last, the last write wins.</p>
4574
+ <div class="admonition info">
4575
+ <p class="admonition-title">Mixin merge order and list content order</p>
4576
+ <p>Because mixin entries are placed <em>before</em> existing list entries,
4577
+ higher-priority mixin content appears first in combined lists. For
4578
+ example, include search paths added by a command line mixin will be
4579
+ searched before those in an environment variable mixin, which will be
4580
+ searched before those in the project configuration file. See the
4581
+ section <a href="../testing-guide/conventions.html#test-build-search-paths">Test build search paths</a>
4582
+ for more.</p>
4583
+ </div>
4584
+ <h2 id="mixins-example">Mixins Example</h2>
4585
+ <h3 id="our-example-scenario">Our Example Scenario</h3>
4586
+ <p>Let’s start with an example that helps explain how mixins are merged.
4587
+ Then, the documentation sections that follow will discuss everything
4588
+ in detail.</p>
4589
+ <p>In this example, we will load a base project configuration and then
4590
+ apply three mixin files using each of the available means:</p>
4591
+ <ol>
4592
+ <li><code>:mixins</code> section in the base project configuration file</li>
4593
+ <li>Envionment variable <code>CEEDLING_MIXIN_1</code></li>
4594
+ <li>Command line <code>--mixin</code> flag</li>
4595
+ </ol>
4596
+ <pre class="mermaid"><code>---
4597
+ title: Example Mixin Merge Pipeline
4598
+ config:
4599
+ flowchart:
4600
+ wrappingWidth: 600
4601
+ ---
4602
+ flowchart TD
4603
+ A["&lt;b&gt;base.yml&lt;/b&gt; — &lt;code&gt;:mixins&lt;/code&gt; section\n&lt;i&gt;support/mixins/enabled.yml&lt;/i&gt;"]
4604
+ B["&lt;b&gt;&lt;code&gt;CEEDLING_MIXIN_1&lt;/code&gt;&lt;/b&gt;\n&lt;i&gt;./env.yml&lt;/i&gt;"]
4605
+ C["&lt;b&gt;&lt;code&gt;--mixin&lt;/code&gt; flag&lt;/b&gt;\n&lt;i&gt;support/mixins/cmdline.yml&lt;/i&gt;"]
4606
+ D["&lt;b&gt;Final configuration&lt;/b&gt;"]
4607
+
4608
+ A --&gt;|"① First — lowest priority"| B
4609
+ B --&gt;|"② Next"| C
4610
+ C --&gt;|"③ Last — highest priority"| D</code></pre>
4611
+ <h3 id="example-environment-variable">Example environment variable</h3>
4612
+ <p><code>CEEDLING_MIXIN_1</code> = <code>./env.yml</code></p>
4613
+ <h3 id="example-command-line">Example command line</h3>
4614
+ <p>An environment variable as the preceding inserts a mixin outside of the
4615
+ command line shown below. The <em>base.yml</em> file is merged with the mixin file
4616
+ <em>enabled.yml</em> (all documented below).</p>
4617
+ <p><code>ceedling --project=base.yml --mixin=support/mixins/cmdline.yml &lt;tasks&gt;</code></p>
4618
+ <div class="admonition tip">
4619
+ <p class="admonition-title">Tip</p>
4620
+ <p>The <code>--mixin</code> flag supports more than filepaths, and the
4621
+ <a href="#-mixin-command-line-flags"><code>--mixin</code> flag</a> can be used multiple times
4622
+ in the same command line to smoosh together multiple mixins.</p>
4623
+ </div>
4624
+ <p>The example command line above with the precending environment variable
4625
+ will produce the following logging output if verbosity is set above NORMAL:</p>
4626
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>🚧 Loaded project configuration from command line argument using base.yml
4627
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> + Merging project configuration mixin using ./enabled.yml
4628
+ <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> + Merging CEEDLING_MIXIN_1 mixin using ./env.yml
4629
+ <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> + Merging command line mixin using support/mixins/cmdline.yml
4630
+ </code></pre></div>
4631
+ <p><em>Notes:</em></p>
4632
+ <ul>
4633
+ <li>The logging output above referencing <em>enabled.yml</em> comes from the
4634
+ <code>:mixins</code> section within the base project configuration file (<em>base.yml</em>)
4635
+ provided below.</li>
4636
+ <li>The resulting configuration in this annotated example is missing settings
4637
+ required by Ceedling. If these examples were to be used in their stripped
4638
+ down form, they would cause a validation build error.</li>
4639
+ </ul>
4640
+ <h3 id="example-configuration-files">Example Configuration files</h3>
4641
+ <h4 id="baseyml-our-base-project-configuration-file"><em>base.yml</em> — Our base project configuration file</h4>
4642
+ <p>Our base project configuration file:</p>
4643
+ <ol>
4644
+ <li>Sets up a configuration file-based mixin. Ceedling will look for a mixin
4645
+ named <em>enabled</em> in the specified load paths. In this simple configuration
4646
+ that means Ceedling looks for and merges <em>support/mixins/enabled.yml</em>.</li>
4647
+ <li>Creates a <code>:project</code> section in our configuration.</li>
4648
+ <li>Creates a <code>:plugins</code> section in our configuration and enables the standard
4649
+ console test report output plugin.</li>
4650
+ </ol>
4651
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="nt">:mixins</span><span class="p">:</span><span class="w"> </span><span class="c1"># `:mixins` section only recognized in base project configuration</span>
4652
+ <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span><span class="w"> </span><span class="c1"># `:enabled` list supports names and filepaths</span>
4653
+ <a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">enabled</span><span class="w"> </span><span class="c1"># Ceedling looks for name as enabled.yml in load paths and merges if found</span>
4654
+ <a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="w"> </span><span class="nt">:load_paths</span><span class="p">:</span>
4655
+ <a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">support/mixins</span>
4656
+ <a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a>
4657
+ <a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="nt">:project</span><span class="p">:</span>
4658
+ <a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="w"> </span><span class="nt">:build_root</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">build/</span>
4659
+ <a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a>
4660
+ <a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="nt">:plugins</span><span class="p">:</span>
4661
+ <a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span>
4662
+ <a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">report_tests_pretty_stdout</span>
4663
+ </code></pre></div>
4664
+ <h4 id="supportmixinscmdlineyml-mixin-via-command-line-filepath-flag"><em>support/mixins/cmdline.yml</em> — Mixin via command line filepath flag</h4>
4665
+ <p>This mixin will merge a <code>:project</code> section with the existing <code>:project</code>
4666
+ section from the base project file per the deep merge rules above.</p>
4667
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="nt">:project</span><span class="p">:</span>
4668
+ <a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span><span class="nt">:use_test_preprocessor</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">:all</span>
4669
+ <a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="w"> </span><span class="nt">:test_file_prefix</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Test</span>
4670
+ </code></pre></div>
4671
+ <h4 id="envyml-mixin-via-environment-variable-filepath"><em>env.yml</em> — Mixin via environment variable filepath</h4>
4672
+ <p>This mixin will merge a <code>:plugins</code> section with the existing <code>:plugins</code>
4673
+ section from the base project file per the deep merge rules (noted
4674
+ after the examples).</p>
4675
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="nt">:plugins</span><span class="p">:</span>
4676
+ <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span>
4677
+ <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">compile_commands_json_db</span>
4678
+ </code></pre></div>
4679
+ <h4 id="supportmixinsenabledyml-mixin-via-base-project-configuration-file-mixins-section"><em>support/mixins/enabled.yml</em> — Mixin via base project configuration file <code>:mixins</code> section</h4>
4680
+ <p>This mixin listed in the base configuration project file will merge
4681
+ <code>:project</code> and <code>:plugins</code> sections with those that already exist from
4682
+ the base configuration plus earlier mixin merges per the deep merge
4683
+ rules (noted after the examples).</p>
4684
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="nt">:project</span><span class="p">:</span>
4685
+ <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span><span class="nt">:use_test_preprocessor</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">:none</span>
4686
+ <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>
4687
+ <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="nt">:plugins</span><span class="p">:</span>
4688
+ <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span>
4689
+ <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gcov</span>
4690
+ </code></pre></div>
4691
+ <h3 id="example-resulting-configuration">Example resulting configuration</h3>
4692
+ <p>Behold the project configuration following mixin merges:</p>
4693
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="nt">:project</span><span class="p">:</span>
4694
+ <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="w"> </span><span class="nt">:build_root</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">build/</span><span class="w"> </span><span class="c1"># From base.yml</span>
4695
+ <a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="w"> </span><span class="nt">:use_test_preprocessor</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">:all</span><span class="w"> </span><span class="c1"># Value in support/mixins/cmdline.yml overwrote value from support/mixins/enabled.yml (cmdline merged last)</span>
4696
+ <a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="w"> </span><span class="nt">:test_file_prefix</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Test</span><span class="w"> </span><span class="c1"># Added to :project from support/mixins/cmdline.yml</span>
4697
+ <a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a>
4698
+ <a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a><span class="nt">:plugins</span><span class="p">:</span>
4699
+ <a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span><span class="w"> </span><span class="c1"># :plugins ↳ :enabled from two mixins merged with original list in base.yml</span>
4700
+ <a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">compile_commands_json_db</span><span class="w"> </span><span class="c1"># From env.yml (prepended before base.yml entry — env.yml is higher priority)</span>
4701
+ <a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gcov</span><span class="w"> </span><span class="c1"># From support/mixins/enabled.yml (prepended before base.yml entry)</span>
4702
+ <a id="__codelineno-5-10" name="__codelineno-5-10" href="#__codelineno-5-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">report_tests_pretty_stdout</span><span class="w"> </span><span class="c1"># From base.yml</span>
4703
+ </code></pre></div>
4704
+ <div class="admonition note">
4705
+ <p class="admonition-title">Note</p>
4706
+ <p>Original <code>:mixins</code> section is removed from resulting config</p>
4707
+ </div>
4708
+ <h2 id="options-for-loading-mixins">Options for loading Mixins</h2>
4709
+ <p>You have three options for telling Ceedling what mixins to load. These
4710
+ options are ordered below according to their precedence. A Mixin higher
4711
+ in the list is merged <strong>later</strong> and therefore its content takes priority
4712
+ over lower-listed options in two ways:</p>
4713
+ <ul>
4714
+ <li><strong>Single values</strong> (a path string, a number, true/false): The higher-priority
4715
+ mixin’s value replaces any lower-priority mixin’s value for the same setting.</li>
4716
+ <li><strong>Lists</strong> (e.g. search paths, plugin names): The higher-priority mixin’s
4717
+ entries appear <strong>before</strong> lower-priority entries in the combined list.
4718
+ For example, if a command line mixin adds the search path <code>vendor/include</code>
4719
+ and the project configuration mixin adds <code>src/include</code>, the merged include
4720
+ path list will be <code>[vendor/include, src/include]</code> — the command line path
4721
+ is searched first.</li>
4722
+ </ul>
4723
+ <p>In addition, options higher in the list force duplicate mixin filepaths in
4724
+ lower-listed options to be ignored (i.e. deduplicated).</p>
4725
+ <p>Unlike project file loading that resolves to a single filepath
4726
+ to load your base configuration, multiple mixins can be specified using
4727
+ any or all of these options.</p>
4728
+ <ol>
4729
+ <li>Command line option flags</li>
4730
+ <li>Environment variables</li>
4731
+ <li>Base project configuration file entries</li>
4732
+ </ol>
4733
+ <h3 id="-mixin-command-line-flags"><code>--mixin</code> command line flags</h3>
4734
+ <p>As already discussed above, many of Ceedling’s application commands
4735
+ include an optional <code>--project</code> flag. Most of these same commands
4736
+ also recognize optional <code>--mixin</code> flags.</p>
4737
+ <p>Note that <code>--mixin</code> can be used multiple times in a single command line
4738
+ and the rightmost instance is merged last (i.e. highest priority).</p>
4739
+ <p>When provided, Ceedling merges the specified mixin into the base
4740
+ project configuration. A <code>--mixin</code> value accepts three forms
4741
+ distinguished by an optional sigil prefix:</p>
4742
+ <div class="admonition note">
4743
+ <p class="admonition-title">Sigil definition</p>
4744
+ <p>A <em>sigil</em> is a non-alphabetic symbol (e.g. <code>$</code>, <code>@</code>, <code>%</code>) that
4745
+ serves as a visual prefix or suffix that instantly tells an
4746
+ interpreter and the developer a data type, scope, or structure.</p>
4747
+ </div>
4748
+ <h4 id="file-or-named-mixin-optional-sigil">File or named mixin (optional <code>@</code> sigil)</h4>
4749
+ <p>The value is treated as a file path or named mixin lookup. Two
4750
+ equivalent syntaxes are accepted:</p>
4751
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>--mixin<span class="w"> </span>my_compiler<span class="w"> </span><span class="c1"># simple name lookup (no sigil)</span>
4752
+ <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a>--mixin<span class="w"> </span>@my_compiler<span class="w"> </span><span class="c1"># simple name lookup (no sigil)</span>
4753
+ <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a>--mixin<span class="w"> </span>bar/mixin.yaml<span class="w"> </span><span class="c1"># filepath (no sigil)</span>
4754
+ <a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a>--mixin<span class="w"> </span>@bar/mixin.yaml<span class="w"> </span><span class="c1"># filepath (explicit @ sigil — same result)</span>
4755
+ </code></pre></div>
4756
+ <ul>
4757
+ <li>A <strong>simple name</strong> (no extension, no path separator) is looked up
4758
+ among Ceedling’s configured mixin load paths.</li>
4759
+ <li>A <strong>filename or filepath</strong> (with extension or path separator) loads
4760
+ the specified YAML file directly.</li>
4761
+ <li>The <code>@</code> sigil is optional and makes the file/name intent explicit;
4762
+ it is otherwise identical to providing the value without a sigil
4763
+ (primarily for backwards compatibility pre-inline YAML).</li>
4764
+ </ul>
4765
+ <h4 id="inline-yaml-sigil">Inline YAML (<code>=</code> sigil)</h4>
4766
+ <p>The value is treated as a YAML string merged directly into
4767
+ configuration — no file needed.</p>
4768
+ <div class="admonition note">
4769
+ <p class="admonition-title">Flow-style versus block YAML</p>
4770
+ <p>Ceedling can parse both flow-style and block YAML in the
4771
+ configuration files it loads. The inline YAML command line
4772
+ option must use <a href="https://www.educative.io/answers/what-is-flow-style-in-yaml">flow-style</a>.
4773
+ Block-style YAML supports a leading optional colon for key names,
4774
+ and Ceedling uses this internally. Flow-style does not support
4775
+ this YAML notation style. So, <code>:foo: 'bar'</code> is illegal in
4776
+ inline YAML; <code>foo: 'bar'</code> must be used instead.</p>
4777
+ </div>
4778
+ <p>Prefix the value with <code>=</code> and quote the argument to protect
4779
+ YAML special characters (colons, brackets, spaces) from shell
4780
+ interpretation:</p>
4781
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>--mixin<span class="w"> </span><span class="s2">&quot;=defines: {release: [&#39;MY_SYMBOL&#39;]}&quot;</span>
4782
+ </code></pre></div>
4783
+ <p>The YAML content must evaluate to a Hash at the top level (matching
4784
+ the structure of a project configuration file). Arrays, scalars, and
4785
+ empty strings are rejected with an error.</p>
4786
+ <h4 id="combining-forms">Combining forms</h4>
4787
+ <p>All three forms can be mixed freely in a single command line and are
4788
+ processed in the order they appear, left-to-right:</p>
4789
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>ceedling<span class="w"> </span>release<span class="w"> </span><span class="se">\</span>
4790
+ <a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="w"> </span>--mixin<span class="w"> </span>@mixins/base_compiler.yml<span class="w"> </span><span class="se">\</span>
4791
+ <a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a><span class="w"> </span>--mixin<span class="w"> </span><span class="s2">&quot;=defines: {release: [&#39;CIPHER_ROT13&#39;]}&quot;</span><span class="w"> </span><span class="se">\</span>
4792
+ <a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a><span class="w"> </span>--mixin<span class="w"> </span>ci_overrides
4793
+ </code></pre></div>
4794
+ <p>In this example: <code>mixins/base_compiler.yml</code> is merged first as a
4795
+ loaded file, then the inline YAML, and finally a <code>ci_overrides</code> file
4796
+ found among mixin paths specified in the base configuration file
4797
+ (not shown).</p>
4798
+ <p>Later entries (on the right side of a command line) win on conflicts,
4799
+ so the content of <code>ci_overrides.yml</code> has the highest priority.</p>
4800
+ <p>Simple mixin names are resolved by searching load paths in this order:</p>
4801
+ <ol>
4802
+ <li>User-configured <code>:load_paths</code> from the base project file (if any)</li>
4803
+ <li>The directory containing the base project file</li>
4804
+ <li>Ceedling's built-in Unity toolchain targets</li>
4805
+ </ol>
4806
+ <p>User-specified load paths are configured through the <code>:mixins</code> section
4807
+ of the base project file. See the <a href="#base-configuration-mixins-entries">documentation for the <code>:mixins</code>
4808
+ section of your project configuration</a> for
4809
+ more details. See <a href="#built-in-toolchain-targets">Built-in toolchain targets</a>
4810
+ for details on what names are available without any load path configuration.</p>
4811
+ <p>Filepaths may be relative (to the working directory) or absolute.</p>
4812
+ <h4 id="error-behavior">Error behavior</h4>
4813
+ <p>If the <code>--mixin</code> filename or filepath does not exist, Ceedling
4814
+ terminates with an error. If Ceedling cannot find a mixin name in
4815
+ any load paths, it terminates with an error. If an inline YAML
4816
+ string cannot be parsed or does not evaluate to a Hash, Ceedling
4817
+ terminates with an error.</p>
4818
+ <h3 id="environment-variables">Environment variables</h3>
4819
+ <p>Mixins can also be loaded through environment variables. Ceedling
4820
+ recognizes environment variables with a naming scheme of
4821
+ <code>CEEDLING_MIXIN_#</code>, where <code>#</code> is any number greater than 0.</p>
4822
+ <p>Precedence among the environment variables follows a simple ascending
4823
+ sort of the trailing numeric value in the environment variable name.
4824
+ Lower-numbered variables are merged first (lower priority); higher-numbered
4825
+ variables are merged last (higher priority). For example,
4826
+ <code>CEEDLING_MIXIN_5</code> is merged before <code>CEEDLING_MIXIN_99</code>, so
4827
+ <code>CEEDLING_MIXIN_99</code> takes priority.</p>
4828
+ <p>Mixin environment variables only hold filepaths. Filepaths may be
4829
+ relative (in relation to the working directory) or absolute.</p>
4830
+ <p>If the filepath specified by an environment variable does not exist,
4831
+ Ceedling terminates with an error.</p>
4832
+ <h3 id="base-configuration-mixins-entries">Base configuration <code>:mixins</code> entries</h3>
4833
+ <div class="admonition note">
4834
+ <p class="admonition-title">Note</p>
4835
+ <p>Ceedling only recognizes a <code>:mixins</code> section in your base project
4836
+ configuration file. A <code>:mixins</code> section nested in a mixin is ignored.</p>
4837
+ </div>
4838
+ <p>The <code>:mixins</code> section of a base project configuration file is filtered
4839
+ out of the resulting merged configuration and will be absent in
4840
+ <code>ceedling dumpconfig</code> output.</p>
4841
+ <p>The <code>:mixins</code> configuration section can contain up to two subsections.
4842
+ Each subsection is optional.</p>
4843
+ <ul>
4844
+ <li>
4845
+ <p><code>:enabled</code></p>
4846
+ <p>An optional array comprising (A) mixin filenames/filepaths and/or
4847
+ (B) simple mixin names.</p>
4848
+ <ol>
4849
+ <li>A filename contains a file extension. A filepath includes a
4850
+ directory path. The file content is YAML.</li>
4851
+ <li>A simple name (no file extension and no path) is used
4852
+ as a file lookup among any configured load paths (see next
4853
+ section) and as a lookup name among Ceedling’s built-in mixins
4854
+ (currently none).</li>
4855
+ </ol>
4856
+ <p>Enabled entries support <a href="project-file.html#inline-ruby-string-expansion">inline Ruby string expansion</a>.</p>
4857
+ <p><strong>Default</strong>: <code>[]</code></p>
4858
+ </li>
4859
+ <li>
4860
+ <p><code>:load_paths</code></p>
4861
+ <p>Paths containing mixin files to be searched via mixin names. A mixin
4862
+ filename in a load path has the form <em><name>.yml</em> by default. If
4863
+ an alternate filename extension has been specified in your project
4864
+ configuration (<code>:extension</code> ↳ <code>:yaml</code>) it will be used for file
4865
+ lookups in the mixin load paths instead of <em>.yml</em>.</p>
4866
+ <p>Searches start in the path at the top of the list.</p>
4867
+ <p>Both mixin names in the <code>:enabled</code> list (above) and on the command
4868
+ line via <code>--mixin</code> flag use this list of load paths for searches.</p>
4869
+ <p>If a mixin name is not found in any user-configured load path,
4870
+ Ceedling automatically searches two additional locations in order:</p>
4871
+ <ol>
4872
+ <li><strong>Project directory</strong> — the directory containing your base project
4873
+ configuration file. This lets you drop a YAML file alongside
4874
+ <em>project.yml</em> and reference it by name with no extra configuration.</li>
4875
+ <li><strong>Built-in toolchain targets</strong> — Ceedling's bundled Unity <code>targets/</code>
4876
+ folder. See <a href="#built-in-toolchain-targets">Built-in toolchain targets</a>.</li>
4877
+ </ol>
4878
+ <p>User-configured load paths always take priority over these fallbacks.
4879
+ The project directory takes priority over the built-in targets.</p>
4880
+ <p>Load paths entries support <a href="project-file.html#inline-ruby-string-expansion">inline Ruby string expansion</a>.</p>
4881
+ <p><strong>Default</strong>: <code>[]</code></p>
4882
+ </li>
4883
+ </ul>
4884
+ <p>Example <code>:mixins</code> YAML blurb:</p>
4885
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="nt">:mixins</span><span class="p">:</span>
4886
+ <a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span>
4887
+ <a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">foo</span><span class="w"> </span><span class="c1"># Search for foo.yml in proj/mixins &amp; support/ and &#39;foo&#39; among built-in mixins</span>
4888
+ <a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">path/bar.yaml</span><span class="w"> </span><span class="c1"># Merge this file with base project conig</span>
4889
+ <a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a><span class="w"> </span><span class="nt">:load_paths</span><span class="p">:</span>
4890
+ <a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">proj/mixins</span>
4891
+ <a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">support</span>
4892
+ </code></pre></div>
4893
+ <p>Relating the above example to command line <code>--mixin</code> flag handling:</p>
4894
+ <ul>
4895
+ <li>A command line flag of <code>--mixin=foo</code> is equivalent to the <code>foo</code>
4896
+ entry in the <code>:enabled</code> mixin configuration.</li>
4897
+ <li>A command line flag of <code>--mixin=path/bar.yaml</code> is equivalent to the
4898
+ <code>path/bar.yaml</code> entry in the <code>:enabled</code> mixin configuration.</li>
4899
+ <li>Note that while command line <code>--mixin</code> flags work identically to
4900
+ entries in <code>:mixins</code> ↳ <code>:enabled</code>, they are merged <strong>last</strong> and therefore
4901
+ have the highest priority. The <code>:enabled</code> list is merged <strong>first</strong> (because
4902
+ it resides in the base configuration and has the lowest priority).</li>
4903
+ </ul>
4904
+ <h2 id="built-in-toolchain-targets">Built-in toolchain targets</h2>
4905
+ <p>Ceedling bundles a set of ready-made toolchain target mixins sourced from
4906
+ Unity's <code>targets/</code> folder. Each file configures the compiler, linker,
4907
+ output extensions, and Unity-specific compilation symbols for a particular
4908
+ toolchain or target environment.</p>
4909
+ <p>Because the Unity targets folder is a default mixin load path (searched
4910
+ after the project directory), you can activate any of these by name
4911
+ alone — no <code>:load_paths</code> configuration required:</p>
4912
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>ceedling<span class="w"> </span>build<span class="w"> </span>test:all<span class="w"> </span>--mixin<span class="w"> </span>clang
4913
+ </code></pre></div>
4914
+ <p>Or via the project configuration:</p>
4915
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="nt">:mixins</span><span class="p">:</span>
4916
+ <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span>
4917
+ <a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">clang</span>
4918
+ </code></pre></div>
4919
+ <h3 id="available-built-in-targets">Available built-in targets</h3>
4920
+ <table>
4921
+ <thead>
4922
+ <tr>
4923
+ <th>Mixin name</th>
4924
+ <th>Toolchain / target</th>
4925
+ </tr>
4926
+ </thead>
4927
+ <tbody>
4928
+ <tr>
4929
+ <td><code>clang</code></td>
4930
+ <td>Clang local host configuration with common warnings and errors enabled</td>
4931
+ </tr>
4932
+ <tr>
4933
+ <td><code>gcc</code></td>
4934
+ <td>GCC local host configuration with common warnings and errors enabled</td>
4935
+ </tr>
4936
+ <tr>
4937
+ <td><code>hitech_picc18</code></td>
4938
+ <td>HI-TECH PICC-18 (PIC18)</td>
4939
+ </tr>
4940
+ <tr>
4941
+ <td><code>iar_arm</code></td>
4942
+ <td>IAR ARM configuration that likely requires customization for your target</td>
4943
+ </tr>
4944
+ </tbody>
4945
+ </table>
4946
+ <h3 id="using-a-built-in-target-as-a-starting-point">Using a built-in target as a starting point</h3>
4947
+ <p>A built-in target mixin sets only the toolchain-specific knobs. Your
4948
+ project configuration (or other mixins) supplies everything else —
4949
+ source paths, plugins, test file patterns, and so on. This means you
4950
+ can use a built-in target as a drop-in starting point and layer your
4951
+ own settings on top without duplicating the full tool configuration.</p>
4952
+ <p>For example, a minimal project targeting a GCC host build might
4953
+ look like:</p>
4954
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="c1"># project.yml</span>
4955
+ <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="nt">:project</span><span class="p">:</span>
4956
+ <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a><span class="w"> </span><span class="nt">:build_root</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">build/</span>
4957
+ <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>
4958
+ <a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a><span class="nt">:paths</span><span class="p">:</span>
4959
+ <a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a><span class="w"> </span><span class="nt">:test</span><span class="p">:</span>
4960
+ <a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test/**</span>
4961
+ <a id="__codelineno-12-8" name="__codelineno-12-8" href="#__codelineno-12-8"></a><span class="w"> </span><span class="nt">:source</span><span class="p">:</span>
4962
+ <a id="__codelineno-12-9" name="__codelineno-12-9" href="#__codelineno-12-9"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">src/**</span>
4963
+ <a id="__codelineno-12-10" name="__codelineno-12-10" href="#__codelineno-12-10"></a>
4964
+ <a id="__codelineno-12-11" name="__codelineno-12-11" href="#__codelineno-12-11"></a><span class="nt">:plugins</span><span class="p">:</span>
4965
+ <a id="__codelineno-12-12" name="__codelineno-12-12" href="#__codelineno-12-12"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span>
4966
+ <a id="__codelineno-12-13" name="__codelineno-12-13" href="#__codelineno-12-13"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">report_tests_pretty_stdout</span>
4967
+ <a id="__codelineno-12-14" name="__codelineno-12-14" href="#__codelineno-12-14"></a>
4968
+ <a id="__codelineno-12-15" name="__codelineno-12-15" href="#__codelineno-12-15"></a><span class="nt">:mixins</span><span class="p">:</span>
4969
+ <a id="__codelineno-12-16" name="__codelineno-12-16" href="#__codelineno-12-16"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span>
4970
+ <a id="__codelineno-12-17" name="__codelineno-12-17" href="#__codelineno-12-17"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gcc</span><span class="w"> </span><span class="c1"># Pulls in compiler, linker, and Unity symbol config for GCC</span>
4971
+ </code></pre></div>
4972
+ <p>If your project needs a tweak — say, an extra compiler flag or a different
4973
+ optimization level — merge an additional mixin after the built-in target:</p>
4974
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>ceedling<span class="w"> </span>build<span class="w"> </span>test:all<span class="w"> </span>--mixin<span class="w"> </span>clang<span class="w"> </span>--mixin<span class="w"> </span><span class="s2">&quot;=tools: {test_compiler: {arguments: [&#39;-O0&#39;]}}&quot;</span>
4975
+ </code></pre></div>
4976
+ <p>Because command line mixins are merged last, the extra argument is appended
4977
+ after the built-in target's argument list and takes effect.</p>
4978
+ <div class="admonition tip">
4979
+ <p class="admonition-title">Override a built-in target for a single project</p>
4980
+ <p>Drop a YAML file with the same name as a built-in target (e.g.
4981
+ <code>gcc.yml</code>) into your project directory. Ceedling searches the
4982
+ project directory before the built-in targets folder, so your local
4983
+ file silently takes precedence — no <code>:load_paths</code> entry required.</p>
4984
+ </div>
4985
+ <p><br/><br/></p>
4986
+
4987
+
4988
+
4989
+
4990
+
4991
+
4992
+
4993
+
4994
+
4995
+
4996
+
4997
+
4998
+
4999
+ </article>
5000
+ </div>
5001
+
5002
+
5003
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
5004
+ </div>
5005
+
5006
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
5007
+
5008
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
5009
+ Back to top
5010
+ </button>
5011
+
5012
+ </main>
5013
+
5014
+ <footer class="md-footer">
5015
+
5016
+ <div class="md-footer-meta md-typeset">
5017
+ <div class="md-footer-meta__inner md-grid">
5018
+ <div class="md-copyright">
5019
+
5020
+ <div class="md-copyright__highlight">
5021
+ &copy; 2010-2026 M. Karlesky, M. VanderVoord, and G. Williams &mdash; Documentation license: <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0</a>
5022
+ </div>
5023
+
5024
+
5025
+ </div>
5026
+
5027
+
5028
+ <div class="md-social">
5029
+
5030
+
5031
+
5032
+
5033
+
5034
+ <a href="https://github.com/sponsors/ThrowTheSwitch" target="_blank" rel="noopener" title="Sponsor ThrowTheSwitch on GitHub" class="md-social__link">
5035
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
5036
+ </a>
5037
+
5038
+ </div>
5039
+
5040
+ </div>
5041
+ </div>
5042
+ </footer>
5043
+
5044
+ </div>
5045
+ <div class="md-dialog" data-md-component="dialog">
5046
+ <div class="md-dialog__inner md-typeset"></div>
5047
+ </div>
5048
+
5049
+
5050
+
5051
+
5052
+
5053
+ <script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "navigation.indexes", "navigation.path", "search.suggest", "search.highlight", "content.code.copy", "content.code.annotate"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script>
5054
+
5055
+
5056
+ <script src="../assets/javascripts/bundle.79ae519e.min.js"></script>
5057
+
5058
+
5059
+ </body>
5060
+ </html>